嵌入式Linux ARM引导地址 [英] embedded linux ARM booting address
问题描述
我遵循一些文档,通过sdcard在ARM板上引导嵌入式Linux(例如:Freescale Vybrid塔).在文档中,按照以下步骤构建uImage并将u-boot写入sdcard:
I follow some document to boot embedded Linux on ARM board (ex: Freescale Vybrid tower) via sdcard. in the document there are steps to build uImage and write u-boot into sdcard as below:
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
我想知道的是从哪个数据表/UM/RM或任何文档中获取编号:bs = 512 seek = 2,-a 0x81000000(加载地址),-e 0x81000000(入口)
What I would like to know is from which datasheet/UM/RM or any document they get the number: bs=512 seek=2, -a 0x81000000 (Load address), -e 0x81000000 (Entry point)
还请解释什么是加载地址/入口点地址?
Please also explain what Load address/entry point address mean?
推荐答案
我想知道的是从哪个数据表/UM/RM或任何文档中获取编号:bs = 512 seek = 2,-a 0x81000000(加载地址),-e 0x81000000(入口)
What I would like to know is from which datasheet/UM/RM or any document they get the number: bs=512 seek=2, -a 0x81000000 (Load address), -e 0x81000000 (Entry point)
bs=512 seek=2
规范应来自SoC的NXP/Freescale参考手册(例如,系统引导一章的扩展设备:SD,eSD和SDXC"部分).
The bs=512 seek=2
specification should be from the NXP/Freescale reference manual for the SoC (e.g. the "Expansion Device: SD, eSD and SDXC" section of the System Boot chapter).
配置为从SD卡引导时,(SoC的)ROM引导程序将在字节偏移0x400(或2 * 512 = 1024)(即第三个512)上查找程序映像(例如U-Boot).个字节的扇区.
假定第一个扇区是MBR,第二个扇区则保留给可选的辅助映像表(使用NXP文档中的术语).
When configured to boot from an SDcard, the ROM boot program (of the SoC) will look for a program image (e.g. U-Boot) at byte offset 0x400 (or 2 * 512 = 1024), which is the third 512-byte sector.
The first sector is presumed to be the MBR, and the second sector is reserved for an optional Secondary Image Table (using terminology from NXP document).
Allwinner SoC对SD卡使用类似的引导方案(即U-Boot映像位于原始扇区中的固定位置,而不是分区的一部分),但该映像始于第17个扇区.
某些SoC(例如Atmel)通过加载FAT分区中的文件来从SD卡启动,而不是加载原始扇区.
Allwinner SoCs use a similar booting scheme for SDcard (i.e. the U-Boot image is at a fixed location in raw sectors not part of a partition), but the image starts at the 17th sector.
Instead of loading raw sectors, some SoCs (e.g. Atmel) boot from SDcard by loading a file from a FAT partition.
还请解释什么是加载地址/入口点地址?
Please also explain what Load address/entry point address mean?
这些值已指定给 mkimage 实用程序,以便可以将它们安装在uImage标头中.然后,当uImage加载和解压缩时,U-Boot将使用这些值.
These values are specified to the mkimage utility so that they can be installed in the uImage header. U-Boot will then use these values when the uImage is loaded and unpacked.
load address
指定U引导所需的内存地址来定位图像.图像被复制到该内存地址.
entry point
指定要U-Boot跳转/分支到的内存地址,以执行映像.该值通常与load address
是相同的地址.
The load address
specifies to U-Boot the required memory address to locate the image. The image is copied to that memory address.
The entry point
specifies to U-Boot the memory address to jump/branch to in order to execute the image. This value is typically the same address as the load address
.
对于(Vincent Sanders'),对于ARM Linux内核,建议的加载和入口点地址从物理内存开始为0x8000,使用LOADADDR构建内核uImage .
For an ARM Linux kernel the recommended load and entry-point addresses are 0x8000 from the start of physical memory, according to (Vincent Sanders') Booting ARM Linux.
See Building kernel uImage using LOADADDR for more details.
这篇关于嵌入式Linux ARM引导地址的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!