您的位置:首页 > 其它

bootm命令中地址参数,内核加载地址以及内核入口地址

2015-06-01 09:33 435 查看
bootm命令用紧随其后的参数来寻找magic number,以此来确认数据的有效性。若有效,则bootm会根据找到的image的头64字节信息建立tag信息供linux kernel使用

根据内核加载地址和入口地址的不同,有以下三种情况:

1. 内核加载地址和入口地址相同。此时内核存放在ram的地址不能与入口地址相同,否则无法启动。

NewSTO平台实验: 内核的入口地址和加载地址都是0x8000,内核从nand读取到0x8000,然后boom 0x8000

u-boot首先比较bootm的参数与加载地址,发现二者相同,略去搬移内核的步骤,直接从入口地址0x8000启动,但此时真正的内核启动代码应该在0x8040处,因此启动失败。

2. 内核加载地址和入口地址相同。此时内核存放在ram的地址不能与入口地址不同,可以启动。

NewSTO平台实验: 内核的入口地址和加载地址都是0x8000,内核从nand读取到0x10000,然后boom 0x8000

u-boot首先比较bootm的参数与加载地址,发现二者不同,u-boot首先读取位于0x10000处的64字节文件头,然后将0x10040之后的内核部分搬移到0x8000处,接着从入口地址0x8000启动,启动成功。

3. 内核加载地址和入口地址不同。内核一定要存放在加载地址处才可以成功启动。

未做实验验证,从上面两例分析可以推断出此结论。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: