我不明白加载U-Boot时RAM中发生了什么.我正在研究Xilinx Zynq ZC702评估套件,我正在尝试使用U-Boot加载Linux内核.所以我使用Xilinx工具Vivado和SDK来生成一个逐步写在SD卡上的BOOT.bin文件:
简而言之,我遵循了Xilinx用户指南中描述的所有步骤.
但是现在,在加载内核之前,我想了解发生了什么,但我不能.根据文档,如果从闪存加载,U-Boot将自身复制到RAM中,并从那里执行,但在哪里?
我在网上搜索,发现U-Boot提取自身的地址在include/configs/zynq-common.h中由CONFIG_SYS_TEXT_BASE定义,看起来像是0x400_0000.
但在另一个网站上,我看到我们可以在调试模式下打印重定位地址,因此我修改了文件common/board_r.c并覆盖了函数" initr_announce "以打印" gd-> relocaddr "字段.这次看起来U-Boot使用偏移地址0x3FF3_7000.
当我使用U-Boot命令"md"来检查内存时,我看到使用了两个偏移,我在两个位置都看到了一个幻数"be00_00ea":
Xilinx First Stage Boot Loader
Release 2014.4 Feb 8 2016-14:53:56
Devcfg driver initialized
Silicon Version 3.1
Boot mode is SD
SD: rc= 0
SD Init Done
Flash Base Address: 0xE0100000
Reboot status register: 0x60400000
Multiboot Register: 0x0000C000
Image Start Address: 0x00000000
Partition Header Offset:0x00000C80
Partition Count: 3
Partition Number: 1
Header Dump
Image …
Run Code Online (Sandbox Code Playgroud) 在我的基于ARM的自定义板中,每当我对其进行更改时,我都会将u-boot闪存到NAND.(放一些调试语句/修改).有没有办法直接将uboot映像加载到RAM内存而不是每次闪存?
对于linux内核映像,我将其加载到内存中并使用bootm启动该映像.同样对于u-boot我正在尝试.请提供您的建议.