05 BootLoader初识

       在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。

        Bootloader启动大多数都分为两个阶段。第一阶段主要包含依赖于CPU的体系结构硬件初始化的代码,通常都用汇编语言来实现。这个阶段的任务有 

  • 基本的硬件设备初始化(屏蔽所有的中断、关闭处理器内部指令/数据Cache等)。
  • 为第二阶段准备RAM空间。
  • 如果是从某个固态存储媒质中,则复制Bootloader的第二阶段代码到RAM 
  • 设置堆栈。

在第一阶段中为什么要关闭Cache?通常使用Cache以及写缓冲是为了提高系统性能,但由于Cache的使用可能改变访问主存的数量、类型和时间,因此Bootloader通常是不需要的  。跳转到第二阶段的C程序入口点 

第二阶段通常用C语言完成,以便实现更复杂的功能,也使程序有更好的可读性和可移植性。这个阶段的任务有  

  • 初始化本阶段要使用到的硬件设备。
  • 检测系统内存映射。
  • 将内核映像和根文件系统映像从Flash读到RAM。
  • 为内核设置启动参数。
  • 调用内核

文章参考:https://baike.baidu.com/item/BootLoader/8733520?fr=aladdin

发布了132 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_25144391/article/details/104657603
05
今日推荐