bootloader启动流程详解

bootloader简述:

        bootloade指的是内核引导程序,又被称为自举程序,是嵌入式系统在加电后执行的第一段代码。它完成了CPU和相关硬件的初始化,搬移操作系统(kernel/Linux)到内存中,从而能够运行操作系统,最终目的是为内核的启动准备环境。

bootloader分类:

        由上图我们可以看出来,bootloader在整个系统加载的过程中起着至关重要的作用,但因为bootloader作用在非常底层的地方,所以根据不同的硬件架构,bootloader内核引导程序也会有种种区别,常见的有针对x86的 GRUB,针对ARM的 vivi 和 armboot ,还有支持多种架构的uboot。 其中uboot可能就是初学者最耳熟能详得了。uboot以自身可移植性高,功能丰富,开源可定制在众多bootloader中杀出重围。

bootloader之uboot的启动流程:

        1,uboot的第一阶段:BL0,BL1

                通过读取 iROM 上的引脚信息,选择时什么样的启动方式(mmc/Flash/eSSD),并搬运BL1的代码到sRam(内部)中运行。

        2,uboot的第二阶段:BL2

                BL1将BL2的代码搬移到 DDR(外部) 中运行,并通过BL2的代码,搬移内核(操作系统)到空间足够的DDR中运行。

        3,uboot的传参:

                在完成上述的BL2代码段后,将进入到uboot终端,我们可以使用 printenv 命令来进行开发板环境变量的查看,也可以使用 setenv 在uboot终端可以去设置环境变量,比如设置开发板将要使用的IP地址,网关,子网掩码等等,最关键的通过修改 bootargs 来向即将启动的内核进行参数的传递。

但需要注意的是传递参数时,需要注意以下几点:

        1,传递参数的数据结构必须一致。

        2,因为在内核启动以后,引导程序将消亡,所以引导程序与内核之间必须约定一个参数存放地址。

        3,约定数据格式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值