Linux之Bootloader启动过程

1.概述

Bootloader,简而言之就是:它是一段小程序,在系统上电时开始执行,主要功能是初始化硬件设备、准备好软件环境,最后调用操作系统内核。

Bootloader 的操作模式。大多数Bootloader 都包含两种不同的操作模式: “启动加载”模式和“下载”模式,这种区别仅对于开发人员才有意义。 

启动加载模式:这种模式也称为“自主”模式。也就是 Bootloader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。这种模式是嵌入式产品发布时的通用模式。工作在启动加载模式时,uboot会自动执行bootcmd命令,比如:bootcmd=“nand read 0x100000 0x80000000 0x300000; bootm 0x80000000”。

下载模式:在这种模式下,目标机上的 Bootloader 将通过串口连接或网络连接等通信手段从主机(Host)下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被 Bootloader 保存到目标机的 RAM 中,然后再被 Bootloader 写到目标机上的FLASH 类固态存储设备中。Bootloader 的这种模系统是在更新时使用。工作于这种模式下的Bootloader 通常都会向它的终端用户提供一个简单的命令行接口。Bootloader 与主机之间进行文件传输常通过以太网连接并借助TFTP协议来下载文件。Ps:tftp a0000000 uImage;tftp b0000000 ramdisk.bin;tftp 90000000 fsl-ls1046a-rdb.dtb

2.Bootloader中典型分区结构图

 

1.标Bootloader中典型分区结构图题
  • Bootloader上电后的第一个程序。
  • Boot parameteres分区中可设置的参数(IP,串口,传递给内核的命令行参数)。
  • DTB设备数文件
  • Rootfs文件系统

3.Bootloader启动流程

Bootloader的启动流程一般分两个阶段:

Stage1(阶段一主要通过汇编语言实现,依赖cpu体系结构初始化

  • 进行硬件的初始化(watchdog,ram初始化)。
  • 为Stage2加载代码准备RAM空间。
  • 复制Stage2阶段代码到RAM空间。
  • 设置好栈。
  • 跳转到第二阶段代码的入口点。

Stage2(阶段2主要通过c语言实现,具有好的可读性和移植性)

  • 初始化该阶段所用到的硬件设备。
  • 检测系统内存映射。
  • 将uImage ,Rootfs,dtb文件从flash读取到RAM内存中。
  • 设置内核启动参数。(如通过寄存器传递设备树文件的内存地址)

 

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值