Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:0
Поисковых ботовПоисковых ботов:2
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:3
Форум » starterkit.ru » Отладочные платы » SK-MAT91SAM9XXXXX
About U-boot (mmc,usb) (9260)
Kuzemko
Добавлено 18.03.2010 21:54 Сообщение: 11
Kuzemko
0

Пункты: 370
Регистрация: 26.09.2009
Пол: Мужчина
Вы не поняли вопрос. (Я наверное некоректно поставил его)
На плате уже есть U-boot, для отладки другой версии мы ее запускаем в память. Вопрос был в том, где менять TEXT_BASE в том что уже прошит на плату, или втом который мы отлаживаем?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 18.03.2010 22:46 Сообщение: 12
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Вы не поняли вопрос. (Я наверное некоректно поставил его)
На плате уже есть U-boot, для отладки другой версии мы ее запускаем в память. Вопрос был в том, где менять TEXT_BASE в том что уже прошит на плату, или втом который мы отлаживаем?

а-а-а.. разумеется в сорцах той версии, которую хочется запустить из под штатного..
т.е. на плате уже есть юбут, который умеет по сетке грузить в РАМ. берем или его же сорцы (желательно сделать копию) или новые, правим тот файл, компилируем и tftpboot тот бинарник в РАМ
прошитый юбут выступает в роли загрузочного инструмента

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 19.03.2010 15:08 Редактировалось 20.03.2010 15:41 Сообщение: 13
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Diclaimer (отмазка) - все что изложено ниже может использоваться по своему усмотрению
на свой страх и риск. Автор ни несет никакой ответственности ни за что, включая упущенную
выгоду от чего-либо. Лопата! :)

*********************************************************************
отталкивался отсюда - раздел U-boot
линк
---------------------------------------------------------------------
распаковал тулчейн arm-2009q3-68-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
в /usr/local/arm/newarm
---------------------------------------------------------------------
распаковал исходники u-boot-1.3.4
наложил патч u-boot-1.3.4-exp.3.diff

в Makefile около 144 строки поменять имя тулчейна
Код
ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-none-eabi-
endif


создал скрипт сборки в корне u-boot-1.3.4/make_new с содержимым
Код
#!/bin/sh
export PATH=/usr/local/arm/newarm/bin:${PATH}
make at91sam9260ek_dataflash_cs0_config
make ARCH=arm CROSS_COMPILE=arm-none-eabi-
cp u-boot.bin /tftpboot/u-boot.bin


в файле u-boot-1.3.4/lib_arm/board.c
закомментарил строки 138, 140, 142, 144, 146, 148, 150

в файле u-boot-1.3.4/common/main.c
замена в строке 51
Код
//void inline show_boot_progress (int val) __attribute__((weak, alias("__show_boot_progress")));
void inline show_boot_progress (int val) {}

выполнить
./make_new
после этого происходит успешная сборка и генерится бинарник
u-boot.bin размером 156952 (размер может менятся)
=====================================================================
внедряю поддержку sd/mmc
в файле /board/atmel/at91sam9260ek/at91sam9260ek.c
например между инитом сериал и нанда вписывается функция
Код
#ifdef CONFIG_MMC
static void at91sam9260ek_mmc_hw_init(void)
{
/* CLK */
at91_set_A_periph(AT91_PIN_PA8, 0);
/* CMD */
at91_set_A_periph(AT91_PIN_PA7, 1);
/* DAT0, maybe DAT1..DAT3 */
at91_set_A_periph(AT91_PIN_PA6, 1);
at91_set_A_periph(AT91_PIN_PA9, 1);
at91_set_A_periph(AT91_PIN_PA10, 1);
at91_set_A_periph(AT91_PIN_PA11, 1);
at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_MCI);
}
#endif

ниже в функции board_init() добавил
Код
#ifdef CONFIG_MMC
at91sam9260ek_mmc_hw_init();
#endif

