在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行(háng)。可以(yǐ)初始化(huà)硬件设备、建(jiàn)立内存空间(jiān)映射图,从而(ér)将系统的(de)软(ruǎn)硬件环境带到(dào)一个合适状态,以便为最终(zhōng)调用(yòng)操作系统内核准备好正(zhèng)确的环境。在嵌入式系统中,通常并没有像Bioses那样的(de)固件程序(注(zhù),有的嵌入式CPU也会内嵌一段短小(xiǎo)的启动程序(xù)),因此整(zhěng)个系统的加(jiā)载启动任务就(jiù)完全由BootLoader来完成。在(zài)一个(gè)基于ARM7TDMI core的(de)嵌(qiàn)入式(shì)系(xì)统中,系统在上电或复位(wèi)时(shí)通常都从地址0x00000000处开始执行,而在(zài)这个地(dì)址(zhǐ)处安排的通常就是系统的BootLoader程序(xù)。
1.自启动模式:在这种(zhǒng)模式下,bootloader从目标机上的某个(gè)固(gù)态存储设(shè)备上将操作系统(tǒng)加载到RAM中运行,整个过程并没有(yǒu)用户的介入。
2.交(jiāo)互模式:在这种模式(shì)下,目标机(jī)上的bootloader将通过串口或网(wǎng)络等通行手(shǒu)段(duàn)从开发主机(Host)上下(xià)载内核映像等到RAM中。可(kě)以被bootloader写到目标机(jī)上的(de)固态存储(chǔ)媒质中,或者(zhě)直接(jiē)进(jìn)入系统的(de)引导。也可以通过串口接收(shōu)用户的命令。
第一阶段:
1.初始化基(jī)本硬件;
2.把bootloader自动搬运到(dào)内存(cún)中;
3.设置堆栈指(zhǐ)针(zhēn)并(bìng)将bss段清零。为后续执行代码做准备;
第二阶段:
1.初始化本阶段要(yào)用到(dào)的(de)硬(yìng)件;
2.读取环境变(biàn)量;
3.启动:
(a)自启动模式,从Flash或通(tōng)过网络加载内核并(bìng)执行;
(b)下载模式,接收到用户的命令后执(zhí)行(háng);
