LINUX.ORG.RU

Объясните про U-Boot и адреса

 


0

1

u-boot некорректно исполняет boot.scr

В этой теме нашёл, как человек грузит ядро вручную:

=> fatload mmc 0 0x42000000 uImage
fatload mmc 0 0x42000000 uImage
3806576 bytes read in 198 ms (18.3 MiB/s)
=> fatload mmc 0 x 0x43000000 sun8i-h2-plus-orangepi-zero.dtb
fatload mmc 0 0x43000000 sun8i-h2-plus-orangepi-zero.dtb
15297 bytes read in 7 ms (2.1 MiB/s)
=> bootm 0x42000000 - 0x43000000
bootm 0x42000000 - 0x43000000
## Booting kernel from Legacy Image at 42000000 ...
   Image Name:   Linux-4.15.0
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3806512 Bytes = 3.6 MiB
   Load Address: 40008000
   Entry Point:  40008000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 43000000
   Booting using the fdt blob at 0x43000000
EHCI failed to shut down host controller.
   Loading Kernel Image
   Loading Device Tree to 49ff9000, end 49fffbc0 ... OK

Starting kernel ...

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

0x42000000
Так то я понял, что это адрес оперативной памяти, но как узнать в какое место это перемещать?

★★★★★

Это адрес куда мапится оперативная память, всё адреесное пространство от 0x00000000 до 0xFFFFFFFFF дробится на куски, в начале адреса векторов прерываний, управляющщие регистры и тд, обычная RAM мапится с 0x40000000, ну в эту область ядро и грузится, просто пока ядро не стартануло модель памяти плоская, а уже после появляется виртуальная память и мапинг страниц

sparks ★★★ ()

u-boot некорректно исполняет boot.scr

Посмотри в выводе printenv переменные типа таких

kernel_addr_r=0x42000000
ramdisk_addr_r=0x43300000

Откуда их берут авторы U-Boot должно быть где-то в документации или исходниках.

anonymous ()

Спасибо, понял, разобрался

burato ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.