образ будет скопирован с носителя в RAM по адресу loadaddr если адрес не указан в команде чтения явно , затем перемещен по адресу Load address из заголовка, упраление будет передано на адрес Entry Point. Для ядра Linux (zImage) - Load address и Entry Point совпадают, в старых ядрах этот адрес прописан в arch/arm/mach-MACH/Makefile.boot, например
Спасибо большое за ответ. В сети не так много форумов, где могут помосчь с u-boot и linux.
У меня ядро лежит по адресу 0x08040000
если я укажу loaddr=0xD0000000
Load address = 0xD0008000
Entry point - 0xD0008000
должно запуститься?
По каким критериям выбирают эти адреса? я, например видел такое:
Load address = 0xD0008000
Entry point - 0xD0008001
не понятно почему писали именно так
простите, это я уже пробовал "и так и сяк", перепутал C и D в адресах
сегодня удалось добиться вот чего:
U-Boot 2010.03 (Sep 02 2014 - 11:03:44)
## Booting kernel from Legacy Image at 08040000 ...
Image Name: Linux-2.6.33-arm1
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 738336 Bytes = 721 kB
Load Address: d0008000
Entry Point: d0008001
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
(далее тишина)
U-boot встал хорошо, даже сеть работает.
не хочет грузится ядро. MACHINE_NUMBER в U-boot и ядра совпадают, в файле борды и конфиге ядра выставлен USART1 (как в U-boot). DEBUG_LL и EARLY_PRINTK тоже выставлены.
Возможны такие симптомы из-за неверной конфигурации PLL?
Измучился в поисках, готов уже заплатить за консультацию.
На любой файлообменник - мне все равно :) еще сразу опишите как конфигурируются убут и ядро и каким кросскомпилятором собирать. Но я если что не обещаю ничего, если с наскоку не разберусь - долго разбираться не буду :) не имея платы и даже начальных сведений о процессоре и ucLinux это просто может затянуться.
У меня плата в STM32F429, 32Mb SD-RAM и 24Mhz кварцем
https://yadi.sk/d/feiaDzP8asj7Z - ссылка на u-boot, к нему сейчас претензий нет.
Конфиг u-boot содержится в include/configs/stm32f429-discovery.h
сейчас там исправлена частота кварца на 24Mhz и размер SDRAM 32MB. так как нужно. всё работает.
Сборка uboot: make ARCH=arm CROSS_COMPILE=arm-2010q1/bin/arm-uclinuxeabi-
там описано как собрать (ядро подгружается автоматически и обрабатывается через mkimage) и есть ссылка на кросскомпилятор.
Это ядро для платы с 8MB SDRAM и 8Mhz кварцем
Сейчас знаю, что как минимум PLL настроена не правильно, где это настраивается не могу найти. Папка для борды: arch/arm/mach-stm-32