Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT91RM9200 - мистика? SPI? или romboot.bin?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2, 3
Lelick
проверь в rm9200.h значения master_clock и main_clock на сooтветствие настройкам plla в bootloader + проверь в rm9200.h значение brgr_divisor делителя dbgu порта на соответствие master_clock
PrSt
Цитата(Lelick @ Jan 18 2007, 11:36) *
проверь в rm9200.h значения master_clock и main_clock на сooтветствие настройкам plla в bootloader + проверь в rm9200.h значение brgr_divisor делителя dbgu порта на соответствие master_clock

вроде все одинаково

я тут вот на что натолкнулся, похоже что U-boot не умеет вообще грузиться с последовательно flash а только с параллельной... если верить содержимому файла
/usr/local/arm9/src/u-boot-1.1.6/board/at91rm9200dk/flash.c

а с другой стороны в
/usr/local/arm9/src/u-boot-1.1.6/board/at91rm9200dk/at45.c
инициализация SPI и т д (такие жу куски кода как и в изходнике от romboot)

и вот теперь вопрос - с какой он флешки всеже грузится? и где это можно указать?

+ ко всему еще вот на что наткнулся

на терминале наблюдаю следующее
AT91F_LowLevelInit(): Debug channel initialized
press any key to enter bootloader
Load U-BOOT from dataflash[c0008000] to SDRAM[20f00000]
Set PLLA to 180Mhz and Master clock to 45Mhz and start U-BOOT
AT91F_ResetRegisters

если смотреть на исходный код от romboot, то видим следующее...

void AT91F_StartUboot(unsigned int dummy, void *pvoid)
{
printf("Load U-BOOT from dataflash[%x] to SDRAM[%x]\n\r", AT91C_UBOOT_DATAFLASH_ADDR, AT91C_UBOOT_ADDR);
read_dataflash(AT91C_UBOOT_DATAFLASH_ADDR, AT91C_UBOOT_SIZE, (char *)(AT91C_UBOOT_ADDR));
printf("Set PLLA to 180Mhz and Master clock to 45Mhz and start U-BOOT\n\r");
//* Reset registers
AT91F_ResetRegisters();
printf("Jump(AT91C_UBOOT_ADDR)\n\r");
Jump(AT91C_UBOOT_ADDR);
printf("Jump(AT91C_UBOOT_ADDR) - DONE \n\r");
while(1);
}



//*--------------------------------------------------------------------------------------
//* Function Name : AT91F_ResetRegisters
//* Object : Restore the initial state to registers
//* Input Parameters :
//* Output Parameters :
//*--------------------------------------------------------------------------------------
static void AT91F_ResetRegisters(void)
{
volatile int i = 0;

printf("AT91F_ResetRegisters\n\r");

//* set the PIOs in input
*AT91C_PIOA_ODR = 0xFFFFFFFF; /* Disables all the output pins */
*AT91C_PIOA_PER = 0xFFFFFFFF; /* Enables the PIO to control all the pins */

printf("1 \n\r");
AT91F_AIC_DisableIt (AT91C_BASE_AIC, AT91C_ID_SYS);

printf("2 \n\r");
/* close all peripheral clocks */
AT91C_BASE_PMC->PMC_PCDR = 0xFFFFFFFC;

printf("3 \n\r");
//* Disable core interrupts and set supervisor mode
__asm__ ("msr CPSR_c, #0xDF"); //* ARM_MODE_SYS(0x1F) | I_BIT(0x80) | F_BIT(0x40)

printf("4 \n\r");
//* Clear all the interrupts
*AT91C_AIC_ICCR = 0xffffffff;

/* read the AIC_IVR and AIC_FVR */
i = *AT91C_AIC_IVR;
i = *AT91C_AIC_FVR;

printf("5 \n\r");
/* write the end of interrupt control register */
*AT91C_AIC_EOICR = 0;

AT91F_SetPLL();
printf("AT91F_ResetRegisters - DONE \n\r");
}



и вопросик теперь что тут предпологается ?
делается ведь тупое
//* set the PIOs in input
*AT91C_PIOA_ODR = 0xFFFFFFFF; /* Disables all the output pins */
*AT91C_PIOA_PER = 0xFFFFFFFF; /* Enables the PIO to control all the pins */

так что неудивительно что что прекращяется вывод...
но по ходу тут прекращяется все!

или ни кто так глубоко ни когда не лез?
vanokuten
если используется romboot.bin и uboot загрузка из dataflash то должен быть define
#define CONFIG_SKIP_LOWLEVEL_INIT
иначе uboot будет виснуть

Embedded Linux Engineer
Promwad Company



>а с другой стороны в
>/usr/local/arm9/src/u-boot-1.1.6/board/at91rm9200dk/at45.c
>инициализация SPI и т д (такие жу куски кода как и в изходнике от romboot)
>
>и вот теперь вопрос - с какой он флешки всеже грузится? и где это можно указать?

romboot.bin грузит из dataflash u-boot в SDRAM и передает управление uboot
PrSt
Цитата(vanokuten @ Jan 18 2007, 21:16) *
если используется romboot.bin и uboot загрузка из dataflash то должен быть define
#define CONFIG_SKIP_LOWLEVEL_INIT
иначе uboot будет виснуть

в томто и дело - версия u-boot-1.1.6 и u-boot-1.2.0 виснет...
версию u-boot-1.1.1 чуть пропатчил, вставил драйвер lxt-972, но с этимдрайвером оно только посылает в сеть ARP, а пинговать не получается...
такое впечатление что не верно инициализировалась... или еще чтото...
по этой теме - я тут http://electronix.ru/forum/index.php?showtopic=26464 вопрос задавал уже , но ни кто не ответил досе...

может все же ктото с таким сталкивался?
COMA
Помочь не чем sad.gif

У меня все заработало с полпинка по этому руководству -
http://www.heavy-online.ru/arm-linux/
PrSt
Цитата(COMA @ Feb 1 2007, 07:59) *
Помочь не чем sad.gif

У меня все заработало с полпинка по этому руководству -
http://www.heavy-online.ru/arm-linux/

дык по этой же статье и делаю...

ну хоть за попытку, и то всем спасибо большое!

кстати, поднял это дело...
- запинговалось, tftp поднял...
пробую идти дальше...
PrSt
Цитата(PrSt @ Feb 1 2007, 10:42) *
пробую идти дальше...


пытаюсь загрузить линуксовое ядро, то что с сайта heavy-online....
и вот наткнулся на следующее не совсем понятное поведение...

AT91RM9200 > bootm
## Booting image at 20800000 ...
Image Name:
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 1124113 Bytes = 1.1 MB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK

Starting kernel ...


и стоит тут (затрял), что это может быть за ерунда?

иду дальше, пересобрал ядро
пробую стартануть и вот что получаю
Starting kernel ...

Error: unrecognized/unsupported machine ID (r1 = 0x000000fb).

