嵌入式linux ARM启动地址 [英] embedded linux ARM booting address
问题描述
我按照一些文档通过 sdcard 在 ARM 板上启动嵌入式 Linux(例如:飞思卡尔 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
规范应该来自 NXP/Freescale SoC 参考手册(例如 System启动章节).
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)处查找程序映像(例如 U-Boot),这是第三个 512-字节扇区.
第一个扇区假定为 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).
全志 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 标头中.U-Boot 将在 uImage 加载和解包时使用这些值.
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-Boot 定位图像所需的内存地址.图像被复制到该内存地址.entry point
指定 U-Boot 跳转/分支到的内存地址,以执行映像.该值通常与加载地址
的地址相同.
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.
有关详细信息,请参阅使用 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屋!