Bootloader的概念:
Bootloader就是在操作系统内核运行之前运行的一段程序,类似于PC机中的BIOS程序。
Bootloader的功能就是完成硬件设备的初始化、建立内存空间的映射图的功能,将系统的软硬件环境带到一个合适的状态,为最终调用系统内核做好准备。
嵌入式中的Bootloader一般都非常依赖于硬件,建立一个通用的Bootloader几乎是不可能的。Bootloader是引导与加载内核镜像的工具,需要具备以下几个功能:
1、初始化RAM(必须)
Bootloader必须能够初始化RAM,因为将来系统要通过它保存一些Volatile数据,但具体实现要依赖与具体的CPU以及硬件系统。
2、初始化串口(可选,推荐)
Bootloader应该要初始化以及使能至少一个串口,通过它与控制台联系进行一些debug的工作,甚至与PC通信。
3、启动内核镜像(必需)
根据内核镜像保存的存储介质不同,可以有两种启动方式,FALSH启动以及RAM启动,但无论是哪种启动方式,下面的系统状态必须得到满足。
(1)CPU寄存器的设置。
R0=0;
R1=机器类型;
R2=启动参数标记列表在RAM中的起始地址;
这3个寄存器的设置是在最后启动内核时通过启动参数来传递完成的。
(2)CPU模式。
关闭中断,属于SVC模式。
Bootloader中没有必要支持中断的实现,这属于内核机制以及设备驱动管理的管理范畴;
SVC模式是系统的一种保护