Available machine support:

ID (hex) NAME
00000106 uCrouter EVM9200

Please check your kernel config and/or bootloader


корень вопроса...
у меня в U-Boot - CFG_PROMPT объявлен как "AT91RM9200_board# "
кокое в ядре нада правильно имя указать?
"AT91RM9200_board# " ?
или
"AT91RM9200_board" ?

или речь идет о чем-то ином...?
vanokuten
Цитата(PrSt @ Feb 6 2007, 12:03) *
Цитата(PrSt @ Feb 1 2007, 10:42) *

пробую идти дальше...


пытаюсь загрузить линуксовое ядро, то что с сайта heavy-online....
и вот наткнулся на следующее не совсем понятное поведение...

AT91RM9200 > bootm
## Booting image at 20800000 ...
Image Name:
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 1124113 Bytes = 1.1 MB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK

Starting kernel ...


и стоит тут (затрял), что это может быть за ерунда?

иду дальше, пересобрал ядро
пробую стартануть и вот что получаю
Starting kernel ...

Error: unrecognized/unsupported machine ID (r1 = 0x000000fb).

Available machine support:

ID (hex) NAME
00000106 uCrouter EVM9200

Please check your kernel config and/or bootloader


корень вопроса...
у меня в U-Boot - CFG_PROMPT объявлен как "AT91RM9200_board# "
кокое в ядре нада правильно имя указать?
"AT91RM9200_board# " ?
или
"AT91RM9200_board" ?

или речь идет о чем-то ином...?



Речь идет об ином а именно об соответствии machine ID между uboot и linux kernel
см
linux-source/arch/arm/tools/mach-types

а также

u-boot-source/include/asm-arm/mach-types.h
PrSt
Цитата(vanokuten @ Feb 7 2007, 12:04) *
Цитата(PrSt @ Feb 6 2007, 12:03) *

Цитата(PrSt @ Feb 1 2007, 10:42) *

пробую идти дальше...

пытаюсь загрузить линуксовое ядро, то что с сайта heavy-online....
и вот наткнулся на следующее не совсем понятное поведение...
AT91RM9200 > bootm
## Booting image at 20800000 ...
Image Name:
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 1124113 Bytes = 1.1 MB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK

Starting kernel ...


и стоит тут (затрял), что это может быть за ерунда?

Речь идет об ином а именно об соответствии machine ID между uboot и linux kernel
см
linux-source/arch/arm/tools/mach-types
а также
u-boot-source/include/asm-arm/mach-types.h

не получается дальше чем Starting kernel ...
Ну неужели ни у кого не было такой проблеммы?
уже пол ядра перерыл - не могу найти в чем проблемма....

ядро 2.6.16 с патчами на AT91RM9200 кроме DS1307, но он щяс ни не нужен....
пробовал также собранное ядро с сайта heavy-online, такое же самое поведение...
или ядро не стартует(что маловероятно)
или оно данные выводит не на DBGU а куда в иное место
или еще чтото - не знаю и проверить не знаю как...
...Вариации разные испробовал...

проясните плиз, кто нибудь - что происходит или что не так?
?
vanokuten
С каким bootargs запускаемся ?
Поставь пару printk чтобы посмотреть где останавливается

Судя по тому что ты таки исправил ошибку machine ID кернел у тебя таки грузится
PrSt
Цитата(vanokuten @ Feb 12 2007, 12:36) *
С каким bootargs запускаемся ?
Поставь пару printk чтобы посмотреть где останавливается
Судя по тому что ты таки исправил ошибку machine ID кернел у тебя таки грузится


я вот тоже неделю или больше об этом подозреваю что грузится но выводит не туда....
но проверить это так и не удалось

вот bootargs виден с скрина

Area 3: C0028000 to C083FFFF
*** Warning - bad CRC, using default environment

In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
AT91RM9200_board$ printenv
bootargs=root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M
bootcmd=cp.b C002A000 20A00000 200000; bootm 20A00000
bootdelay=4
baudrate=115200
ethaddr=11:11:11:11:11:11
ipaddr=192.168.1.123
serverip=192.168.1.1
netmask=255.255.255.0
bootfile="uImage"
stdin=serial
stdout=serial
stderr=serial

Environment size: 331/8188 bytes
AT91RM9200_board$

вот он
bootargs=root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M

в параметрах "Boot options" кернела сказано
cat .config |grep CMDLINE
CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x20410000,3145728 root=/dev/ram0 rw"
CONFIG_MTD_CMDLINE_PARTS=y
пробовал ttyS4 - (как DBGU) - ни чего не менялось...


был кернель 2.6.16

намекнули что может версия нета(но ведь у других же работает 2.6.16), после вопроса об этом на lists.arm.linux.org.uk... решил на 2.6.19 попробовать...
пропатчил патчем от maxim, собрал...
щяс уже воюю с 2.6.19 - все та же ерунда....

TFTP from server 192.168.1.1; our IP address is 192.168.1.123
Filename 'uImage'.
Load address: 0x20800000
Loading: T #################################################################
#################################################################
#######################################################
done
Bytes transferred = 942294 (e60d6 hex)
AT91RM9200_board$ bootm
## Booting image at 20800000 ...
Image Name:
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 942230 Bytes = 920.1 kB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK

Starting kernel ...

такое впечатление что кернель наботает но выводит инфо кудато в другое место...
как проверить даже не знаю...
разъем на плате лиш один и тот на DBGU, для перевода его в ttyS0 нада передергивать джампера, пробовал передергивать на ttyS0 во время загрузки кернеля, ни каких месаджей на нем небыло...

а результат все тот же...
Lelick
tftpboot 20007fc0 uImage;bootm 20007fc0
PrSt
Цитата(Lelick @ Feb 12 2007, 17:59) *
tftpboot 20007fc0 uImage;bootm 20007fc0


а 20007fc0 - это что за адрес?

AT91RM9200_board$ tftpboot 20007fc0
AT91C_BASE_SPI->SPI_SR = 100F2
AT91C_BASE_PMC->PMC_MCKR = 302
change on AT91C_BASE_PMC->PMC_MCKR =
TFTP from server 192.168.1.1; our IP address is 192.168.1.123
Filename 'uImage'.
Load address: 0x20007fc0
Loading: #################################################################
#################################################################
########################################################
done
Bytes transferred = 950008 (e7ef8 hex)
AT91RM9200_board$ bootm 20007fc0
Booting image at 20007fc0 ...
Image Name:
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 949944 Bytes = 927.7 kBSize: 942182 Bytes = 920.1 kB
Load Address: 20008000
Entry Point: 20008000
Load A
Verifying Checksum ... OK
Entry Point:
Uncompressing Kernel Image ... Error: inflate() returned -3
Verifying Checksum ... OK########0]b
GUNZIP ERROR - must RESET board to recoverÿ

