uboot分析之uboot启动内核分析

1.__u_boot_cmd_start以及__u_boot_cmd_end两个变量在代码只有一处出现,这两个变量是通过链接脚本传进来的。
2.使用nand read.jffs2中的.jffs2是因为使用这种格式不需要页对齐,比较方便。
3.flash上存储的内核:头部+真正的内核
头部中的两个重要的参数:
ih_load:表示加载地址,即内核运行时应该放在哪里
ih_ep:表示入口地址,运行内核时需要跳转到的地址
注释:因为头部有这两个参数,所以下载内核到内存中的位置没有关系,内核都会被移动到加载地址;加载的时候指的是真正的内核加载的地址,而不包括头部;头部大小为64字节。
4.使用do_bootm_linux启动系统:这时候uboot会帮助内核设置启动参数(内核和uboot之间的交互方法:在某个地址按某种格式(TAG格式)存放一些数据);跳转到入口地址去启动内核。
注释:跳到入口函数的过程:theKernel赋值;调用theKernel函数。
5.交互的参数:
setup_start_tag:size、tag、flag、pagesize、rootdev
setup_memory_tags:size、flag、size、start(0x3000 0000)
setup_commandline_tag:size、tag
setup_end_tag:0、0
6.theKernel函数的三个参数解析:
第一个参数为0
第二个参数:bd->bi_arch_number是机器ID(2410和2440的机器ID不同)。
第三个参数:bd->bi_boot_parasm是uboot和内核交互数据的首地址。
7.直接输入boot命令,实际上是调用bootcmd中的两条语句来启动内核。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值