Где U-Boot получает CONFIG_SYS_INIT_SP_ADDR для Marvell Armada 38x (MVEBU) - PullRequest
0 голосов
/ 19 января 2019

Я изучаю низкоуровневую архитектуру ARM, изучая внутреннюю часть моего Marvell Armada A388 SoC (88F6828, manual ) (ARMv7, Cortex-A) и изучая исходный код U-boot для своегоSoC.Я нахожусь в той части crt0.S, где стек настроен с помощью этой инструкции и позже использовал несколько инструкций:

ldr r0, =(CONFIG_SYS_INIT_SP_ADDR)

Для моей доски CONFIG_SYS_INIT_SP_ADDR определено в arch/arm/mach-mvebu/include/mach/config.h как

/* end of 16M scrubbed by training in bootrom */
#define CONFIG_SYS_INIT_SP_ADDR     0x00FF0000

Как они получили этот адрес (и что именно означает «чистящий» комментарий / почему он актуален)?На этом этапе MMU отключен, поэтому физический адрес равен 0x00FF0000, который будет отображаться путем итерации окон адреса во внутреннем регистровом пространстве.Согласно отображению памяти по умолчанию , окно, которое охватывает 0x00FF0000, является настраиваемым окном 19 (u-boot еще не изменило никаких окон):

https://i.imgur.com/l2sw92J.png

Таким образом, этот адрес будет преобразован в адрес в DRAM.Однако DRAM еще не инициализирован.Они просто выбрали адрес произвольно, и почему мы можем использовать DRAM перед его инициализацией / инициализацией контроллера DRAM?И мне интересно, как я могу открыть для себя эти вещи в следующий раз.

...