и перезагружается...
я так понял из опыта что такое крайне редко и когда чтото вообще не верно узывается...
вероятно 20007fc0 не нравится
Lelick
эти адреса зависят от утилиты mkinitrd, которой нужно обработать собранный кернел; утилита находится в u-boot/tools, для файловой системой с рам диском его тоже нужно обработать этой утилитой;

"mem=16M console=ttyS0,115200 root=/dev/ram0 init=/linuxrc rw panic=10";

для старта системы c рамдиска использую "tftpboot 20007fc0 uuImage;tftpboot 20300000 ramdisk;bootm 20007fc0 20300000"; пользуюсь не зипованными ramdisk и кернел
vanokuten
а вообще включен в Linux kernel

CONFIG_SERIAL_AT91=y
CONFIG_SERIAL_AT91_CONSOLE=y

?
AlexMad
Цитата(nvn @ Jan 16 2007, 11:09) *
З.Ы.: да еще на AT45DB321 запись у romboot'а глючит

А поподробнее можно? а то у меня как раз 321-ая и есть проблемы, про которые я здесь хотел вычитать.
PrSt
Цитата(vanokuten @ Feb 13 2007, 10:37) *
а вообще включен в Linux kernel
CONFIG_SERIAL_AT91=y
CONFIG_SERIAL_AT91_CONSOLE=y
?

включено, вот

#
# Non-8250 serial port support
#
CONFIG_SERIAL_ATMEL=y
CONFIG_SERIAL_ATMEL_CONSOLE=y
CONFIG_SERIAL_ATMEL_TTYAT=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256


пробовал и с
CONFIG_SERIAL_ATMEL_TTYAT is not set

полностью конфиг тот что уже пересобранный раз 50, не получаетчя почему то прицепить ohmy.gif
прийдется по кускам показывать...



vanokuten
>bootargs=root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M
>bootcmd=cp.b C002A000 20A00000 200000; bootm 20A00000

А kernel который в dataflash он грузится? или вообще не грузится ни самосборный kernel ни тот что шел с платой?

Пропробуй грузить kernel адресу 0x20A00000 как у тебя в bootcmd указано
Также попробуй грузить командой не bootm а просто go
PrSt
Цитата(vanokuten @ Feb 14 2007, 00:47) *
>bootargs=root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M
>bootcmd=cp.b C002A000 20A00000 200000; bootm 20A00000

я вот щяс только заподозгил негаразд с вот этим - bootargs=root=/dev/ram, что то мне кажется что тут должно быть - bootargs "root=/dev/ram"
щяс буду пробовать еще так...

Цитата(vanokuten @ Feb 14 2007, 00:47) *
А kernel который в dataflash он грузится? или вообще не грузится ни самосборный kernel ни тот что шел с платой?

я делаю все как по статье - http://heavy-online.ru/arm-linux/
с платой ни чего не шло, это наша самодельная плата...
ядро пробовал разное грузить, и то что собрано под EVM9200 с сайта http://heavy-online.ru/arm-linux/ (версия 2.6.16 с патчами) и то что я сам кучу раз собрал(версия 2.6.16 с патчами и версия 2.6.19 с патчами, на последнем я остановился)...
может у кого-то есть возможность дать мне конфиг от кернела, свой что бы я мог сравнить его с моим конфигом (хотя я и у уверен что у меня поряк) ?
я гружу его по tftp в манять по адресу 20800000 и из памяти командой bootm его запускаю...
вобщемто все же видно по скринам которыя я выкладывал....

Цитата(vanokuten @ Feb 14 2007, 00:47) *
Пропробуй грузить kernel адресу 0x20A00000 как у тебя в bootcmd указано
Также попробуй грузить командой не bootm а просто go

я его(упакованный uImage) гружу по tftp по адрессу 0x20800000 ( или 0x20A00000)
щяс еще попробую не упакованный...
попробовал, вот что выдает на команду iminfo
## Checking Image at 20800000 ...
Bad Magic Number


...в статье сказано что именно упакованный надо грузить...
PrSt
Цитата(AlexMad @ Feb 13 2007, 20:57) *
Цитата(nvn @ Jan 16 2007, 11:09) *

З.Ы.: да еще на AT45DB321 запись у romboot'а глючит

А поподробнее можно? а то у меня как раз 321-ая и есть проблемы, про которые я здесь хотел вычитать.

а что за проблеммы у Вас с romboot?
AlexMad
Цитата(PrSt @ Feb 14 2007, 10:39) *
Цитата(AlexMad @ Feb 13 2007, 20:57) *
Цитата(nvn @ Jan 16 2007, 11:09) *

З.Ы.: да еще на AT45DB321 запись у romboot'а глючит

А поподробнее можно? а то у меня как раз 321-ая и есть проблемы, про которые я здесь хотел вычитать.

а что за проблеммы у Вас с romboot?

Сначала по Х-модему грузится, потом, как написано на http://heavy-online.ru/arm-linux/ гружу его же по адресу 0хС0000000, выдается


Modification of Arm Vector 6 :421a015
Write 10240 bytes in DataFlash [0xc0000000]
Verify Dataflash:
Failed
Hit a Key!

и можно все начинать сначала. Причем я уже и память и флешку тестировал, грешил на них, все тесты вроде проходят.
PrSt
Цитата(AlexMad @ Feb 14 2007, 09:54) *
Сначала по Х-модему грузится, потом, как написано на http://heavy-online.ru/arm-linux/ гружу его же по адресу 0хС0000000, выдается
Modification of Arm Vector 6 :421a015
Write 10240 bytes in DataFlash [0xc0000000]
Verify Dataflash:
Failed
Hit a Key!

и можно все начинать сначала. Причем я уже и память и флешку тестировал, грешил на них, все тесты вроде проходят.

могу сказать что мне пришлось изрядно перелокопатьти исходник от romboot что бы найти подобную проблему и устранить причину...
обратите внимание на ваш код возврата :421a015 и сравните его с датащитом на AT91RM9200 стр. 87,112 - там расписано что Вы должны получить для вашей AT45DB321 ...
кстати, в моем случае устранение проблеммы свелось к понижению скорости работы SPI в 32 раза в конфигурационном регистре(смотри в сторону - DIV32).
Рекомендую перечитать этот пост внимательно с начала... может это ваш случай?
PrSt
Цитата(vanokuten @ Feb 12 2007, 12:36) *
С каким bootargs запускаемся ?
Поставь пару printk чтобы посмотреть где останавливается
Судя по тому что ты таки исправил ошибку machine ID кернел у тебя таки грузится

честно говоря я уже и не уверен что грузится....
вот что нашел в исходнике от u-boot-1.1.6

u-boot-1.1.6-worked-070209/cpu/arm920t/at91rm9200/armlinux.c :258
...
/* we assume that the kernel is in place */
printf ("\nStarting kernel ...\n\n");

