Ivo*_*ina 12 linux boot arm embedded-linux u-boot
我试图了解嵌入式Linux原理,无法在u-boot输出中找出地址.
例如,我有基于i.MX6四核处理器的UDOO板,我得到了U-Boot的以下输出:
U-Boot 2013.10-rc3 (Jan 20 2014 - 13:33:34)
CPU: Freescale i.MX6Q rev1.2 at 792 MHz
Reset cause: POR
Board: UDOO
DRAM: 1 GiB
MMC: FSL_SDHC: 0
No panel detected: default to LDB-WVGA
Display: LDB-WVGA (800x480)
In: serial
Out: serial
Err: serial
Net: using phy at 6
FEC [PRIME]
Warning: FEC MAC addresses don't match:
Address in SROM is 00:c0:08:88:a5:e6
Address in environment is 00:c0:08:88:9c:ce
Hit any key to stop autoboot: 0
Booting from mmc ...
4788388 bytes read in 303 ms (15.1 MiB/s)
## Booting kernel from Legacy Image at 12000000 ...
Image Name: Linux-3.0.35
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 4788324 Bytes = 4.6 MiB
Load Address: 10008000
Entry Point: 10008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
Starting kernel ...
Run Code Online (Sandbox Code Playgroud)
我不明白加载地址0x10008000的值.根据此特定处理器的文档,在地址区0x10000000处 - 0xffffffff映射主存储器.但什么是0x8000偏移量?我无法弄清楚这个价值的原因.
我也不了解地址0x12000000,其中加载了内核映像.是否有SD卡的映射内存区域?
请你能给我一些这些地址的解释,甚至更好,一些关于这个主题的资源的参考.我的目标是学习如何将u-boot和Linux内核移植到另一个板上.
谢谢!
Gee*_*kyJ 12
如果检查u-boot的环境变量,您会发现内核映像12000000通过命令等从引导设备复制到RAM位置(此处)fatload.
现在,这不是LOADADDRESS.LOADADDRESS编译内核时给出命令行,该地址大多数位于处理器物理地址空间中RAM起始位置32K处.
你的RAM映射在10000000,内核LOADADDRESS是10008000(32K偏移).bootm命令将内核映像解压缩12000000到10008000地址,然后调用kernel entry point.