嵌入式linux ARM启动地址

dvn*_*zzz 1 arm embedded-linux u-boot

我按照一些文档通过sdcard在ARM板上启动嵌入式Linux(例如:Freescale Vybrid塔).在文档中有一些步骤来构建uImage并将u-boot写入sdcard,如下所示:

sudo dd if=u-boot.imx of=/dev/sdX bs=512 seek=2
mkimage -A arm64 -O linux -T kernel -C none -a 0x81000000 -e 0x81000000 -n
“Linux” -d Image uImage
Run Code Online (Sandbox Code Playgroud)

我想知道的是从哪个数据表/ UM/RM或他们获得的任何文件编号:bs = 512 seek = 2,-a 0x81000000(加载地址), - e 0x81000000(入口点)

还请解释一下加载地址/入口点地址的含义?

saw*_*ust 8

我想知道的是从哪个数据表/ UM/RM或他们获得的任何文件编号:bs = 512 seek = 2,-a 0x81000000(加载地址), - e 0x81000000(入口点)

bs=512 seek=2说明书应该从用于SoC中NXP /飞思卡尔参考手册(例如,"扩展设备:SD,ESD和SDXC"所述的部分系统启动章).

当配置为从SD卡引导时,ROM引导程序(SoC)将在字节偏移0x400(或2*512 = 1024)处寻找程序映像(例如U-Boot),这是第三个512字节扇区.
第一个扇区被假定为MBR,第二个扇区被保留用于可选的二级图像表(使用恩智浦文件中的术语).

Allwinner SoC对SD卡使用类似的启动方案(即U-Boot映像位于原始扇区中不属于分区的固定位置),但图像从第17个扇区开始.
某些SoC(例如Atmel)通过从FAT分区加载文件而从SD卡启动,而不是加载原始扇区.

还请解释一下加载地址/入口点地址的含义?

这些值被指定给mkimage实用程序,以便它们可以安装在uImage头中.然后,当加载和解压缩uImage时,U-Boot将使用这些值.

load address指定为U-引导所需要的存储器地址来定位图像.图像被复制到该内存地址.
entry point指定为U-引导的存储器地址,以便执行图像跳跃/分支.该值通常与地址相同load address.

根据(Vincent Sanders的)Booting ARM Linux的说法,对于ARM Linux内核,建议的加载和入口点地址从物理内存的起始位置是0x8000 .
有关更多详细信息,请参阅使用LOADADDR构建内核uImage.