#ifdef CONFIG_USB_DEVICE
{
extern void udc_disconnect (void);
udc_disconnect ();
}
#endif

cleanup_before_linux ();

theKernel (0, bd->bi_arch_number, bd->bi_boot_params);
}

...
так что если верить переводу
/* we assume that the kernel is in place */
перевести можно как - /* мы допускаем что зерно `размещено (или на месте, или поступает) ` */
так что мессадж "Starting kernel ..." не гарантирует что оно загрузилось вообще...

но если верить всему сообщению
AT91RM9200_board$ bootm
## Booting image at 20800000 ...
Image Name:
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 949944 Bytes = 927.7 kB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK

Starting kernel ...

... то можно увидить что оно распоковалось, но не факт что загрузилось....

плюс ко всему еще одно смутное место
u-boot-1.1.6-worked-070209/board/at91rm9200dk/at91rm9200dk.c

int board_init (void)
{
/* Enable Ctrlc */
console_init_f ();

/* Correct IRDA resistor problem */
/* Set PA23_TXD in Output */
((AT91PS_PIO) AT91C_BASE_PIOA)->PIO_OER = AT91C_PA23_TXD2;

/* memory and cpu-speed are setup before relocation */
/* so we do _nothing_ here */

/* arch number of AT91RM9200DK-Board */
gd->bd->bi_arch_number = MACH_TYPE_AT91RM9200;
/* adress of boot parameters */
gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;

return 0;
}


здесь вооще странное место
gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
почему именно + 0x100 ???

вот из хидера at91rm9200dk.h
#define PHYS_SDRAM 0x20000000
Lelick
должна быть выполнена следующая последовательность действий, для загрузки с рамдиска:
1) собираем ядро, с поддержкой initrd
2) собираем файловую систему пакетом buildroot или берем готовую
3) обрабатываем их утилитой mkinitrd из uboot/tools, в качестве параметров к этой утилите задаются адреса загрузки и старта
4)загружаем ядро, загружаем файловую систему
5)запускаемся

результат:

u-boot> tftpboot 20007fc0 extuuImage

eth: setting MAC address to 00:12:34:56:78:9d
PHY: RTL8201(cool.gifL detected
Link: 100baseTX Full Duplex

end eth_init
TFTP from server 192.168.4.28; our IP address is 192.168.4.172
Filename 'extuuImage'.
Load address: 0x20007fc0
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
######
done
Bytes transferred = 2688528 (290610 hex)
u-boot> tftpboot 20300000 extramdisk2

eth: setting MAC address to 00:12:34:56:78:9d
PHY: RTL8201(cool.gifL detected
Link: 100baseTX Full Duplex

end eth_init
TFTP from server 192.168.4.28; our IP address is 192.168.4.172
Filename 'extramdisk2'.
Load address: 0x20300000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#######
done
Bytes transferred = 5357632 (51c040 hex)
u-boot> bootm 20007fc0 20300000

## Booting image at 20007fc0 ...
Image Name:
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2688464 Bytes = 2.6 MB
Load Address: 20007fc0
Entry Point: 20008000
Verifying Checksum ... OK
XIP Kernel Image ... OK
## Loading Ramdisk Image at 20300000 ...
Image Name:
Image Type: ARM Linux RAMDisk Image (uncompressed)
Data Size: 5357568 Bytes = 5.1 MB
Load Address: 20300000
Entry Point: 20300000
Verifying Checksum ... OK
## Transferring control to Linux (at address 20008000) ...

Starting kernel ...


begin cleanup_before_linux


end cleanup_before_linux
## Transferring control to Linux (at address 20008000) ...
Linux version 2.6.13 (root@debian) (gcc version 3.4.3) #412 Mon Jan 8 04:32:35 MSK 2007
CPU: ARM920Tid(wb) [41129200] revision 0 (ARMv4T)
Machine: Atmel AT91RM9200-DK
Memory policy: ECC disabled, Data cache writeback
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
Built 1 zonelists
Kernel command line: mem=16M console=ttyS0,115200 root=/dev/ram0 init=/linuxrc rw panic=10
AT91: 128 gpio irqs in 4 banks
PID hash table entries: 128 (order: 7, 2048 bytes)
Console: colour dummy device 80x30
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 16MB = 16MB total
Memory: 8200KB available (2233K code, 411K data, 88K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
checking if image is initramfs...it isn't (bad gzip magic numbers); looks like an initrd
Freeing initrd memory: 5232K
NET: Registered protocol family 16
SCSI subsystem initialized
NetWinder Floating Point Emulator V0.97 (double precision)
NTFS driver 2.1.23 [Flags: R/O].
JFFS2 version 2.2. (NAND) © 2001-2003 Red Hat, Inc.
Initializing Cryptographic API
AT91 Real Time Clock driver.
AT91 SPI driver loaded
ttyS0 at MMIO 0xfefff200 (irq = 1) is a AT91_SERIAL
ttyS1 at MMIO 0xfefc0000 (irq = 6) is a AT91_SERIAL
ttyS2 at MMIO 0xfefc4000 (irq = 7) is a AT91_SERIAL
ttyS3 at MMIO 0xfefc8000 (irq = 8) is a AT91_SERIAL
ttyS4 at MMIO 0xfefcc000 (irq = 9) is a AT91_SERIAL
io scheduler noop registered
io scheduler anticipatory registered
RAMDISK driver initialized: 1 RAM disks of 6000K size 1024 blocksize
loop: loaded (max 8 devices)
eth0: Link now 100-FullDuplex
eth0: AT91 ethernet at 0xfefbc000 int=24 100-FullDuplex (00:12:34:56:78:9d)
eth0: Realtek RTL8201(cool.gifL PHY
at91_dataflash: AT45DB642 detected [spi0] (8650752 bytes)
Creating 3 MTD partitions on "AT45DB642.spi0":
0x00000000-0x00042000 : "bootloader"
0x00042000-0x0035a000 : "kernel"
0x0035a000-0x00840000 : "filesystem3"
at91_init
Adapter name AT91RM9200
Registered as minor 0
Found AT91 i2c
NET: Registered protocol family 2
IP route cache hash table entries: 256 (order: -2, 1024 bytes)
TCP established hash table entries: 1024 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
TCP reno registered
IPv4 over IPv4 tunneling driver
NET: Registered protocol family 1
NET: Registered protocol family 17
NET: Registered protocol family 8
NET: Registered protocol family 20
RAMDISK: ext2 filesystem found at block 0
RAMDISK: Loading 5232KiB [1 disk] into ram disk... done.
VFS: Mounted root (ext2 filesystem).
Freeing init memory: 88K
eth0: Link now 100-FullDuplex
Initializing random number generator... urandom start: failed.
done.
Starting network...
/bin/sh: run-parts: not found
/bin/sh: run-parts: not found



Welcome to the Erik's uClibc development environment.

uclibc login:
PrSt
Цитата(Lelick @ Feb 14 2007, 13:24) *
должна быть выполнена следующая последовательность действий, для загрузки с рамдиска:
1) собираем ядро, с поддержкой initrd
2) собираем файловую систему пакетом buildroot или берем готовую
3) обрабатываем их утилитой mkinitrd из uboot/tools, в качестве параметров к этой утилите задаются адреса загрузки и старта
4)загружаем ядро, загружаем файловую систему
5)запускаемся


