《第7章 嵌入式实时操作系统.pdf》由会员分享,可在线阅读,更多相关《第7章 嵌入式实时操作系统.pdf(91页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第七章 第一部分嵌入式实时操作系统核心内容RTOS的特点RTOS的体系结构实时内核RTOS的扩展组件7.1 RTOS的关键概念任务(Task):独立的相互作用的程序集合线程(Thread):任务代码中可并发执行的程序段抢占(Preemptive):执行中的任务被另一任务打断互斥(Mutual Exclusion):对共享数据的访问优先级驱动(Priority Driven):总是优先级高的任务运行优先级逆转(Priority Inversion):低优先级任务一直运行优先级继承(Priority Inheritance):排队7.2 RTOS的特点及时性可确定性并发性可信性可嵌入性可剪裁性可扩
2、展性7.3 RTOS的体系结构:单块内核硬件抽象层内存中断通信时钟、定时器任务管理 管理设备驱动应用程序系统服务接口硬件层调度文件系统数据库系统7.3 RTOS的体系结构:层次7.3 RTOS的体系结构:微内核7.3 RTOS的体系结构:构件RTOS编程接口信号量定时器中断管理7.3 RTOS的体系结构:多核实时内核非实时内核实时任务非实时任务非实时任务实时任务应用系统硬件环境(任务触发)任务控制块7.4 实时内核任务切换任务状态7.4 实时内核任务调度策略7.4 实时内核静态调度表驱动基于优先权的调度可抢占的调度非抢占的调度时间片的调度任务队列7.4 实时内核常用调度算法7.4 实时内核时间
3、片轮转调度(Round-Robin)速率单调调度算法(RMS)最早截至时间优先算法(EDF)多处理器调度算法速率单调调度算法7.4 实时内核a)所有任务都是周期任务。b)任务的优先级是静态的,并且反比于任务的周期;即周期越短,优先级越高。c)任务的相对截止时间等于任务的周期。d)任务之间不进行通信,也不需要同步。e)任务可以在计算的任何位置被抢占,不存在临界区。速率单调调度算法7.4 实时内核任务是可调度的充分条件是CPU的利用率 N(21/N-1)其中N为任务个数C.L.Liu,J.W.Layland,“SchedulingAlgorithmsforMultiprogramminginaHa
4、rd Real-Time Environment”ACM,1973最早截至时间优先算法7.4 实时内核a)所有任务都是周期任务。b)每个任务必须在下一次请求出现前完成,即任务周期为任务的截止时间。c)任务是独立的,即一个任务的请求不依赖于其他任务的激励或完成。d)截止时间越短的任务具有越高的优先权。e)任务可以在计算的任何位置被抢占,不存在临界区。最早截至时间优先算法7.4 实时内核任务是可调度的充分条件是:(C1/T1)+(C2/T2)+.+(Cn/Tn)1其中,Ci为任务i(i=1,2,n)的运行时间,Ti为任务i的周期优先级逆转与死锁的产生7.4 实时内核优先级逆转(priority i
5、nversion)7.4 实时内核高优先级任务需要等待低优先级任务释放资源,而低优先级任务又正在等待中等优先级任务的现象优先级逆转的避免办法7.4 实时内核优先级继承优先级天花板优先级继承协议7.4 实时内核任务2抢占任务1任务2被阻塞任务1优先级继承任务1释放资源,恢复优先级优先级天花板协议7.4 实时内核任务1优先提高至天花板任务1优先恢复,任务2执行两种协议的比较执行效率继承协议可能多次改变占有临界资源的任务的优先级,而天花板协议只需改变一次:后者效率高运行影响天花板协议阻塞中间优先级不竞争资源的任务任务间的通信7.4 实时内核信号传递数据传递消息(Messages)共享存储(Share
6、d Memory)管道(Pipes)邮箱(Mail box)RPC(Remote Procedure Call Protocol)远程过程调用协议“零拷贝”技术消息通信中断7.4 实时内核实时多任务系统可以有三种方式来处理外界的中断请求:a)中断作为任务切换b)中断作为系统调用c)中断作为前台任务时钟管理内存管理7.4 实时内核7.5 RTOS的扩展组件嵌入式GUI常用的嵌入式GUI系统7.5 RTOS的扩展组件 MicroWindows MiniGUI QT/Embedded OpenGL嵌入式网络7.5 RTOS的扩展组件 嵌入式TCP/IP 无线应用协议嵌入式网络 现场总线嵌入式网络 无
7、线传感器网络嵌入式网络无线传感器网络嵌入式文件系统7.5 RTOS的扩展组件嵌入式文件系统的特点流行的嵌入式文件系统嵌入式数据库7.5 RTOS的扩展组件嵌入式数据库的特点典型的嵌入式数据库系统嵌入式数据库的体系结构嵌入式数据库体系结构嵌入式数据库功能流媒体支持7.5 RTOS的扩展组件流媒体指在Internet/Intranet中使用流式传输技术的连续时基媒体,如:音频、视频或多媒体文件。基本原理流媒体支持常用流媒体协议流媒体支持 MPEG-4 RTP&RTCP H.264 功耗管理7.5 RTOS的扩展组件 DPM(Dynamic Power Management)技术 DVS(Dynam
8、ic Voltege Scaling动态电压调节)技术 存储器功耗管理技术7.6典型的RTOS VxWorks uC OS WinCE Embedded LinuxVxWorksTCP/IPVxWorks库函数应用系统I/O系统文件系统定时器VxWorks内核SCSI驱动SCSIBSP网络驱动串口时钟以太网口其它组件WinCEOEM层硬件层OEM适配层(OAL)配置文件Boot Loader驱动程序操作系统层多媒体支持设备管理GWES通信和网络服务Kernel核心DLL对象存储应用和服务开发应用层Internet客户服务WinCE应用客户应用用户接口小结:嵌入式OS与通用OS体系结构整体、层次
9、、微内核、构件化整体、层次、微内核、构件化TCB结构增加时间参数:周期、截止时间等名称、ID、优先级、当前状态、上下文等任务调度静态调度表、固定优先级(RM类)、动态优先级(EDF类);原则上用户不能改变优先级基于优先级的调度;时间片轮转调度;系统态优先于用户态;优先级可用户改变内存管理主要使用静态内存划分采用虚拟存储机制中断管理多数中断处理转化为周期性查询任务;执行次序由统一考虑的优先级决定中断处理优先于任务执行小结:嵌入式OS与通用OS共享资源问存在优先级逆转问题信号量机制处理互斥访问系统开销所有系统操作的时间开销有界,需要量化系统开销基本可忽略系统可重入性系统内核可在调度点重入,实时性保
10、证强核心态不可重入,系统执行可预测性弱第七章第二部分板级支持包与系统引导核心内容 嵌入式软件运行过程 板级支持包(BSP)RTOS的引导模式 Boot Loader嵌入式软件运行流程上电复位上电复位系统升级系统升级引导引导/升级系统升级系统系统初始化系统初始化应用初始化应用初始化多任务应用多任务应用板级初始化板级初始化远程升级远程升级本地升级本地升级基于多任务操作系统的嵌入基于多任务操作系统的嵌入式软件的主要运行流程式软件的主要运行流程该运行流程主要分为该运行流程主要分为5个阶段个阶段嵌入式软件运行流程 上电复位、板级初始化阶段 嵌入式系统上电复位后完成板级初始化工作。嵌入式系统上电复位后完成
11、板级初始化工作。板级初始化程序具有完全的硬件特性,一般采用汇编语言实现。不同的嵌入式系统,板级初始化时要完成的工作具有一定的特殊性,但以下工作一般是必须完成的:板级初始化程序具有完全的硬件特性,一般采用汇编语言实现。不同的嵌入式系统,板级初始化时要完成的工作具有一定的特殊性,但以下工作一般是必须完成的:CPU中堆栈指针寄存器的初始化。中堆栈指针寄存器的初始化。BSS段(段(Block Storage Space表示未被初始化的数据)的初始化。表示未被初始化的数据)的初始化。CPU芯片级的初始化:中断控制器、内存等的初始化。芯片级的初始化:中断控制器、内存等的初始化。返回返回返回返回嵌入式软件运
12、行流程 系统引导/升级阶段 根据需要分别进入系统软件引导阶段或系统升级阶段。根据需要分别进入系统软件引导阶段或系统升级阶段。软件可通过测试通信端口数据或判断特定开关的方式分别进入不同阶段。软件可通过测试通信端口数据或判断特定开关的方式分别进入不同阶段。嵌入式软件运行流程 系统引导阶段系统引导有几种情况:系统引导有几种情况:将系统软件从将系统软件从NOR Flash中读取出来加载到中读取出来加载到RAM中运行:这种方式可以解决成本及中运行:这种方式可以解决成本及Flash速度比速度比RAM慢的问题。软件可压缩存储在慢的问题。软件可压缩存储在Flash中。中。不需将软件引导到不需将软件引导到RAM
13、中而是让其直接在中而是让其直接在NorFlash上运行,进入系统初始化阶段。上运行,进入系统初始化阶段。将软件从外存(如将软件从外存(如NandFlash、CF卡、卡、MMC等)中读取出来加载到等)中读取出来加载到RAM中运行:这种方式的成本更低。中运行:这种方式的成本更低。嵌入式软件运行流程 系统升级阶段 进入系统升级阶段后系统可通过进入系统升级阶段后系统可通过网络进行远程升级网络进行远程升级或通过或通过串口进行本地升级串口进行本地升级。远程升级远程升级一般支持一般支持TFTP、FTP、HTTP等方式。等方式。本地升级本地升级可通过可通过Console口使用超级终端或特定的升级软件进行。口使
14、用超级终端或特定的升级软件进行。返回返回返回返回嵌入式软件运行流程 系统初始化阶段 在该阶段进行操作系统等系统软件各功能部分必需的初始化工作,如根据系统配置初始化数据空间、初始化系统所需的接口和外设等。在该阶段进行操作系统等系统软件各功能部分必需的初始化工作,如根据系统配置初始化数据空间、初始化系统所需的接口和外设等。系统初始化阶段需要按特定顺序进行,如首先完成内核的初始化,然后完成网络、文件系统等的初始化,最后完成中间件等的初始化工作。系统初始化阶段需要按特定顺序进行,如首先完成内核的初始化,然后完成网络、文件系统等的初始化,最后完成中间件等的初始化工作。返回返回返回返回嵌入式软件运行流程
15、应用初始化阶段应用初始化阶段在该阶段进行应用任务的创建,信号量、消息队列的创建和与应用相关的其它初始化工作。在该阶段进行应用任务的创建,信号量、消息队列的创建和与应用相关的其它初始化工作。多任务应用运行阶段多任务应用运行阶段各种初始化工作完成后,系统进入多任务状态,操作系统按照已确定的算法进行任务的调度,各应用任务分别完成特定的功能。各种初始化工作完成后,系统进入多任务状态,操作系统按照已确定的算法进行任务的调度,各应用任务分别完成特定的功能。7.7 板级支持包 BSP的概念 BSP中驱动程序 BSP和BIOS的区别 RTOS的BSP一、BSP的概念BSP是嵌入式系统的基础部分,也是实现系统可
16、移植性的关键。它负责上电时的硬件初始化、启动RTOS或应用程序模块、提供底层硬件驱动,为上层软件提供访问底层硬件的手段。应用程序嵌入式中间件嵌入式操作系统BSP嵌入式中间件板级初始化串口驱动LCD驱动键盘驱动Flash驱动以太网驱动其他驱动图7.2 嵌入式系统结构中的BSP二、BSP中驱动程序1、驱动程序的概念2、驱动程序基本功能1)对设备初始化和释放。2)对设备进行管理。3)读取应用程序传送给设备文件的数据,并回送应用程序请求的数据。4)检测和处理设备出现的错误。3、驱动程序的运作过程三、BSP和BIOS的区别1、PC机主板上的BIOS开始部分所做工作和BSP比较类似,主要是负责在电脑开启时
17、检测、初始化系统设备(设置栈指针,中断分配,内存初始化等)、装入操作系统。但是BIOS不包含设备驱动程序,而BSP却包含。2、BIOS不可修改;BSP可以编程修改四、RTOS的BSP最基本的BSP仅提供CPU复位、初始化、驱动串口和必要的时钟处理功能。VxWorks的BSP1)初始化A)CPU InitB)Board InitC)System Init2)驱动程序A)系统软件相关的驱动程序B)应用相关的驱动程序7.8 RTOS的引导模式 需要Boot Loader的引导模式 不需要Boot Loader的引导模式 操作系统引导实例在嵌入式系统的应用过程中,针对不同的应用环境,对时间效率和空间效
18、率有不同的要求。一、需要Boot Loader的引导模式对于采用高性能RAM的系统,RAM空间有一定限制,此时一般采用Boot Loader引导方式。二、不需要Boot Loader的引导模式对于时间效率要求较高的系统,通常要求系统能够快速启动。直接在NorFlash或ROM系列可以做主存的非易失性存储介质中运行,以达到较快的启动速度。三、操作系统引导实例Usr Root()RAMRAMCACHE7.5 Vxworks1.ROM中运行的VxWorks写入ROM中的VxWorks是非压缩的,不需要解压,系统直接跳到ROM的首地址,运行VxWorks。VxWorks在ROM中运行主要是为了节省RA
19、M空间,使应用程序有更大的空间运行。ROM中运行的VxWorks优点是启动速度快,缺点是运行速度慢。romStart()romStart()usrInit()sysHwInit()KernelInit()usrRoot()romInit.sbootInit.cusrConfig.c1.2.3.tUsrRoot4.KernelInittUstRoot1.2.3./1.2.3.1.2.MMU3.4.I/O5.6.7.WDB agent8.7.6 ROMVxWorks1.2.3.cache4.2.RAM中运行的VxWorks 写入ROM或Flash中的BootROM Image或VxWorks Im
20、age是压缩的,需要先拷贝、解压所有的text和data到RAM的RAM_LOW_ADRS中,然后运行VxWorks。romInit()romStart()usrInit()sysHwInit()KernelInit()usrRoot()romInit.sbootInit.cusrConfig.c1.2.3.tUsrRoot4.KernelInittUstRoot1.2.3./1.2.3.cache4.1.2.3.1.2.MMU3.4.I/O5.6.7.WDB agent8.7.7 RAMVxWorkssysInit()sysaLib.s1.2.3.7.9 Boot Loader Boot L
21、oader概念 Boot Loader的开发一、一、Boot Loader概念概念Boot Loader是在操作系统内核运行之前执行的一段小程序。它将操作系统内核从外部存储介质拷贝到内存中,并跳转到内核的首条指令。在嵌入式系统中,Boot Loader严重依赖于硬件,几乎不可能建立一个通用的 Boot Loader二、Boot Loader的开发1、使用第三方Boot Loader工具2、基于RTOS自己开发Boot Loader。1、流行的第三方Boot Loader工具1)u-bootU-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSR
22、OM、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。较高的可靠性和稳定性。高度
23、灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等。丰富的设备驱动源码,如串口、以太网、SDRAM、Flash、LCD、NVRAM、EEPROM、RTC、键盘等。较为丰富的开发调试文档与强大的网络技术支持。U-Boot支持的主要功能系统引导方面 支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统、支持NFS挂载、从Flash中引导压缩或非压缩系统内核。基本辅助功能 强大的操作系统接口功能;可灵活设置、传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,尤对Linux支持最为强劲。支持目标板环境参数多种存储方式,如Flash、NVRAM、EEP
24、ROM。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语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。Asta
25、ge 1(start.S代码结构代码结构)U-Boot的stage1代码通常放在start.S文件中,用汇编语言写成,其主要代码部分如下:定义入口。由于一个可执行的Image必须有一个入口点,并且只能有一个全局入口,通常这个入口放在ROM(或Flash)的0 x0000 0000地址,因此,必须通知编译器以使其知道这个入口,该工作可通过修改连接器脚本来完成。设置异常向量(Exception Vector)设置CPU的速度、时钟频率及中断控制寄存器。初始化内存控制器。将ROM中的程序复制到RAM中。初始化堆栈。转到RAM中执行,该工作可使用指令ldrpc来完成。Bstage 2 Libarm/b
26、oard.c中的start armboot是语言开始的函数,也是整个启动代码中语言的主函数,同时还是整个U-Boot(armboot)的主函数,该函数主要完成如下操作:调用一系列的初始化函数。初始化Flash设备。初始化系统内存分配函数。如果目标系统拥有Nand设备,则初始化Nand设备。如果目标系统有显示设备,则初始化该类设备。初始化相关网络设备,填写IP、MAC地址等。进入命令循环(即整个boot的工作循环),接受用户从串口输入的命令,然后进行相应的工作。2)GRUBGRUB(GRand Unified Bootloader)是一个将引导装载程序安装到主引导记录的程序,主引导记录位于硬盘的
27、开始扇区,它允许使用位于主引导记录区中特定的指令来装载一个GRUB菜单或GRUB命令环境。装载GRUB和操作系统的过程描述如下:A)装载基本的引导装载程序B)装载第二引导装载程序C)装载在一个特定分区上的操作系统,如linux内核。3)LILO同GRUB一样,LILO是Linux自带的一个优秀的引导管理器,使用它可以方便地引导一台计算机上的多个操作系统。2、Win CE 的Boot Loader1)Win CE 操作系统bootloader简介x86平台的Boot Loader:A)x86 ROM Boot LoaderB)x86 BIOS Boot LoaderC)MSDOSLoadcepc
28、2)WindowsCE下Boot Loader的组成A)OEM启动代码(OEM startup code)OEM启动代码是最先执行的部分,它的功能是初始化内存寄存器、设置CPU频率、初始化高速缓存等。之后它跳转到主代码中执行。B)主代码(main code)i、镜像下载代码,通过并口或者网卡来实现从远程计算机下载nk.bin;ii、串口调试代码,包含对串口的读写函数,用户调用这些函数就可以通过串口在远程计算机和本地计算机之间通信;iii、写Flash代码,包含写镜像到Flash的函数;硬件监控代码。图7.8 WinCE 操作系统BootLoader执行过程StartUp()BootLoader
29、Main()OEMDebugInit()OEMPlatformInit()OEMPreDownload()DownloadImage()OEMLaunch()OEMReadData()OEMShowProgress()OEMMapMemAddr()OEMIsFLashAddr()OEMWriteFlash()OEMFinishEraseFlash()OEMStartEraseFlash()OEMContinueEraseFlash()3、Win CE 操作系统中Boot Loader开发Win CE操作系统中Boot Loader开发的主要步骤:a)确定目标设备硬件b)创建Boot Loade
30、r代码文件夹、创建命令行构建环境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 Loaderj)实现串口调试函数、创建驱动程序全局缓冲区和启动函数k)实现OEMPlatformInit函数并重新编辑Boot Loader的source文件l)实现与以太网控制器相关的函数、OEMPreDownload函数m)测试Boot Loade
31、r的通信、验证映像文件的下载n)实现OEMLaunch、OEMIsFlashAddr、OEMMapMemAddr函数u)实现Flash存储器擦除操作v)实现OEMWriteFlash函数w)修改eboot.bib文件产生一个可下载的映像小结本章概述了包括概念、功能在内的有关嵌入式系统BSP和引导相关的基础知识,重点介绍了嵌入式运行过程、BSP概念、BSP中驱动程序、BSP与BIOS的区别、RTOS中BSP、RTOS的引导模式、引导实例、Boot Loader概念以及基于WinCE操作系统的Boot Loader开发。思考题1、嵌入式软件运行过程有几个阶段?每个阶段的主要工作是什么?2、什么是BSP?BSP与BIOS有什么异同?3、分别说出Vxworks与RTEMS的BSP包含内容有那些?4、嵌入式操作系统有那两种引导模式?并比较两种引导模式的优缺点。5、Vxworks启动过程分为那几个阶段?每个阶段的工作是什么?6、什么是Boot Loader?流行的第三方Boot Loader工具有那些?7、WinCE操作系统中Boot Loader由那些部分组成?8、U-boot支持的主要功能包括那些?
限制150内