1、第6章 嵌入式系统引导引导程序与固件引导程序与固件n计算机是在程序控制下自动运行的电子设备 n系统上电或复位后,微处理器会从特定的地址读取第一条指令 n没有操作系统的简单嵌入式计算机,系统上电后,通常直接进入用户应用程序 n有操作系统的计算机中,上电后首先运行的是一个标准化的软件引导程序引导程序(Bootloader)n固化在ROM/flash中的软件,称为固件固件(Firmware)PC机的引导程序机的引导程序BIOSnBIOS(Basic Input Output System) n固化到计算机主板上的ROM芯片中的一组程序 BIOS的主要内容的主要内容 n上电自测试程序上电自测试程序。P
2、C机启动时,首先进入ROM BIOS,接着执行加电自检POST(Power-on self test) n系统参数设置系统参数设置:用于设置CMOS RAM 中的各项参数n中断服务程序中断服务程序 :BIOS中段服务程序是软件与硬件之间的一个编程接口,PC软件通过调用这些服务程序实现对硬件模块的控制 n加载操作系统加载操作系统 :在机器启动时,系统ROM BIOS首先读取磁盘引导记录进内存,然后由引导记录读取磁盘操作系统重要文件进内存,从而启动系统 BIOS的启动流程的启动流程 嵌入式系统软件的四个层次嵌入式系统软件的四个层次n引导加载程序Bootloadern操作系统内核(任务管理、内存管理
3、、设备驱动)n文件系统、图形用户界面n应用软件ARM7开发板中的固件嵌入式系统嵌入式系统Flash典型空间分配典型空间分配 嵌入式系统常见引导程序嵌入式系统常见引导程序nU-Boot,支持多种微处理器,如x86、PowerPC、ARM、MIPS等。nVIVI,韩国MIZI公司开发的专门用于ARM处理器的一种引导程序。 nBLOB,支持多种CPU,包括SA1100,SA1110,PXA255,PXA270等,用户可以根据目标板的特性进行定制。nRedBoot,一个专门为嵌入式系统定制的引导程序,最初由Redhat开发。nARMboot,一个支持ARM和StrongARM 处理器的引导程序。n用户
4、自定义用户自定义Bootloader嵌入式系统引导程序功能嵌入式系统引导程序功能n硬件初始化n提供人机交互命令n支持目标机与开发机之间的通信n支持Flash烧写n加载启动嵌入式操作系统Bootloader的两种操作模式的两种操作模式n启动加载模式启动加载模式:自动加载并启动操作系统,不需要用户参与n下载模式下载模式:用户可通过系统控制台用命令行的方式向系统发出控制命令。用户常在该模式下使用下载命令,通过串口、以太网等从开发机下载文件Bootloader程序的两个组成部分程序的两个组成部分nStage 1:存放与CPU 体系结构相关的代码体系结构相关的代码,其代码短小精悍,易升级,通常用汇编语言
5、编写nStage 2:通常用C 语言编写,可以实现更复杂的功能,具有更好的可读性和可移植性Bootloader程序运行流程程序运行流程Bootloader的的Stage 1n硬件设备初始化:屏蔽所有中断, 设置CPU 速度和时钟频率, RAM 初始化等n为加载Bootloader 的stage2 准备RAM空间n拷贝Bootloader 的stage2 到RAM空间中n设置好堆栈,为执行C 语言代码作好准备n跳转到stage2 的C 入口点Stage 1阶段的物理内存布局阶段的物理内存布局 Bootloader的的Stage 2n其它硬件设备的初始化 n检测系统内存映射 n将操作系统内核映像及
6、文件系统映像从 Flash读取到系统RAM中 n为内核设置启动参数 n调用操作系统内核 U-BOOTnU-Boot是一种应用广泛的嵌入式引导程序n由fadsrom、8xxROM及PPCBoot逐步发展演化而来n2002年11月,PPCBoot发布了最后一个版本2.0.0版,并改名为U-Boot 0.1.0n与Linux一样,U-Boot遵循GPL,是一个开放源代码软件 GPL: General Public License,通用公共许可协议通用公共许可协议U-Boot的特点的特点n开放源代码 n支持多种嵌入式操作系统 n支持多种不同体系结构的处理器 n具有较高的可靠性和稳定性 n提供丰富的用户
7、接口命令 n支持串口、网络文件下载 n丰富的设备驱动程序 n有完整的软件文档与良好的技术支持 U-Boot的命令的命令 n命令类型:命令类型:信息命令、内存命令、Flash命令、运行控制命令、网络命令、环境变量命令n命令功能:命令功能:环境参数设置、内存检测、操作系统引导、程序测试、Flash擦除与烧写 U-BOOT源文件分类源文件分类n与处理器体系结构或开发板硬件直接相关的程序目录n与处理器体系结构无关的通用函数或者驱动程序目录 nU-Boot的独立工具、二次开发例程及相关设计文档目录 U-Boot源码结构源码结构 U-BOOT启动过程启动过程课后作业课后作业n下载U-BOOT源代码及相关文档,建立开发环境,选定目标平台,尝试编译,生成目标代码。