1)
в ядре сказано что с поддержкой initrd
< > Normal floppy disk support (NEW)
< > Loopback device support
< > Network block device support
<*> RAM disk support
(16) Default number of RAM disks
(8192) Default RAM disk size (kbytes)
(1024) Default RAM disk block size (bytes)
[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
< > Packet writing on CD/DVD media
< > ATA over Ethernet support

2),3) - пока не делал - нужно сначало что бы стартонуло ядро, позже разумеется буду делать файловую систему

4) я хочу сначала запустить только ядро, без файловой системы
5) вот это и есть - гвоздь программы %)


eth: setting MAC address to 00:12:34:56:78:9d
PHY: RTL8201( cool.gif L detected
Link: 100baseTX Full Duplex
end eth_init

просто инетерсно, а откуда эти строки?
это ваши debug - printf() или какаято версия U-Boot специфическая у Вас?


bootm 20007fc0 20300000

второй адрес что означает, это адрес initrd?
если верить сайту автора убута
http://www.denx.de/wiki/view/DULG/UBootCmdGroupExec#Section_5.9.4.2.
To boot a Linux kernel image without a initrd ramdisk image, the following command can be used:
=> bootm ${kernel_addr}
If a ramdisk image shall be used, you can type:
=> bootm ${kernel_addr} ${ramdisk_addr}

в моем случае, я второй не указываю...


begin cleanup_before_linux
end cleanup_before_linux


а эти строчки откуда взялись?


## Transferring control to Linux (at address 20008000) ...
Linux version 2.6.13 (root@debian) (gcc version 3.4.3) #412 Mon Jan 8 04:32:35 MSK 2007
....

вот это я уже просто мечтаю получить....

вот что говорит bdinfo у меня, если это может помочь хоть както...
AT91RM9200_board$ bdinfo
arch_number = 0x000000FB
env_t = 0x00000000
boot_params = 0x20000100
DRAM bank = 0x00000000
-> start = 0x20000000
-> size = 0x02000000
ethaddr = 11:11:11:11:11:11
ip_addr = 192.168.1.123
baudrate = 115200 bps
Lelick
пункт 3, а именно обработку утилитой mkinitrd, нужно выполнить и для ядра
PrSt
Цитата(Lelick @ Feb 14 2007, 13:58) *
пункт 3, а именно обработку утилитой mkinitrd, нужно выполнить и для ядра

это делаю, как и рекомердуют в статье на heavy-online...
root@server:new# cat build_image.sh
#!/bin/bash
./mkimage -A arm -O linux -C gzip -a 0x20008000 -e 0x20008000 -d Image.gz uImage

mkimage из состава сборки U-Boot-1.1.6

получаю uImage, и его по tftp забираю грузить...


Lelick
выполни c опциями -A arm -O linux -T kernel -C gzip -a=0x20007fc0 -e=20008000 -d .... , а потом tftpboot 20007fc0 uImage; bootm 20007fc0
PrSt
Цитата(Lelick @ Feb 14 2007, 14:10) *
выполни c опциями -A arm -O linux -T kernel -C gzip -a=0x20007fc0 -e=20008000 -d .... , а потом tftpboot 20007fc0 uImage; bootm 20007fc0

вот результат...
AT91RM9200_board$ tftpboot 20007fc0
MAC: error during MII initialization
TFTP from server 192.168.1.1; our IP address is 192.168.1.123
Filename 'uImage'.
Load address: 0x20007fc0
Loading: T #################################################################
#################################################################
########################################################
done
Bytes transferred = 950008 (e7ef8 hex)
AT91RM9200_board$
AT91RM9200_board$ bootm 20007fc0
## Booting image at 20007fc0 ...
Image Name:
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 949944 Bytes = 927.7 kB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
Uncompressing Kernel Image ... Error: inflate() returned -3
GUNZIP ERROR - must RESET board to recover
AT91F_LowLevelInit(): Debug channel initialized
press any key to enter bootloader
Load U-BOOT from dataflash[c0008000] to SDRAM[20f00000]

тоесть перегружается после
строки GUNZIP ERROR...
Lelick
Цитата(PrSt @ Feb 14 2007, 15:44) *
Цитата(Lelick @ Feb 14 2007, 14:10) *
выполни c опциями -A arm -O linux -T kernel -C gzip -a=0x20007fc0 -e=20008000 -d .... , а потом tftpboot 20007fc0 uImage; bootm 20007fc0

вот результат...
AT91RM9200_board$ tftpboot 20007fc0
MAC: error during MII initialization
TFTP from server 192.168.1.1; our IP address is 192.168.1.123
Filename 'uImage'.
Load address: 0x20007fc0
Loading: T #################################################################
#################################################################
########################################################
done
Bytes transferred = 950008 (e7ef8 hex)
AT91RM9200_board$
AT91RM9200_board$ bootm 20007fc0
## Booting image at 20007fc0 ...
Image Name:
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 949944 Bytes = 927.7 kB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
Uncompressing Kernel Image ... Error: inflate() returned -3
GUNZIP ERROR - must RESET board to recover
AT91F_LowLevelInit(): Debug channel initialized
press any key to enter bootloader
Load U-BOOT from dataflash[c0008000] to SDRAM[20f00000]

тоесть перегружается после
строки GUNZIP ERROR...


load address и entry point должны соответствовать тем что введены в mkinitrd:
-a load address -e entry point

у тебя они совпадают, не тот файл подгружаешь

выполнять надо c опциями -A arm -O linux -T kernel -C gzip -a 0x20007fc0 -e 20008000 -d .... (сорри за знаки равно, случайно воткнул)
PrSt
Цитата(Lelick @ Feb 14 2007, 14:56) *

load address и entry point должны соответствовать тем что введены в mkinitrd:
-a load address -e entry point
у тебя они совпадают, не тот файл подгружаешь
выполнять надо c опциями -A arm -O linux -T kernel -C gzip -a 0x20007fc0 -e 20008000 -d .... (сорри за знаки равно, случайно воткнул)

про знаки равно я догодался разумеется и поправил сразу же%)
AT91RM9200_board$ tftp 20007fc0
MAC: error during MII initialization
TFTP from server 192.168.1.1; our IP address is 192.168.1.123
Filename 'uImage'.
Load address: 0x20007fc0
Loading: T #################################################################
....
########################################################
done
Bytes transferred = 950008 (e7ef8 hex)
AT91RM9200_board$
AT91RM9200_board$ bootm 20007fc0
## Booting image at 20007fc0 ...
Image Name:
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 949944 Bytes = 927.7 kB
Load Address: 20007fc0
Entry Point: 20008000
Verifying Checksum ... OK
Uncompressing Kernel Image ... Error: inflate() returned -3
GUNZIP ERROR - must RESET board to recover
AT91F_LowLevelInit(): Debug channel initialized
press any key to enter bootloader


