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