《[精品]嵌入式系统设计与实例开发mdash;mdash;ARM与COSⅡ第三讲 实时嵌.ppt》由会员分享,可在线阅读,更多相关《[精品]嵌入式系统设计与实例开发mdash;mdash;ARM与COSⅡ第三讲 实时嵌.ppt(23页珍藏版)》请在三一办公上搜索。
1、嵌入式系统设计与实例开发ARM与C/OS-第三讲 实时嵌入式操作系统简介,一、嵌入式实时操作系统C/OS二、嵌入式Linux三、WinCE,第三讲、嵌入式实时操作系统简介,一、嵌入式实时操作系统C/OS,1、C/OSmicro C O S,微控制器操作系统2、C/OS简介美国人Jean Labrosse 1992年完成应用面覆盖了诸多领域,如照相机、医疗器械、音响设备、发动机控制、高速公路电话系统、自动提款机等 1998年C/OS-II,目前的版本C/OS-II V2.61 网站www.ucos-II.com,公开源代码可移植性(Portable)绝大部分 C/OS-II的源码是用移植性很强的
2、ANSI C写的。和微处理器硬件相关的那部分是用汇编语言写的。汇编语言写的部分已经压到最低限度,使得 C/OS-II便于移植到其他微处理器上。C/OS-II可以在绝大多数8位、16位、32位以至64位微处理器、微控制器、数字信号处理器(DSP)上运行。可固化(ROMable)C/OS-II是为嵌入式应用而设计的,这就意味着,只要读者有固化手段(C编译、连接、下载和固化),C/OS-II可以嵌入到读者的产品中成为产品的一部分。可裁剪(Scalable)可以只使用 C/OS-II中应用程序需要的那些系统服务。也就是说某产品可以只使用很少几个 C/OS-II调用,而另一个产品则使用了几乎所有 C/O
3、S-II的功能,这样可以减少产品中的 C/OS-II所需的存储器空间(RAM和ROM)。这种可剪裁性是靠条件编译实现的。,C/OS的性能特点,占先式(Preemptive)多任务 C/OS-II可以管理64个任务,然而,目前这一版本保留8个给系统。应用程序最多可以有56个任务可确定性 全部 C/OS-II的函数调用与服务的执行时间具有可确定性。任务栈 每个任务有自己单独的栈,C/OS-II允许每个任务有不同的栈空间,以便压低应用程序对RAM的需求。系统服务 C/OS-II提供很多系统服务,例如邮箱、消息队列、信号量、块大小固定的内存的申请与释放、时间相关函数等。中断管理 中断可以使正在执行的任
4、务暂时挂起,如果优先级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达255层。稳定性与可靠性,C/OS的性能特点,内核结构任务管理时间管理任务之间通信与同步C/OS的移植,C/OS的内核,总结,不存在一个内核任务/实体,内核的管理是通过调用系统函数来实现的。每个任务有自己的堆栈空间。内核对任务的占先式调度不会干扰每个任务的总的运行结果。,uC/OS的改进,固定的基于优先级的调度,不支持时间片,使用起来不方便。一个任务的基础上增加一个基于时间片的微型调度核在对临界资源的访问上使用关闭中断实现,没有使用CPU提供的硬件指令,例如测试并置位。系统时钟中断,没有
5、提供用户使用定时器,可以借鉴linux的定时器加以修改可以加上文件系统和TCP/IP协议栈,二、嵌入式Linux,二、嵌入式Linux,Linux系统是层次结构且内核完全开放强大的网络支持功能 Linux具备一整套开发工具链 Linux具有广泛的硬件支持特性 同步跟踪快 遵循通用国际标准,便于程序的移植,Linux的结构,类UNIX,板级支持包(BSP)是在嵌入式系统中频繁使用的一个概念。BSP是介于操作系统和系统硬件之间的一个抽象层,确切的说是操作系统的一部分。通常所指的BSP包括启动代码和系统相关的驱动和程序。BSP的作用使硬件对于操作系统变得透明,从而使嵌入式系统和它的应用程序能够运行在
6、不同的硬件平台上。,嵌入式Linux,嵌入式Linux(Embedded Linux)是指对Linux经过小型化裁剪后,能够固化在容量只有几百K字节或几兆字节的存储器芯片或单片机中,应用于特定嵌入式场合的专用Linux操作系统。嵌入式Linux的开发和研究是目前操作系统领域的一个热点。RTLinuxCLinux,Linux作为嵌入式应用的缺点,首先linux最初设计为通用操作系统,其目标是追求整体最佳性能,所以不能很好处理实时任务;其次,如何精简linux适用于嵌入式环境也是一个难题。,嵌入式linux的研究内容,嵌入式linux内核技术 嵌入式库技术 开发环境技术 嵌入式应用 BIOS和bo
7、ot loader启动加载程序 设备驱动技术图形界面技术,几种嵌入式Linux,Hardhat linux Hardhat Linux是由MontaVista公司开发产品,是目前最具影响力嵌入式Linux。MontaVista通过直接修改内核来扩充linux内核的实时性。RTlinux RTlinux是FSMLabs16开发的硬实时嵌入式linux。RTlinux使用双内核结构;在底层使用一个硬实时内核,linux作为该内核的空闲任务;当有实时任务时,通过硬实时内核调度该任务;没有其他任务时,则运行普通linux。uClinux uClinux是针对无mmu(存储器管理单元)微控制领域而设计的
8、Linux系统。u是希腊字母表示”小”,C是controller表示控制器。uClinux和标准linux最大的区别是内存管理上,标准linux利用CPU硬件的支持实现虚拟内存机制,而uClinux采用实存储器管理策略。,Clinux,Clinux的内核结构图如下:,对开发人员提出的更高要求,从易用性来说,uClinux的内存管理实际上是一种倒退,退回了到了UNIX早期或是Dos系统时代。开发人员不得不参与系统的内存管理。从编译内核开始,开发人员必须告诉系统这块开发板到底拥有多少的内存。由于应用程序加载时必须分配连续的地址空间,而针对可连续地址分配内存大小是受限的,开发人员在开发应用程序时必须
9、考虑内存的分配情况并关注应用程序需要运行空间的大小。另外由于采用实存储器管理策略,用户程序同内核以及其它用户程序在一个地址空间,程序开发时要保证不侵犯其它程序的地址空间,以使得程序不至于破坏系统的正常工作,或导致其它程序的运行异常。从内存的访问角度来看,开发人员的权利增大了(开发人员在编程时可以访问任意的地址空间),但与此同时系统的安全性也大为下降。从嵌入式设备实现的功能来看,嵌入式设备通常在某一特定的环境下运行,只要实现特定的功能,其功能相对简单,内存管理的要求完全可以由开发人员考虑。,内核加载方式,uCLinux的内核有两种可选的运行方式:可以在flash上直接运行,也可以加载到内存中运行
10、。后者可以减少内存需要。Flash运行方式(XIP):把内核的可执行映像烧写到flash上,系统启动时从flash的某个地址开始逐句执行。这种方法实际上是很多嵌入式系统采用的方法。内核加载方式:把内核的压缩文件存放在flash上,系统启动时读取压缩文件在内存里解压,然后开始执行,这种方式相对复杂一些,但是运行速度可能更快(RAM的存取速率要比Flash高)。,经过如上各方面的小型化改造,就形成了一个高度优化的、代码紧凑的嵌入式Linux,虽然它的体积很小,uCLinux仍然保留了Linux的大多数的优点:稳定、良好的移植性、优秀的网络功能、完备的对各种文件系统的支持、以及标准丰富的API。它的
11、主要特征如下:通用Linux API内核体积 512 KB内核+文件系统900 KB完整的TCP/IP 协议栈支持大量其它的网络协议支持各种文件系统,包括 NFS、ext2、ROMfs and JFFS、MS-DOS和FAT16/32,Clinux的特点,三、Windows CE,Windows CE是微软开发的一个开放的、可升级的32位嵌入式操作系统。它是精简的Windows 95。Windows CE的图形用户界面相当出色。与Windows 95/98、Windows NT不同:Win CE是所有源代码由微软自行开发的嵌入式操作系统,操作界面是基于Win32 API重新开发的、新型的信息设
12、备平台。Windows CE具有模块化、结构化和基于Win32应用程序接口以及与处理器无关等特点。Windows CE不仅继承了传统的Windows图形界面,并且在Windows CE平台上可以使用Windows 95/98上的编程工具(如Visual Basic、Visual C+等)、使用同样的函数、使用同样的界面网格,使绝大多数的应用软件只需简单的修改和移植就可以在Windows CE平台上继续使用。,Windows CE的特点:,具有灵活的电源管理功能,包括瞬眠/唤醒模式。使用了对象存储(object store)技术,包括文件系统、注册表及数据库。它还具有很多高性能、高效率的操作系统
13、特 性,包括按需换页、共享存储、交叉处理同步、支持大容量堆(heap)等。拥有良好的通信能力。广泛支持各种通信硬件,亦支持直接的局域连接以及拨号连接,并提供与PC、内部网以及Internet的连接,还提供与Windows 9x/NT的最佳集成和通信。,Windows CE的特点:,支持嵌套中断。允许更高优先级别的中断首先得到响应,而不是等待低级别的ISR完成。这使得该操作系统具有嵌入式操作系统所要求的实时性。更好的线程响应能力。对高级别IST(中断服务线程)的响应时间上限的要求更加严格,在线程响应能力方面的改进,帮助开发人员掌握线程转换的具体时间,并通过增强的监控能力和对硬件的控制能力帮助他们创建新的嵌入式应用程序。256个优先级别。可以使开发人员在控制嵌入式系统的时序安排方面有更大的灵活性。Windows CE的API是Win32 API的一个子集,支持近1500个Win32 API。有了这些API,足可以编写任何复杂的应用程序。当然,在Windows CE系统中,所提供的API也可以随具体应用的需求而定。,