он даже распоковать не может -
Error: inflate() returned -3
только что это значит нада посмотреть
Lelick
попробуй не зипованый кернел, возможно в u-boot косяк какой-нибудь, вместо -с gzip поставь -c none

файл ядра для mkinitrd надо брать из: ../linux/arch/arm/boot/Image (незипованный)
PrSt
[quote name='Lelick' post='210866' date='Feb 14 2007, 15:32'] попробуй не зипованый кернел, возможно в u-boot косяк какой-нибудь, вместо -с gzip поставь -c none
файл ядра для mkinitrd надо брать из: ../linux/arch/arm/boot/Image (незипованный)/quote]
так я его и беру не зипованный как Image, потом чипую ручками и получаю Image.gz
и его подкармливаю сюда
./mkimage -A arm -O linux -C none -a 0x20007fc0 -e 0x20008000 -d Image.gz uImage

С -c none теперь чуточку иное

AT91RM9200_board$ bootm 20007fc0
## Booting image at 20007fc0 ...
Image Name:
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 949944 Bytes = 927.7 kB
Load Address: 20007fc0
Entry Point: 20008000
Verifying Checksum ... OK
XIP Kernel Image ... OK
No initrd
## Transferring control to Linux (at address 20008000) ...

Starting kernel ...

-F- Data Abort detected


о-о-о-о-пачки...
теперь еще и новые сообщения появились
XIP Kernel Image ... OK
No initrd
## Transferring control to Linux (at address 20008000) ...


Lelick
ты меня неправильно понял, ты взял тот же самый файл зипованного кернела и объявил его незипованным, а надо взять файл незипованного кернела и обработать его с "-c none"
PrSt
Цитата(Lelick @ Feb 14 2007, 15:55) *
ты меня неправильно понял, ты взял тот же самый файл зипованного кернела и объявил его незипованным, а надо взять файл незипованного кернела и обработать его с "-c none"

вероятно действительно неверно понял

щяс вот как я получаю uImage, Image - не зипованный...

./mkimage -A arm -O linux -C none -a 0x20007fc0 -e 0x20008000 -d Image uImage

вот что получаю

Load address: 0x20007fc0
Loading: T #################################################################
...
###########################################################
done
Bytes transferred = 1965424 (1dfd70 hex)
AT91RM9200_board$ bootm 20007fc0
## Booting image at 20007fc0 ...
Image Name:
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1965360 Bytes = 1.9 MB
Load Address: 20007fc0
Entry Point: 20008000
Verifying Checksum ... OK
XIP Kernel Image ... OK
No initrd
## Transferring control to Linux (at address 20008000) ...

Starting kernel ...


и все также стоит на месте(как и раньше)....
Lelick
авторизуй меня в Icq
PrSt
Цитата(Lelick @ Feb 14 2007, 16:17) *
авторизуй меня в Icq

Спасибо... авторизовал, готово!
может так будет лучше... 8)))))
AlexMad
Цитата(PrSt @ Feb 14 2007, 11:08) *
Цитата(AlexMad @ Feb 14 2007, 09:54) *

Сначала по Х-модему грузится, потом, как написано на http://heavy-online.ru/arm-linux/ гружу его же по адресу 0хС0000000, выдается
Modification of Arm Vector 6 :421a015
Write 10240 bytes in DataFlash [0xc0000000]
Verify Dataflash:
Failed
Hit a Key!

и можно все начинать сначала. Причем я уже и память и флешку тестировал, грешил на них, все тесты вроде проходят.

могу сказать что мне пришлось изрядно перелокопатьти исходник от romboot что бы найти подобную проблему и устранить причину...
обратите внимание на ваш код возврата :421a015 и сравните его с датащитом на AT91RM9200 стр. 87,112 - там расписано что Вы должны получить для вашей AT45DB321 ...
кстати, в моем случае устранение проблеммы свелось к понижению скорости работы SPI в 32 раза в конфигурационном регистре(смотри в сторону - DIV32).
Рекомендую перечитать этот пост внимательно с начала... может это ваш случай?

Сравнил с даташитом... именно это и должно получаться, по крайней мере 0x421A0xx получилось из расчетов по 87-ой странице дш. И при этом не хочет во флеш писаться загрузчик sad.gif
PrSt
Цитата(AlexMad @ Feb 17 2007, 17:10) *
Сравнил с даташитом... именно это и должно получаться, по крайней мере 0x421A0xx получилось из расчетов по 87-ой странице дш. И при этом не хочет во флеш писаться загрузчик sad.gif

если я все верно помню, то эта флэша, только в последовательном режиме(SPI) работает, Вы уверены что Ваш U-Boot просит/пишет по SPI?
кстаи, патчи на SPI приклеены?
было бы еще не плохо Вам пройтись по коду U-Boot... нужно найти где в ваей версии он вываливается...
AlexMad
Разобрался, почти сразу после того как написал. Проблема была в инициализации СДРАМ. Но спрашивал я не про U-Boot, а про romboot, у меня он не хотел вставать, а у-бут после уже запустился без вопросов, тока его теперь надо под мою плату собрать. Вернее, не под мою, а под радужную Rainbow/
PrSt
Цитата(Lelick @ Feb 14 2007, 16:17) *
авторизуй меня в Icq

Огромное спасибо откликнувшимся на зов о помощи, и особенно уважаемому - Lelick.
с его советами и помощью таки нашел проблемные места и... - запустил!
проблемма крылась в глубинах u-boot и в инициализации тактовой частоты... (везде по чуточку)
пришлось правда с нуля пересобрать u-boot-1.1.1с патчами иналожить свои патчи на езернет lxt972
вот наблюдаю заветное...
[42949372.960000] Linux version 2.6.19 (root@server) (gcc version 3.4.6)
....
[42949375.590000] loop: loaded (max 8 devices)
[42949375.600000] LXT970: Registered new driver
[42949375.610000] LXT971: Registered new driver
[42949375.620000] at91_ether: probe of at91_ether failed with error -1
[42949375.640000] physmap platform flash device: 00200000 at 10000000
[42949375.650000] physmap-flash physmap-flash.0: map_probe failed
[42949375.660000] udc: at91_udc version 3 May 2006
[42949375.670000] mice: PS/2 mouse device common for all mice
[42949375.680000] at91_rtc at91_rtc: rtc intf: sysfs
[42949375.680000] at91_rtc at91_rtc: rtc intf: proc
[42949375.690000] at91_rtc at91_rtc: rtc intf: dev (254:0)
[42949375.690000] at91_rtc at91_rtc: rtc core: registered at91_rtc as rtc0
[42949375.700000] AT91 Real Time Clock driver.
[42949375.710000] i2c /dev entries driver
[42949375.720000] at91_i2c at91_i2c: AT91 i2c bus driver.
[42949375.730000] TCP cubic registered
[42949375.730000] NET: Registered protocol family 1
[42949375.740000] NET: Registered protocol family 17
[42949375.750000] at91_rtc at91_rtc: setting the system clock to 1998-01-01 00:0
1:43 (883612903)
[42949375.770000] No filesystem could mount root, tried: ext2 cramfs
[42949375.770000] Kernel panic - not syncing: VFS: Unable to mount root fs on un
known-block(1,0)


