uboot简介及分析

1: Uboot的作用:

  在系统刚上电的时候,系统需要运行一段程序去初始化硬件,设置软件运行环境,最后调用系统内核,这段程序就是Uboot

在了解uboot过程之前我们要搞清楚,整个系统可以运行起来,从软件上来看到底是有哪几部分组成?
1)bootloader:引导程序,即上电之后就运行的第一个程序

2)kernel:linux内核主要的功能有存储管理、CPU和进程管理,文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等

3)文件系统。包括根文件系统和建立在flash文件设备之上的文件系统,里面包含了系统能够所运行的应用程序,库等

4)应用程序

下面是linux系统中典型的区分结构



Bootloader的两个阶段

1:汇编阶段

    硬件初始化

    为第二阶段运行准备RAM空间

    拷贝第二阶段的代码到RAM空间

    设置好堆栈

   跳转到C语言入口


2:C语言阶段

    必要的硬件初始化

    检测系统内核内存映射

   将内核映像和根文件系统从flash内存中

  设置好内核启动参数

  调用内核


在Uboot中调用内核需要下列条件满足

    1 寄存器设置

   R0 = 0

   R1 = 机器类型的ID。对于ARM 其机器类型的id可参考/linux/arch/arm/tools/match-types

  R2 = 启动参数标记列表在arm中的起始地址

CPU工作模式

 SVC模式

 CPU必须禁止中断

catch和MMU的设置

   MMU 必须关闭

   指令catch可以打开可以关闭

   数据catch必须关闭

如C语言可以如下调用内核

void (*theKernel)(int zero, int arch, u32 params_addr) = (void (*)(int, int, u32 ))KERNEL_RAM_BASE

the_Kernel(0, ARCH_NUMBER, (u32 )kernel_params_start)


Bootloader启动内核,参数传递

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值