我正在尝试理解嵌入式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 ...
我不理解加载地址0x10008000的价值。根据该特定处理器的文档,在地址区域0x10000000-0xffffffff映射了主存储器。但是0x8000偏移量是什么?我无法找到这个值的原因。
我也不理解地址0x12000000,内核镜像是从那里加载的。是否有SD卡的映射内存区域?
请给我一些关于这些地址的解释或更好的是一些关于此主题的参考资源。我的目标是学习如何将U-boot和Linux内核移植到其他开发板上。
谢谢!
fatload mmc 0:1 0x12000000 uImage
),其唯一输出结果为“4788388字节在303毫秒内读取(15.1 MiB/s)”。您需要获取printenv命令的输出,以充分揭示和理解自动引导在您的板子上的工作方式。关键的环境变量是bootcmd。 - sawdust