Unable to mount root fs on unknown-block(1,0)
- но, это уже второй шаг, создание ФС.
я рад...


но...
только вот теперь друга проблема, из серии "назад в будущее"....
на моем собранном romboot и моем u-boot-1.1.1 - ядро не стартует, а на loader(от lelick) - стартует
я так понимаю что проблема вновь с инициялизацией скоростей, и видимо опять скоростей работы контроллера(а может и еще чегото иного...)
Подскажите пожалуйста, где в
romboot может прятаться это проблемное место?

сейчас у меня вот какие значения в romboot
*----------------------------------------*
1: Download Dataflash [addr]
2: Read Dataflash [addr]
3: Start U-BOOT
4: Clear bootloader section in Dataflash
5: __TEST__
*----------------------------------------*
Enter: 5
AT91C_BASE_PMC = FFFFFC00; AT91C_BASE_CKGR = FFFFFC20;
AT91C_PLLA_VALUE = 20273E04; AT91C_PLLA_MCK = 302;


может в какойто мере влияет тип памяти или его инициализация?
используется 2 штуки - samsung k4s561632e-tc75, схемное включение - 32-бита...

по умолчанию в romboot стояло
void AT91F_InitSdram()
{
....
pRegister = (int *)0xFFFFFF98;
// *pRegister = 0x2188c155;
....
}

пробовал ставить вроде как знячения для моей памяти
*pRegister = 0x2a99C259;

без результатно...


еще раз благодарство для - Lelick, реально помог...

.
This is j.b
а можно поделиться loader(от lelick)

у меня аналогичная проблема с romboot --- те же грабли, те же симптомы sad.gif
PrSt
B)-->
(This is j.b @ Feb 21 2007, 17:30) *
а можно поделиться loader(от lelick)
у меня аналогичная проблема с romboot --- те же грабли, те же симптомы sad.gif [/quote]

сказал бы - что радует что не у одного меня такая беда - но радоваться не чему smile.gif ))

я уже думал что это только у меня такая ерунда творится с romboot

lelick - только лоадер готовый дал(в общем то и на том ему спасибо), исходник он не дает...

кстати делал тест памяти - он полностью проходит

case '5':
printf("...test...\r\n");

unsigned int volatile *pSDRAM;
unsigned int wCount;
unsigned int wRead, wWrite;

// printf ("CPU %d MHz\n",GetCPUFrequencyMhz() );
// printf ("PCK %d MHz\n",GetPCKFrequencyMhz() );

while (1)
{
printf("-T WR- 0x00000000\n");
// pSDRAM = (unsigned int *) BASE_EBI_CS1_ADDRESS;
pSDRAM = (unsigned int *) 0x20000000;
// for ( wCount = 0, wWrite=0x0; wCount < 0x800000; wCount ++ )
for ( wCount = 0, wWrite=0xff; wCount < 0x4000008; wCount ++ )
{
*pSDRAM = wWrite;
wRead = *pSDRAM;
if (wWrite != wRead )
printf ("[0x%08X] = 0x%08X ( 0x%08X,0x%08X)\n",wCount,wRead^wWrite,wRead,wWrite );
pSDRAM++;
}
}
command = 0;
break;

тоесть проблема не в памяти по идее а все таки гдето в клоках....
только вот где - не пойму...
аж бошка лопается уже...
и помочь ни кто не может...

nvn
у меня с romboot тоже были проблемы AT45DB321 не шилась, u-boot не стартовал.... после общения с Дмитрием Черкашиным, за что ему отдельно спасибо, он написал тестовый загрузчик с которым у меня все сразу заработало... см. http://www.ucrouter.ru/download.html тут и исходники есть
AlexMad
[quote name='PrSt' date='Feb 21 2007, 18:50' post='214287']
cool.gif--><div class='quotetop'>(This is j.b @ Feb 21 2007, 17:30) *</div><div class='quotemain'><!--quotec--> а можно поделиться loader(от lelick)
у меня аналогичная проблема с romboot --- те же грабли, те же симптомы sad.gif [/quote]

сказал бы - что радует что не у одного меня такая беда - но радоваться не чему smile.gif ))

я уже думал что это только у меня такая ерунда творится с romboot

lelick - только лоадер готовый дал(в общем то и на том ему спасибо), исходник он не дает...

кстати делал тест памяти - он полностью проходит

case '5':
printf("...test...\r\n");

unsigned int volatile *pSDRAM;
unsigned int wCount;
unsigned int wRead, wWrite;

// printf ("CPU %d MHz\n",GetCPUFrequencyMhz() );
// printf ("PCK %d MHz\n",GetPCKFrequencyMhz() );

while (1)
{
printf("-T WR- 0x00000000\n");
// pSDRAM = (unsigned int *) BASE_EBI_CS1_ADDRESS;
pSDRAM = (unsigned int *) 0x20000000;
// for ( wCount = 0, wWrite=0x0; wCount < 0x800000; wCount ++ )
for ( wCount = 0, wWrite=0xff; wCount < 0x4000008; wCount ++ )
{
*pSDRAM = wWrite;
wRead = *pSDRAM;
if (wWrite != wRead )
printf ("[0x%08X] = 0x%08X ( 0x%08X,0x%08X)\n",wCount,wRead^wWrite,wRead,wWrite );
pSDRAM++;
}
}
command = 0;
break;

тоесть проблема не в памяти по идее а все таки гдето в клоках....
только вот где - не пойму...
аж бошка лопается уже...
и помочь ни кто не может...


[/quote]
Думаю, проблема именно в памяти, верней в ее инициализации, я у себя Romboot запустил только после того, как помянял настройки СДРАМ под конкретные микрухи, что у меня впаяны. COMA выложил свой загрузчик, так вот - он у меня даже не пытается чего-то делать, а я не верю, что уважаемый COMA выложил заведомо нерабочие вещи, просто проблема в том, что у всех у нас запаяны разные СДРАМ и ДатаФлешь, вот и получается, что советы одного не подходят другому.