---------------------------------------------------------------------
скопировал файл
cp include/asm-avr32/arch-at32ap700x/mmc.h include/asm-arm/arch-at91sam9/
---------------------------------------------------------------------
в файле /include/configs/at91sam9260ek.h
поменял (часть настроек взял у Павла)
Код
#define AT91_MAIN_CLOCK 200000000 /* from 18.432 MHz crystal */
#define AT91_MASTER_CLOCK 100000000 /* peripheral = main / 2 */

дописал
Код
#define CONFIG_CMD_EXT2
#define CONFIG_CMD_FAT
#define CONFIG_CMD_MMC
#define CONFIG_MMC 1
#define CONFIG_ATMEL_MCI 1

отключил
Код
//#define CONFIG_SKIP_RELOCATE_UBOOT

самый "неприятный" момент править тут:
Код
#ifdef CFG_USE_DATAFLASH_CS0

#define CONFIG_BOOTCOMMAND "run boot_df"
#define CONFIG_EXTRA_ENV_SETTINGS \
"tftp_update=tftpboot 20400000 zlinux; cp.b 20400000 c0038000 170000; tftpboot 20400000 rootfs; \
cp.b 20400000 c01a8000 277fff\0" \
"tftp_boot=tftpboot 20400000 zlinux; tftpboot 21100000 rootfs; bootm 20400000\0" \
"boot_df=cp.b c0038000 20400000 170000; cp.b c01a8000 21100000 277fff; bootm 20400000\0" \
"ipaddr=192.168.0.136\0" \
"netmask=255.255.255.0\0" \
"ethaddr=00:1f:f2:00:00:00\0" \
"serverip=192.168.0.2\0"
/* bootstrap + u-boot + env + linux in dataflash on CS0 */
#define CFG_ENV_IS_IN_DATAFLASH 1
#define CFG_MONITOR_BASE (CFG_DATAFLASH_LOGIC_ADDR_CS0 + 0x8400)
//jury
//#define CFG_ENV_OFFSET 0x4200
#define CFG_ENV_OFFSET 0x4000
//pi#define CFG_ENV_ADDR (CFG_DATAFLASH_LOGIC_ADDR_CS1 + CFG_ENV_OFFSET)
#define CFG_ENV_ADDR (CFG_DATAFLASH_LOGIC_ADDR_CS0 + CFG_ENV_OFFSET)
//#define CFG_ENV_ADDR (CFG_DATAFLASH_LOGIC_ADDR_CS0 + CFG_ENV_OFFSET)
//jury
//#define CFG_ENV_SIZE 0x4200
#define CFG_ENV_SIZE 0x4000
//jury
//#define CONFIG_BOOTCOMMAND "cp.b 0xC0042000 0x22000000 0x210000; bootm"
//#define CONFIG_BOOTARGS "console=ttyS0,115200 " \
// "root=/dev/mtdblock0 " \
// "mtdparts=at91_nand:-(root) " \
// "rw rootfstype=jffs2"
#elif CFG_USE_DATAFLASH_CS1

---------------------------------------------------------------------
в файле include/asm-arm/arch-at91sam9/memory-map.h
дописал
Код
#define MMCI_BASE AT91_BASE_MCI

---------------------------------------------------------------------
в файле include/asm-arm/arch-at91sam9/clk.h
дописал
Код
static inline unsigned long get_mci_clk_rate(void)
{
return AT91_MASTER_CLOCK;
}

---------------------------------------------------------------------
в файле include/asm-arm/arch-at91sam9/hardware.h
после строки
Код
#include <asm/arch/at91sam9260.h>

дописал
Код
#define AT91_BASE_MCI AT91SAM9260_BASE_MCI

---------------------------------------------------------------------
в файле drivers/mmc/atmel_mci.c
в строку 510 вписывается "костыль"
Код
csd.read_bl_len++;

