linux驱动开发之系统启动过程

总体:bootloader->kernel->rootfs->qt/gtk/minigui

对于arm处理器通常从0地址开始执行,也就是bootloader.

bootloade启动过程:1. 初始化RAM-》初始化串口-》检测处理器类型-》设置LINUX启动参数-》调用linux内核映像。

初始化RAM:因为内核是运行在RAM中,因此必须先初始化RAM,为内核启动做准备。初始化 RAM 的任务包括设置 CPU 的控制寄存器参数,以便能正常使用 RAM 以及检 测RAM 大小等。

检测处理器类型:Linux 内核在启动过程中会根据该处理器类型调用相应的初始化程序。

Bootloader在执行过程中必须设置和初始化 Linux 的内核启动参数。即传递启动参数给内核主要采用两种方式:即通过 struct param_struct(2.4内核淘汰) 和struct tag(标记列表,tagged list)两种结构传递。

BootLoader 的启动过程可分为单阶段(Single-Stage)和多阶段(Multi-Stage)两种,通常多阶段的 BootLoader 具有更复杂的功能,更好的可移植性。从固态存储设备上启动的 BootLoader 大多采用两阶段,即启动过程可以分为 stage 1和 stage2:stage1完成初始化硬件,为stage2准备内存空间,并将stage2复制到内存中,设置堆栈,然后跳转到stage2。

BootLoader 的 stage1 通常包括以下步骤:     ·硬件设备初始化     ·为加载 BootLoader 的 stage2 准备 RAM 空间     ·拷贝 BootLoader 的 stage2 到 RAM 空间中     ·设置好堆栈(why??)     ·跳转到 stage2 的 C 入口点

    BootLoader 的 stage2 通常包括以下步骤:     ·初始化本阶段要使用到的硬件设备 ·将内核映像和根文件系统映像从flash上读到RAM中     ·调用内核

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值