У меня ОЗУ-хи k4s641632h-tc75, флешь - at45db321c
romboot
P.S. флешку я также протестил случайными числами.
PrSt
Цитата(AlexMad @ Feb 22 2007, 08:45) *
Думаю, проблема именно в памяти, верней в ее инициализации, я у себя Romboot запустил только после того, как помянял настройки СДРАМ под конкретные микрухи, что у меня впаяны. COMA выложил свой загрузчик, так вот - он у меня даже не пытается чего-то делать, а я не верю, что уважаемый COMA выложил заведомо нерабочие вещи, просто проблема в том, что у всех у нас запаяны разные СДРАМ и ДатаФлешь, вот и получается, что советы одного не подходят другому.
У меня ОЗУ-хи k4s641632h-tc75, флешь - at45db321c
romboot
P.S. флешку я также протестил случайными числами.


угу, вот теперь начитается у меня раздвоение мисли очередной раз...
я предпологаю что память тут не причем, с Ваших слов получается что я гдето заблуждаюсь и такое возможно...
я пытаюсь мыслить следующим образом, из увиденного загрузчита от lelick, а именно....
его загрузчик сконфигурен на иной тип памяти, и иной размер памяти, если я все верно помню с его слов, то у него используется 16М.
у lelick значения
регистр памяти (0xffffff90 (SDRAMC Configuration Register)) - 29912154
клоки (PMC Clock Generator PLL A Register) - 2027BE04

и заметьте, при этом - его лоадер у меня запустился, тоесть тип и размер памяти не должен так влиять...
а вот тактовая(настройка клоков) - вероятно больше может повлиять...
на всякий случай - у меня кварц - 18.432
данные из U-Boot-1.1.1
....
/* ARM asynchronous clock */
#define AT91C_MAIN_CLOCK 179712000 /* from 18.432 MHz crystal (18432000 / 4 * 39) */
#ifdef MASTER_CLOCK_45 /* Master clock 45Mhz */
#define AT91C_MASTER_CLOCK 44928000 /* peripheral clock (AT91C_MAIN_CLOCK / 3) */

//#else /* MASTER_CLOCK_45 */
//#ifdef MASTER_CLOCK_60
//#define AT91C_MASTER_CLOCK 59904000 /* peripheral clock (AT91C_MAIN_CLOCK / 3) */
//#else /* MASTER_CLOCK_60 */
//#error Master clock must be defined
//#endif

#endif
....


память у меня используется - K4S561632E-TC/75
и если верить даташиту - это:
16M x 16 166MHz (CL=3)
Organization Row Address Column Address
16Mx16 A0~A12 A0-A8
тоесть
колонок 9
рядов 13
это - если верить даташиту, тоесть в 0xffffff90 (SDRAMC Configuration Register) надо грузить 0x2a99C259, lelick говорит, что если 2 микрухи используется то надо 0x2a99C25A - но с таким значением не грузится
щяс у меня стоят такие значения
регистр памяти (0xffffff90 (SDRAMC Configuration Register)) - 0x2a99C259
клоки (
PMC Clock Generator PLL A Register) - 2027BE04

а вот что получаетс я при 0x2a99C25A
Enter: press any key to enter bootloader
Load U-BOOT from dataflash[c0008000] to SDRAM[20f00000]
Set PLLA to 180Mhz and Master clock to 60Mhz and start U-BOOT

и зависает

кстати, не-не Вы не подумайте что я хочу сказать, что ктото специально делает неверный код, что бы его распространять...
я даже не мыслю в этом направлении...

я пытаюсь решить проблему, в частности свою, но оказывается такая беда не у одного меня, и как с ней бороться - "никто не знает"...

кстати собрал ваш RomBoot_Rainbow.zip
и что получил, тоже самое...

## Booting image at 20007fc0 ...
Image Name:
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2098432 Bytes = 2 MB
Load Address: 20007fc0
Entry Point: 20008000
Verifying Checksum ... OK
XIP Kernel Image ... OK

Starting kernel ...

AT91C_CKGR_PLLAR = 2026BE04
AT91C_CKGR_PLLBR = 10483E0E
AT91C_PMC_MCKR = 302
AT91C_CKGR_MCFR = 12328
AT91C_CKGR_MOR = FF01


еще..
вот что известно
из варианта лоадера от lelick, известно что кернел говорит про тактовую при старте..
вот огрызок сркина-терминала
где говорит кернел (о чем я его просил когда фиксил этот участок кода в ядре...) какую тактовую он смог определить...
[42949372.960000] Linux version 2.6.19 (root@server) (gcc version 3.4.6) #14Tue Feb 20 12:46:57 EET 2007
[42949372.960000] CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=###
[42949372.960000] Clocks: PLLA overclocked, 184 MHz
[42949372.960000] Clocks: CPU 184 MHz, master 46 MHz, main 18.432 MHz
[42949372.960000] CPU0: D VIVT write-back cacheage Name:
[42949372.960000] CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8

может это и есть то что я ищю?
PrSt
Цитата(PrSt @ Feb 22 2007, 09:20) *
щяс у меня стоят такие значения
регистр памяти (0xffffff90 (SDRAMC Configuration Register)) - 0x2a99C259
клоки (
PMC Clock Generator PLL A Register) - 2027BE04

более того, нарыл в инете перепиську пиплов... http://lists.arm.linux.org.uk/pipermail/li...ber/024650.html

и так пробовал, как они рекомендуют
#define AT91C_PLLA_VALUE 0x2270BE40
тоже бестолку пока, тотже результат получается, не стартует ядро...

хотя это(0x2270BE40), в пересчете все те же 0x2027BE04...

вот архив с моим ромбутом... http://projects.org.ua/_files_/AT91RM9200_...19_last.tar.bz2
который не может загрузить мой кернел...
This is j.b
полистал исходники romboot

нашел такие вот строки (dataflash.h)

Код
#define AT45DB161        0x2c
#define AT45DB321        0x34
#define AT45DB642        0x3c
#define AT45DB128        0x10


у нас на плате стоит AT45DB011B
согласно даташиту на AT91RM9200 (стр 87) проц поддерживает эту датафлешку, но она просто не описана в рамбут, из -за этого получается проблема при программировании

я правильно мыслю?
PrSt
B)-->
(This is j.b @ Feb 22 2007, 15:24) *
полистал исходники romboot
нашел такие вот строки (dataflash.h)
Код
#define AT45DB161        0x2c
#define AT45DB321        0x34
#define AT45DB642        0x3c
#define AT45DB128        0x10

у нас на плате стоит AT45DB011B
согласно даташиту на AT91RM9200 (стр 87) проц поддерживает эту датафлешку, но она просто не описана в рамбут, из -за этого получается проблема при программировании
я правильно мыслю? [/quote]
в принципе верно, если пропишеш ее код - опознает ее... только те надо ее код найти..
This is j.b
код взял из даташита. (это маскированые биты стаус-регистра)
завтра откомпиляю.. проверим smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.