嵌入式系统BootLoader.ppt
《嵌入式系统BootLoader.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统BootLoader.ppt(31页珍藏版)》请在三一文库上搜索。
1、嵌入式系统BootLoader,BootLoader,Boot loader是与系统硬件环境高度相关的初始化软件,它担负着初始化硬件和引导操作系统的双重责任。 每一个特定系统的Boot loader都会有所不同。 Boot loader移植是在特定硬件平台上操作系统移植至关重要的一步,是引导操作系统和根文件系统的基础。 对了解嵌入式系统底层运行机制、优化和快速启动的研究都有重要的意义。,PC 机中的引导加载程序,两部分组成 BIOS(其本质就是一段固件程序) 位于硬盘 MBR 中的 OS Boot Loader(如LILO 和 GRUB 等) 流程 BIOS 在完成硬件检测和资源分配后,将硬盘
2、 MBR 中的 Boot Loader 读到系统的 RAM 中,然后将控制权交给 OS Boot Loader Boot Loader 的主要运行任务就是将内核映象从硬盘上读到 RAM 中,然后跳转到内核的入口点去运行,即开始启动操作系统。,嵌入式系统中引导加载程序,系统的加载启动任务就完全由 Boot Loader 来完成 ARM7TDMI中,系统在上电或复位时从地址 0x00000000 处开始执行,这个地址是Boot Loader 程序 典型的嵌入式系统 boot loader Blob: boot loader object的缩写 开源,遵循GPL,很好的Linux loader,主要
3、针对ARM U-boot:universal boot loader的缩写, 开源,遵循GPL,支持ARM,MIPS,X86,Nios等处理器 可启动VxWorks, QNX, Linux等多种操作系统,Boot Loader 的概念,在操作系统内核运行之前运行的一段小程序 功能 初始化硬件设备 建立内存空间的映射图 调整系统的软硬件环境,以便操作系统内核启动 不通用 依赖于硬件CPU 依赖于主板board 不同的 CPU有不同的Boot Loader 有些 BootLoader 支持多CPU,如U-Boot支持ARM和MIPS,固态存储设备的典型空间分配结构,Boot Loader 的执行,
4、第一条指令 eg:地址 0x00000000 嵌入式系统通常有固态存储设备(比如:ROM、EEPROM 或 FLASH 等)被映射到这个预先安排的地址上 系统加电后,CPU 将首先执行 Boot Loader 程序,用来控制 Boot Loader 的设备或机制,主机和目标机之间一般通过串口建立连接 Boot Loader执行时通常会通过串口进行 I/O 如输出打印信息到串口,从串口读取用户控制字符等,Boot Loader 的启动过程,从固态存储设备上启动的 Boot Loader 大多都是 2 阶段 启动过程可以分为 stage 1和 stage 2 两部分 BOOTLOADER一般分为2
5、部分 汇编部分执行简单的硬件初始化 C语言部分负责复制数据,设置启动参数,串口通信等功能 BOOTLOADER的生命周期 1. 初始化硬件,如设置UART(至少设置一个),检测存储器等 2. 设置启动参数,告诉内核硬件的信息,如显示控制台LCD或串口、VGA等. 3. 跳转到操作系统的首地址. 4. 消亡,Boot Loader 的操作模式,启动加载模式 自主(Autonomous)模式 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行 Boot Loader 的正常工作模式 下载模式 通过串口连接或网络连接等通信手段从主机(Host)下载内核映像和根文件系统映像等。 从主机下载
6、的文件通常首先被 Boot Loader 保存到目标机的 RAM 中,然后再被 BootLoader 写到目标机上的FLASH 类固态存储设备中。 第一次安装内核与根文件系统时或对其更新时使用 通常都会向它的终端用户提供一个简单的命令行接口,BootLoader 与主机之间进行文件传输所用的通信设备及协议,通常Boot Loader 通过串口与主机之间进行文件传输 传输协议 通常是 xmodemymodemzmodem 协议中的一种 可通过以太网连接并借助 TFTP 协议来下载文件 串口传输的速度是有限的 主机提供 TFTP 服务,Boot Loader 的主要任务,stage1 通常包括以下
7、步骤 硬件设备初始化 为加载 Boot Loader 的 stage2 准备 RAM 空间 拷贝 Boot Loader 的 stage2 到 RAM 空间中 设置好堆栈 跳转到 stage2 的 C 入口点 Boot Loader 的 stage2 通常包括以下步骤 初始化本阶段要使用到的硬件设备 检测系统内存映射(memory map) 将 kernel 和根文件系统映像从 flash 上读到 RAM 空间中 为内核设置启动参数 调用内核,stage1,基本的硬件初始化,目的 为 stage2 的执行以及随后的 kernel 的执行准备好一些基本的硬件环境 1 屏蔽所有的中断 为中断提供服
8、务通常是 OS 设备驱动程序的责任,Boot Loader 的执行全过程中可以不必响应任何中断 中断屏蔽可以通过写 CPU 的中断屏蔽寄存器或状态寄存器(如 ARM 的 CPSR 寄存器)来完成 2 设置 CPU 的速度和时钟频率。 3 RAM 初始化 包括正确地设置系统的内存控制器的功能寄存器以及各内存库控制寄存器等。 4 初始化 LED 通过 GPIO 来驱动 LED,其目的是表明系统的状态是 OK 还是 Error 如板子上没有LED,那么也可以通过初始化 UART 向串口打印 Boot Loader 的 Logo 字符信息 5 关闭 CPU 内部指令数据 cache,为加载 stage
9、2 准备 RAM 空间,通常把 stage2 加载到 RAM 空间中来执行 stage2 通常是 C 语言执行代码,考虑堆栈空间 空间大小最好是 memory page 大小(通常是 4KB)的倍数 一般1M RAM 空间已经足够,地址范围可以任意安排 如 blob 就将 stage2 可执行映像从系统 RAM 起始地址 0xc0200000 开始的 1M 空间内执行 stage2_endstage2_startstage2_size 对所安排的地址范围进行测试 必须确保所安排的地址范围可读写的 RAM 空间 测试方法可以采用类似于 blob 的方法 以 memory page 为被测试单位,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 BootLoader
链接地址:https://www.31doc.com/p-3342672.html