嵌入式Linux ARM引导地址 [英] embedded linux ARM booting address

查看:219
本文介绍了嵌入式Linux ARM引导地址的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遵循一些文档,通过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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