---------------------------------------------------------------------
в файле cpu/arm926ejs/at91sam9/ether.c
было
Код
macb_eth_initialize(0, (void *)AT91_BASE_EMAC, 0x00);

стало
Код
macb_eth_initialize(0, (void *)AT91_BASE_EMAC, 0x01);

---------------------------------------------------------------------
выполнить
./make_new
после этого происходит успешная сборка и генерится бинарник
u-boot.bin размером 174704 (размер может менятся)
=====================================================================
Итоги: все вышеописанное бегло протестировано на плате SK-MAT91SAM9260,
но на борту 64МБ sdram, 256МБ nand
- загрузка по сети - успешна
- загрузка с SD/MMC - успешна (SD256MB, SD2GB)
- загрузка с USB Flash - успешна (Transcend - 256MB, 4GB)
- загрузка с USB IDE - успешна (HDD 40GB)
явные косяки
- загрузка с USB Reader с CompactFlash - timeout
- возможны _любые_ глюки с переменными окружения U-boot
- mmcinit - врет в структуре CSD размер накопителя и прочее
непонятные косяки
- чего-то не хватает для ext2ls mmc 0 - молча глотает (SD размечена в EXT2)

ps1 в теории, мог что-нить пропустить, хотя раза три прогонял все вышеописанное с чистого листа
ps2 diff делать не стал ибо не умею и не хочу уметь :)
ps3 чуть позже выложу готовый бинарник, архив модифицированных файлов, архив всей сборки
ps4 буду рад дельным комментариям, предложениям, замечаниям

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 19.03.2010 16:00 Редактировалось 19.03.2010 16:08 Сообщение: 14
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
вот чисто на тестирование бинарник - залил на Dataflash по адресу 0x8000
версия на 64МБ, Dataflash, arm9260
пробная версия

версия на 32МБ, Dataflash, arm9260
пробная версия

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 23.03.2010 11:45 Редактировалось 23.03.2010 23:22 Сообщение: 15
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
хм.. выкладываю обещанные остальные части - ничего с прошлого раза не менял..
сборник модифицированных и созданных файлов (тем, кому лень править исходники)
айн ~50KB
полный архив созданный из модифицированного исходника u-boot_1.3.4
цвай ~12MB

напоминаю, что протестировано на Dataflash, 64МБ SDRAM - для 32МБ надо поправить на свой размер памяти в хидере конфига и разумеется пересобрать :)

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 27.03.2010 11:52 Сообщение: 16
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
хех, похоже тема оказалась неинтересная или никто не отважился попробовать :)
по мере сил буду сам ковырять..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 27.03.2010 12:36 Редактировалось 27.03.2010 12:37 Сообщение: 17
sasamy
4.70

Пункты: 77067
Регистрация: 14.08.2009
Цитата

ps2 diff делать не стал ибо не умею и не хочу уметь :)


#diff -Naur имя_директории_с_оригиналом_исходников имя_директории_с_правленными_исходниками > имя_патча.patch

Очень сложно :)
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 27.03.2010 13:01 Редактировалось 27.03.2010 13:02 Сообщение: 18
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Саш, ну не люблю я эту глючную систему. Сколько раз пытался всякие патчи пристраивать, каждый раз какая-нить хрень вылезала..
и что, например, вот с этим делать? - тулчейны могут быть разные:
Цитата
в Makefile около 144 строки поменять имя тулчейна

ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-none-eabi-
endif

зы ближе к вечеру попробую сплодить патч - дело новое, не особо интересное :)

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 27.03.2010 15:22 Сообщение: 19
sasamy
4.70

Пункты: 77067
Регистрация: 14.08.2009
Цитата
что, например, вот с этим делать? - тулчейны могут быть разные:


Ничего не делать... префикс кросскомпилятора задается в u-boot через параметр:
make CROSS_COMPILE=<path_to_cross-compiler/cross-compiler-prefix->

