基于 ARM 的嵌入式系统 Bootloader 启动流程
分析
来源:西部工控网
一. 引言:
PC 机,其开机后初始化处理器配置、硬件初始化等操作是由
BIOS(Basic Input /Output System)完成,但嵌入式系统来说,出于经
济性、价格方面考虑一般不配置 BIOS,我们必须自行编写完成这些工作程
序,这就是所需要开机程序。而嵌入式系统中,通常并没有像 BIOS 那样固
件程序,启动时用于完成初始化操作这段代码被称为 Bootloader 程序,整
个系统加载启动任务就完全由 Bootloader 来完成。简单说,这段程序,可
以初始化硬件设备、建立内存空间映射图(有 CPU 没有内存映射功能如
S3C44B0),将系统软硬件环境设定一个合适状态,为最终调用操作系统
内核、运行用户应用程序准备好正确环境。Bootloader 依赖于实际硬件和
应用环境,要为嵌入式系统建立一个通用、标准 Bootloader 是非常困难。
Bootloader 也依赖于具体嵌入式板级设备配置,这也就是说,两块不同嵌
入式主板而言,它们是基于同一 CPU 而构建,要想让运行一块板子上
Bootloader 程序也能运行另一块板子上,通常都需要修改 Bootloader 源
程序。
二. 启动流程
系统加电复位后,几乎所有 CPU 都从由复位址上取指令。比如,基于
ARM7TDMI 内核 CPU 复位时通常都从址 0x00000000 处取它第一条指令。
而以微处理器为核心嵌入式系统通常都有某种类型固态存储设备(比如