*浅解嵌入式中的BootLoader

本文仅当做自身学习过程中之笔录就不时的突发奇想偶记。鄙人菜鸟一样只是,文中如有不当或脱,若读者愿意不吝赐教,在产感激零涕。文章一直不断更新中

 

 

一、何为Bootloader

  以嵌入式系统中,Bootloader是操作系统内核启动之前运行的相同截先后。可以据此来初始化软硬件设施,从而以系统的软件硬件带至一个正好的条件。BootLoader是设备上电继,

履之首先执代码。

   以上为BootLoader的简单作用。从达成获知,BootLoader(类似于PC机上的BIOS)是独于OS(在无OS的装备上,一个走在就片机上的main程序也产生Bootloader)

 的同小段程序。在嵌入式操作系统中,BootLoader程序可以来半点片组成。一部分出于汇编语言结合,典型的例证如STM32单片机的启航文件(stmf10x__startup.s)。这有些顺序的犯

故此生以下几单方面:设置寄存器指针,分配堆栈空间进行初始化,建立中断向量表,(进行空间内存映射),实现到C语言空间函数的跳转。汇编程序功能于少,实现对根硬件的初始化操作。

  BootLoader的另外一样片段是出于C语言组成,该有的效用于丰富。(类比IAP程序)初始化将要采用的硬件,比如PC机屏幕的驱动、键盘驱动等。
程序将存放于flash上之次加载到SRAM上。在发出OS的配备上,该部分程序会设置基础启动参数,最终调用内核启动全套系统。

 

老二、嵌入式上之对系统

     双网简单明了就是是鲜截在存储介质上(flash)的次序,每段程序包含一个操作系统和与系统涉及的用软件。在BootLoader其次组成部分C语言中,有局部底企图是以先后加载到SRAM上。根据程序所于的内存地址不同,在加载时选不同之地方即可。例如,在STM32的BootLoader中,

              Bootloader
— 0x08000000  

      程序A   ——
0x08010000

        程序B  
——-0x08020000

  因为AB程序都通过非常规处理,直接读取对应首地址上之情节,程序就算可机关运行,所以在BootLoader中挑选不同之地址来读取即可。当然,OS的操作‘

    
肯定要举行更多的拍卖,但可能启动原理都差不多。

 因为嵌入式设备硬件的差异性,CM3
/CM4舅核架构外设不同,所以若做BootLoader的移植,需要改汇编文件和C文件。