嵌入式系统及应用——第6章板级支持包与系统引导.ppt_第1页
嵌入式系统及应用——第6章板级支持包与系统引导.ppt_第2页
嵌入式系统及应用——第6章板级支持包与系统引导.ppt_第3页
嵌入式系统及应用——第6章板级支持包与系统引导.ppt_第4页
嵌入式系统及应用——第6章板级支持包与系统引导.ppt_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章,板级支持包与系统引导,核心内容,嵌入式软件运行过程 板级支持包(BSP) RTOS的引导模式 Boot Loader,嵌入式软件运行流程,上电复位,系统升级,引导/升级系统,系统初始化,应用初始化,多任务应用,板级初始化,远程升级,本地升级,基于多任务操作系统的嵌入式软件的主要运行流程 该运行流程主要分为5个阶段,嵌入式软件运行流程,上电复位、板级初始化阶段 嵌入式系统上电复位后完成板级初始化工作。 板级初始化程序具有完全的硬件特性,一般采用汇编语言实现。不同的嵌入式系统,板级初始化时要完成的工作具有一定的特殊性,但以下工作一般是必须完成的: CPU中堆栈指针寄存器的初始化。 BSS段(Block Storage Space表示未被初始化的数据)的初始化。 CPU芯片级的初始化:中断控制器、内存等的初始化。,嵌入式软件运行流程,系统引导/升级阶段 根据需要分别进入系统软件引导阶段或系统升级阶段。 软件可通过测试通信端口数据或判断特定开关的方式分别进入不同阶段。,嵌入式软件运行流程,系统引导阶段 系统引导有几种情况: 将系统软件从NOR Flash中读取出来加载到RAM中运行:这种方式可以解决成本及Flash速度比RAM慢的问题。软件可压缩存储在Flash中。 不需将软件引导到RAM中而是让其直接在NorFlash上运行,进入系统初始化阶段。 将软件从外存(如NandFlash、CF卡、MMC等)中读取出来加载到RAM中运行:这种方式的成本更低。,嵌入式软件运行流程,系统升级阶段 进入系统升级阶段后系统可通过网络进行远程升级或通过串口进行本地升级。 远程升级一般支持TFTP、FTP、HTTP等方式。 本地升级可通过Console口使用超级终端或特定的升级软件进行。,嵌入式软件运行流程,系统初始化阶段 在该阶段进行操作系统等系统软件各功能部分必需的初始化工作,如根据系统配置初始化数据空间、初始化系统所需的接口和外设等。 系统初始化阶段需要按特定顺序进行,如首先完成内核的初始化,然后完成网络、文件系统等的初始化,最后完成中间件等的初始化工作。,嵌入式软件运行流程,应用初始化阶段 在该阶段进行应用任务的创建,信号量、消息队列的创建和与应用相关的其它初始化工作。 多任务应用运行阶段 各种初始化工作完成后,系统进入多任务状态,操作系统按照已确定的算法进行任务的调度,各应用任务分别完成特定的功能。,6.2 板级支持包,BSP的概念 BSP中驱动程序 BSP和BIOS的区别 RTOS的BSP,一、BSP的概念 BSP是嵌入式系统的基础部分,也是实现系统可移植性的关键。它负责上电时的硬件初始化、启动RTOS或应用程序模块、提供底层硬件驱动,为上层软件提供访问底层硬件的手段。,BSP是板级支持包(Board Support Package)的缩写,是通常用在嵌入行业中的一个术语,用来代表在一个特殊硬件平台上快速构建一个嵌入操作系统所需的原始资料或者二进制软件包。BSP的作用是支持操作系统,使之能够更好的运行于硬件平台。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,包括Windows CE、Linux、Vxworks等。SoC/CPU厂商应向其芯片的用户提供一个基本的BSP包,以支持主板厂商或整机制造厂商在此基础上定制和开发各种商用终端产品。,二、BSP中驱动程序 1、驱动程序的概念 2、驱动程序基本功能 1) 对设备初始化和释放。 2) 对设备进行管理。 3) 读取应用程序传送给设备文件的数据,并回送应用程序请求的数据。 4) 检测和处理设备出现的错误。,3、驱动程序的运作过程,三、BSP和BIOS的区别 1、PC机主板上的BIOS开始部分所做工作和BSP比较类似,主要是负责在电脑开启时检测、初始化系统设备(设置栈指针,中断分配,内存初始化等)、装入操作系统。但是BIOS不包含设备驱动程序,而BSP却包含。 2、BIOS不可修改;BSP可以编程修改,四、RTOS的BSP 最基本的BSP仅提供CPU复位、初始化、驱动串口和必要的时钟处理功能。 1、VxWorks的BSP 1) 初始化 A) CPU Init B) Board Init C) System Init 2) 驱动程序 A) 系统软件相关的驱动程序 B) 应用相关的驱动程序,2、RTEMS的BSP 1) RTEMS中BSP的定义: RTEMS的板级支持包是启动代码、 连接器脚本和编译规范文件 (specs)和设备驱动程序的集合。,2) RTEMS中BSP的开发 A) 建立开发环境 B) 选择BSP模板 C) 建立新BSP目录 D) 建立BSP配置文件 E) 修改makefile文件 F) 修改启动代码 G) 配置RTEMS H) 调试和测试,在嵌入式系统的应用过程中,针对不同的应用环境,对时间效率和空间效率有不同的要求。 一、需要Boot Loader的引导模式 对于采用高性能RAM的系统,RAM空间有一定限制,此时一般采用Boot Loader引导方式。 二、不需要Boot Loader的引导模式 对于时间效率要求较高的系统,通常要求系统能够快速启动。直接在NorFlash或ROM系列可以做主存的非易失性存储介质中运行,以达到较快的启动速度。,6.3 RTOS的引导模式,三、操作系统引导实例,ROM中运行的VxWorks 写入ROM中的VxWorks是非压缩的,不需要解压,系统直接跳到ROM的首地址,运行VxWorks。 VxWorks在ROM中运行主要是为了节省RAM空间,使应用程序有更大的空间运行。 ROM中运行的VxWorks优点是启动速度快,缺点是运行速度慢。,2. RAM中运行的VxWorks 写入ROM或Flash中的BootROM Image或VxWorks Image是压缩的,需要先拷贝、解压所有的text和data到RAM的RAM_LOW_ADRS中,然后运行VxWorks。,6.4 Boot Loader,Boot Loader概念 Boot Loader的开发,一、Boot Loader概念 Boot Loader是在操作系统内核运行之前执行的一段小程序。它将操作系统内核从外部存储介质拷贝到内存中,并跳转到内核的首条指令。在嵌入式系统中,Boot Loader严重依赖于硬件,几乎不可能建立一个通用的 Boot Loader,Bootloader是在操作系统内核运行前运行地一段小程序。通过这段小程序,可以对硬件设备,如CPU、SDRAM、Flash、串口等进行初始化,也可以下载文件到系统板、对Flash进行擦除和编程,真正起到引导和加载内核镜像的作用,但是随着嵌入式系统的发展,Bootloader已经逐渐在基本功能的基础上,进行了扩展,Bootloader可以更多地增加对具体系统的板级支持,即增加一些硬件模块功能上的使用支持,以方便开发人员进行开发和调试。从这个层面上看,功能扩展后Bootloader可以虚拟地看成是一个微小的系统级的代码包。,Bootloader是依赖于硬件而实现的,特别是在嵌入式系统中。不同的体系结构需求的Bootloader是不同的;除了体系结构,Bootloader还依赖于具体的嵌入式板级设备的配置。也就是说,对于两块不同的嵌入式板而言,即使它们基于相同的CPU构建,运行在其中一块电路板上的Bootloader,未必能够运行在另一块电路开发板上。,BootLoader为系统复位或上电后首先运行的代码,一般应写在起始物理地址0x0开始。Bootloader的启动过程可以是单阶段的,也可以是多阶段的。通常多阶段的Bootloader能提供更为复杂的功能,以及更好的可移植性。从固态存储设备上启动的Bootloader大多数是二阶段的启动过程,也即启动过程可以分为stage 1和stage 2两部分。,二、Boot Loader的开发 1、使用第三方Boot Loader工具 2、基于RTOS自己开发Boot Loader。,1 、流行的第三方Boot Loader工具 1) u-boot U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。 U-Boot不仅仅支持嵌入式linux系统的引导,目前支持的目标操作系统还有OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS。,U-Boot的特点 开放源码。 支持多种嵌入式操作系统内核,如Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS。 支持多个处理器系列,如PowerPC、ARM、x86、MIPS、XScale。 较高的可靠性和稳定性。 高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等。 丰富的设备驱动源码,如串口、以太网、SDRAM、Flash、LCD、NVRAM、EEPROM、RTC、键盘等。 较为丰富的开发调试文档与强大的网络技术支持。,U-Boot支持的主要功能 系统引导方面 支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统、支持NFS挂载、从Flash中引导压缩或非压缩系统内核。 基本辅助功能 强大的操作系统接口功能;可灵活设置、传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,尤对Linux支持最为强劲。 支持目标板环境参数多种存储方式,如Flash、NVRAM、EEPROM。,CRC32校验,可校验FLASH中内核、RAMDISK镜像文件是否完好。 设备驱动 提供串口、SDRAM、Flash、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PCI、RTC等设备的驱动支持。 上电自检功能 SDRAM、Flash大小自动检测;SDRAM故障检测;CPU型号。 特殊功能 XIP内核引导。,U-Boot 工作过程 U-Boot工作分为stage1和stage2两部分。依赖于CPU体系结构的代码(如设备初始化代码等)通常都放在stage1且可以用汇编语言来实现,而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。,Astage 1 (start.s代码结构) U-Boot的stage1代码通常放在start.S文件中,用汇编语言写成,其主要代码部分如下: 定义入口。由于一个可执行的Image必须有一个入口点,并且只能有一个全局入口,通常这个入口放在ROM(或Flash)的0x0000 0000地址,因此,必须使编译器知道这个入口,该工作可通过修改连接器脚本来完成。 设置异常向量(Exception Vector) 设置CPU的速度、时钟频率及中断控制寄存器。 初始化内存控制器。 将ROM中的程序复制到RAM中。 初始化堆栈。 转到RAM中执行,该工作可使用指令ldrpc来完成。,Bstage 2 Libarm/board.c中的start armboot是语言开始的函数,也是整个启动代码中语言的主函数,同时还是整个U-Boot(armboot)的主函数,该函数主要完成如下操作: 调用一系列的初始化函数。 初始化Flash设备。 初始化系统内存分配函数。 如果目标系统拥有Nand设备,则初始化Nand设备。 如果目标系统有显示设备,则初始化该类设备。 初始化相关网络设备,填写IP、MAC地址等。 进入命令循环(即整个boot的工作循环),接受用户从串口输入的命令,然后进行相应的工作。,2) GRUB GRUB(GRand Unified Bootloader)是一个将引导装载程序安装到主引导记录的程序,主引导记录位于硬盘的开始扇区,它允许使用位于主引导记录区中特定的指令来装载一个GRUB菜单或GRUB命令环境。 装载GRUB和操作系统的过程描述如下: A) 装载基本的引导装载程序 B) 装载第二引导装载程序 C) 装载在一个特定分区上的操作系统, 如linux内核。,3) LILO 同GRUB一样,LILO是Linux自带的一个优秀的引导管理器,使用它可以方便地引导一台计算机上的多个操作系统。,2 、Win CE 的Boot Loader 1) Win CE 操作系统bootloader简介 x86平台的Boot Loader: A) x86 ROM Boot Loader B) x86 BIOS Boot Loader C) MSDOSLoadcepc,2) WindowsCE下Boot Loader的组成 A)OEM启动代码(OEM startup code) OEM启动代码是最先执行的部分,它的功能是初始化内存寄存器、设置CPU频率、初始化高速缓存等。之后它跳转到主代码中执行。,B)主代码(main code) i、 镜像下载代码,通过并口或者网卡来实现从远程计算机下载nk.bin; ii、 串口调试代码,包含对串口的读写函数,用户调用这些函数就可以通过串口在远程计算机和本地计算机之间通信; iii、写Flash代码,包含写镜像到Flash的函数;硬件监控代码。,3 、Win CE 操作系统中Boot Loader开发,Win CE操作系统中Boot Loader开发的主要步骤 a) 确定目标设备硬件 b) 创建Boot Loader代码文件夹、创建命令行构建环境 c) 创建sources文件和makefile文件 d) 编译Boot Loader源代码 e) 实现Startup函数 f) 实现Boot Loader的Main代码 g) 添加Boot Loader OEM函数的定义并重新编辑Boot Loader的source文件 h) 创建Boot Loader的BIB文件 i) 再次构建Boot Loader,j) 实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论