第十二章 嵌入式系统的启动

1 嵌入式系统的启动流程
  硬件加电
  引导加载程序:Boot代码,Bootloader等
  操作系统内核:如Linux内核。根据特定的目标嵌入式硬件系统,定制的内核及启动参数。
  加载文件系统:包括根文件系统以及建立与Flash内存设备上的文件系统。
  运行用户程序:用户编写的完成特定功能的程序,一些用户程序运行在一个嵌入式图形用户界面上,常用的嵌入式GUI包括:MicroWindows和MiniGui等。

2 BootLoader
  在操作系统内核运行之前运行的一段小程序。
  引导加载程序:包括固化在固件中的Boot代码,和Bootloader两大部分。
  它是系统加电以后第一段运行的代码。
  嵌入式系统中没有BIOS那样的固件程序。系统的加载启动任务就完全由Boot Loader来完成。
  Bootloader是无法通用的。因为它依赖于处理器,版级配置,不同的CPU有不同的Boot Loader。
  嵌入式系统通常由固态存储设备(比如:ROM,EEPROM,Flash等)被映射到0地址上。而Bootloader存储在0地址。
  而PC机中的引导加载程序有两部分组成:BIOS和位于硬盘MBR中的OS Boot Loader。BIOS归硬件管而OS Bootloader归操作系统管。
 
3 Bootloader的输入输出
  在Bootloader阶段,显示设备不可用,因此字符方式与用户进行交互。
  主机和目标机之间一般通过串口建立连接。输出打印信息到串口,从串口读取用户控制命令。

4 Bootloader的生命周期
  初始化硬件,如设置UART(至少设置一个),检测存储器等。
  设置启动参数,告诉内核硬件的信息,如用哪个启动界面,波特率。
  跳转到操作系统的首地址。
  消亡

5 Bootloader的启动过程
  从固态存储设备上启动的Boot Loader大多数是2阶段的启动过程:启动过程可以分为stage1和stage2两部分。
  stage1:简单硬件初始化(汇编)。
  stage2:复制数据,设置启动参数,串口通信等功能。stage2通常用C语言实现,但不使用main函数,因为main函数无法传递函数参数,而且无法处理函数返回。
  多阶段的Bootloader提供更为复杂的功能以及更好的可移植性。

6 Bootloader的主要任务
  内核映像与根文件系统映像都被加载到RAM中运行。
  另外选择XIP:直接在ROM或Flash这样的固态存储设备中的直接运行。

7 内存映射机制
  嵌入式系统往往只把CPU预留的全部RAM地址空间中的一部分映射到RAM单元上,而让剩下的那部分预留RAM地址空间处于未使用状态。BootLoader的stage2必须检测整个系统的内存映射情况。、
  加载内核映像和根文件系统映像:1 规划内存占用的布局,2 从Flash上拷贝内核映像到RAM上。

8 嵌入式Linux启动
  嵌入式Linux的启动主要分为两个阶段:第一部分bootloader启动阶段;第二部分linux内核初始化和启动阶段。
  嵌入式Linux启动步骤:加电或复位,BIOS的启动,BootLoader,操作系统初始化。
  GNU GRUB是GNU项目的boot loader,它允许用户在开机时从多个操作系统中选择一个内核镜像启动,并可以向其传递参数。GRUB有以下特点:动态可配置性,高度可移植性,丰富的用户接口,可以通过网络下载系统镜像。

9 进入Linux操作系统
  1,Boot Loader把操作系统的代码调入内存。
  2,当它执行完后,把控制权交给操作系统。
  3,由操作系统的启动程序来完成剩下的工作。
  嵌入式Linux启动延时分析:Firmware和BootLoader阶段,内核阶段,用户空间阶段,预读取和预链接。
 
10 XIP(execute in place)
  文件系统允许特定的程度段存储在只读区域内。
  可以使代码可以从存储介质中直接执行。
  对于内存比较小的系统,XIP可以让许多大型程序共存。
  XIP的应用可以分为Kernel XIP和Application XIP。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的横打

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值