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

来源:互联网 发布:做封面的软件 编辑:程序博客网 时间:2024/05/15 23:44

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. 内核加载地址和入口地址不同。内核一定要存放在加载地址处才可以成功启动。

未做实验验证,从上面两例分析可以推断出此结论。




0 0
原创粉丝点击