Цитата
дело новое, не особо интересное


дело не в интересе - без патчей вносить изменения и делать их публично доступными просто нереально.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 28.03.2010 00:14 Сообщение: 20
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
долго пыхтел, сопел, сплодил вот такую корявскую версию "патча" :)
лежит тут весит 31кб
как ставить:
- кросскомпиллер поставил вышеописанный
- с denx.de взять u-boot-1.3.4 распаковать
- в корень каталога u-boot-1.3.4 распаковать этот патч
- пропатчить cat имя-патча | patch -p1
- установить права на запуск скриптам make_bin make_config - хрен знает как это в патче сделать
- запустить ./make_config
- запустить ./make_bin
- бинарник (у меня 174704b) прошить самбой в датафлеш по адресу 0x8000
вот так примерно должно выглядеть:
Код
RomBOOT

>Start AT91Bootstrap...

Copy application ...

Run ...



U-Boot 1.3.4 (Mar 27 2010 - 23:19:30)

DRAM: 64 MB
NAND: 256 MiB
DataFlash:AT45DB321
Nb pages: 8192
Page Size: 528
Size= 4325376 bytes
Logical address: 0xC0000000
Area 0: C0000000 to C00041FF (RO) Bootstrap
Area 1: C0004200 to C00083FF Environment
Area 2: C0008400 to C0041FFF (RO) U-Boot
Area 3: C0042000 to C0251FFF Kernel
Area 4: C0252000 to C041FFFF FS
In: serial
Out: serial
Err: serial
Net: macb0
macb0: link up, 100Mbps full-duplex (lpa: 0x45e1)
Hit any key to stop autoboot: 0
U-Boot> usb start

(Re)start USB...
USB: scanning bus for devices... 3 USB Device(s) found
scanning bus for storage devices... 1 Storage Device(s) found
U-Boot> fatls usb 0

system volume information/
2411233 zlinux.64m.mmc
2411239 zlinux.64m.uba1
2411238 zlinux.64m.uba2
2411239 zlinux.64m.uba3
2411238 zlinux

5 file(s), 1 dir(s)

U-Boot> mmcinit

mmc: init start
mmc: clock 150000 too low; setting CLKDIV to 255
Manufacturer ID: 1B
OEM/Application ID: 534D
Product name: SDC
Product Revision: 1.0
Product Serial Number: 12673113
Manufacturing Date: 09/01
SD Card detected (RCA 45928)
CSD data: 002f0032 5f5a83b7 6db7ffbf 968000e9
CSD structure version: 1.2
MMC System Spec version: 12
Card command classes: 3b7
Read block length: 256
Does not support partial reads
Write block length: 8
Does not support partial writes
Supports group WP: 14
Card capacity: 452722688 bytes
File format: 0/0
Write protection:
mmc: Using 524288 cycles data timeout (DTOR=0x68)
.U-Boot> fatls mmc 0

................................... dcim/
1627864 zlinux

1 file(s), 1 dir(s)

U-Boot> fatload mmc 0 20400000 zlinux

..reading zlinux
...................................
1627864 bytes read
U-Boot> bootm 20400000

## Booting kernel from Legacy Image at 20400000 ...
Image Name: Linux Kernel Image
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 1627800 Bytes = 1.6 MB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK

Starting kernel ...

Linux version 2.6.32.8 (root@debarm) (gcc version 3.4.1) #140 Thu Mar 11 20:48:13 MSK 2010
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: Atmel AT91SAM9260-EK
Memory policy: ECC disabled, Data cache writeback
Clocks: CPU 200 MHz, master 100 MHz, main 12.000 MHz
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16240
Kernel command line: mem=64M console=ttyS0,115200 rw root=/dev/sda2 rootdelay=12

bla-bla-bla.. xren` poskipana

Debian GNU/Linux 5.0 armets ttyS0
armets login:

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-MAT91SAM9XXXXX