Судя по этому логу ядро все же XIP - запускается прямо на флеше, так что в вашем случае надо писать адрес не DRAM а адрес в флеше, если судить по логу что заголовок виден адрес ядра ваш правильный
Booting kernel from Legacy Image at 08040000 ...
соответственно в mkimage при сборке ядра надо указывать
Load Address: 0x08040040
Entry Point: 0x08040041
т.е. прибавляете 0x40 = 64 байта заголовок от mkimage
только вопрос - почему у вас ядро в флеше зашито по адресу
0x08040000
вы сами так решили сделать или это из конфига ядра ? по умолчанию адрес ядра по вашей ссылке
case PLATFORM_STM32_STM32429_DISCO:
hse_hz = 24000000;
рузультат:
CPU : STM32F4 (Cortex-M4)
Freqs: SYSCLK=16MHz,HCLK=16MHz,PCLK1=16MHz,PCLK2=16MHz
Board: STM32F429-DISCOVERY Rev 1.A
DRAM: 32 MB
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
Net: STM32_MAC
Hit any key to stop autoboot: 0
## Booting kernel from Legacy Image at 08020000 ...
Image Name: Linux-2.6.33-arm1
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 738336 Bytes = 721 kB
Load Address: 08020040
Entry Point: 08020041
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
тишина...
не знаю что уже и думать...
в ядре ещё правил вот что:
MACHINE_START(STM32, "STMicro STM32")
/*
* Physical address of the serial port used for the early
* kernel debugging (CONFIG_DEBUG_LL=y).
* This address is actually never used in the MMU-less kernel
* (since no mapping is needed to access this port),
* but let's keep these fields filled out for consistency.
*/
.phys_io = STM32_USART1_BASE,
.io_pg_offst = (IO_ADDRESS(STM32_USART1_BASE) >> 18) & 0xfffc,
.map_io = stm32_map_io,
.init_irq = stm32_init_irq,
.timer = &stm32_timer,
.init_machine = stm32_init,
MACHINE_END
изначально там было STM32_USART3_BASE. Я поменял на STM32_USART1_BASE f а сдвиги и маску оставил прежнюю. Это правомерно?
This address is actually never used in the MMU-less kernel
(since no mapping is needed to access this port),
but let's keep these fields filled out for consistency.
так что это без разницы. SDRAM у вас точно правильно настроена, проверяли в убуте mtest ? в убуте стек и куча в SRAM - там без разницы, а вот как ucLinux потом их инициализирует я не знаю.
в файле борды и конфиге ядра выставлен USART1 (как в U-boot). DEBUG_LL и EARLY_PRINTK
надо еще в параметрах передаваемых ядру дописать
earlyprintk
чтобы появились отладочные сообщения на раннем этапе
Спасибо большое, буду расбиратсья с SDRAM. Но уж очень вывод mtest странный. Наблюдается постоянное смещение 00100000 в данных.
Может SDRAM чип бракованный?