Boot Loader 概述 简单地说,在操作系统内核运行之前,通过一小程序,可以初始化硬件设备、建立内存空间的映射图等,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核配置好相应的环境,也可以下载文件到系统板上的SDRAM,对 Flash进行擦除与编程,这个小程序一般称为 Boot Loader
可以说,一个功能完善的 Boot Loader已经相当于一个微型的操作系统了
Boot Loader作为系统复位或上电后首先运行的代码,一般应写入Flash存储器并从起始物理地址 0x0开始
Boot Loader是非常依赖于硬件而实现的,而且根据实现的功能不同,其复杂程度也各不相同
一个简单的 Boot Loader可以只完成 USB口的初始化,而功能完善的 Boot Loader可以支持比较复杂的命令集,对系统的软硬件资源进行合理的配置与管理
因此,建立一个通用的 Boot Loader几乎是不可能的
系统初始化代码直接对 ARM微处理器内核及硬件控制器编程,多采用汇编语言编程,初始化代码一般应包括如下典型任务: 1
定义程序入口点; 2
设置异常和中断向量表; 3
初始化存储设备; 4
初始化堆栈指针寄存器; 5
初始化用户执行环境; 6
呼叫主应用程序
1 定义程序入口 初始化代码必须定义整个程序的入口点
通过伪指令 Entry 指定编译器保留该段代码,同时配合链接器的设置,确定整个程序的入口点
2 设置异常和中断向量表 1
3 初始化存储设备 1
存储器类型和时序的配置 2
存储器的地址分配与地址重映射 一种典型的存储器地址重映射过程描述如下:当系统上电或复位以后,PC指针指向 0x0,程序从 0x0地址开始执行,因此,为了能正确读取代码,要求此时 Flash(或其它类型的 ROM)的起始地址为 0x0
但 Flash