嵌入式实时操作系统uCOSII
- 格式:pptx
- 大小:8.28 MB
- 文档页数:90
uC/OS-II北京邮电大学计算机学院 邝 坚 2011年10月教材及参考文献《嵌入式实时操作系统 uC/OS-II(第2 版)》,Jean brosse, 邵贝贝, 北航出版 社, 2003年1月uC/OS-II的主要特点实时性可确定:绝大多数系统服务的执行时间具有可确定 性,不依赖于用户应用程序Task数目的多少。
多任务、独立栈:最多64个Task,基于优先级抢占调度方 式。
每个Task有自身独立的堆栈。
可裁减性:系统最小可裁减到几K到十几K,这种裁减还可 以做到基于函数级。
可移植性:与CPU体系结构相关部分用汇编编写,其他功 能组件CPU无关。
可靠、稳定性:由整个系统设计来保证,市场验证。
美国 联邦航空管理局(FAA)认证。
开源代码:内核约5500行C代码。
可固化:面向嵌入式应用。
系统功能实时内核 任务管理 时间管理 信号量、互斥信号量管理 事件标志组管理 消息邮箱管理 消息队列管理 内存管理 …Targets x86 68k PPC CPU32 i960 SPARC ARM MIPS XScale …Typical development configurationEthernetRS-232Development HostTargetTypical scenario:1. Boot target. 4. Download object module. 2. Attach target server. 5. Test & Debug. 3. Edit & compile. 6. Return to 3 or 1 as necessaryMulti-TaskingTask是代码运行的一个映像,从系统的角 度看,Task是竞争系统资源的最小运行单 元。
Task可以使用或者等待CPU、I/O设备 及内存空间等系统资源,并独立于其它的 Task,与它们一起并发运行。
Task OperationPriority-base preemptive scheduling(基 于优先级的抢占式调度)Task调度器上锁和开锁给调度器上锁函数OSSchedlock() 用于临 时禁止任务调度,直到任务完成后调用给 调度器开锁函数OSSchedUnlock()为止。
第一章1.什么是操作系统?它应具备什么功能?操作系统是控制其他程序运行,管理系统资源并为用户提供操作界面的系统软件的集合。
功能:1.计算机硬件的封装和扩充;2.计算机资源的管理,包括处理器管理、存储器存储空间管理、外部输入输出(I/O)设备管理、文件管理、网络和通信管理、提供用户接口。
2.简述嵌入式操作系统与普通操作系统的区别。
嵌入到对象体系中,为实现对象体系智能化控制的计算机系统,简称嵌入式系统。
嵌入式系统应具有的特点是:高可靠性;在恶劣的环境或突然断电的情况下,系统仍然能够正常工作;许多嵌入式应用要求实时性,这就要求嵌入式操作系统具有实时处理能力;嵌入式系统和具体应用有机地结合在一起,它的升级换代也是具体产品同步进行;嵌入式系统中的软件代码要求高质量、高可靠性,一般都固化在只读存储器中或闪存中,也就是说软件要求固态化存储,而不是存储在磁盘等载体中。
3.什么是实时系统?对实时系统有什么要求?如果一个系统能及时响应外部事件的请求,并能在规定的时间内完成对事件的处理,这种系统称为实时系统。
对实时系统的两个基本要求:1.实时系统的计算必须产生正确的结果,称为逻辑或功能正确。
2.实时系统的计算必须在预定的时间内完成,称为时间正确。
4.什么是可剥夺内核?当一个进程正在被处理器所运行时,其他就绪进程可以按照事先规定的规定的规则,强行剥夺正在运行进程的处理器使用权,而使自己获得处理器使用权并得以运行。
5.计算:RM 等三种算法;实时进程的可调度性。
一个事件发生周期为T =200ms ,一般需要运行50ms 才完毕。
试按RM 算法确定该进程的优先级别prio 。
答:如果取k=1,根据T=200ms=0.2S ,则T k prio1=结果:prio=5。
假如有三个同时发生的周期型进程:进程1,进程2,进程3,周期分别为P1=70ms ,P2=80ms ,P3=30ms ,它们完成任务的时间分别为:C1=20ms ,C2=15ms ,C3=10ms 。
第一章:范例在这一章里将提供三个范例来说明如何使用 µC/OS-II。
笔者之所以在本书一开始就写这一章是为了让读者尽快开始使用 µC/OS-II。
在开始讲述这些例子之前,笔者想先说明一些在这本书里的约定。
这些例子曾经用Borland C/C++ 编译器(V3.1)编译过,用选择项产生Intel/AMD80186处理器(大模式下编译)的代码。
这些代码实际上是在Intel Pentium II PC (300MHz)上运行和测试过,Intel Pentium II PC可以看成是特别快的80186。
笔者选择PC做为目标系统是由于以下几个原因:首先也是最为重要的,以PC做为目标系统比起以其他嵌入式环境,如评估板,仿真器等,更容易进行代码的测试,不用不断地烧写EPROM,不断地向EPROM仿真器中下载程序等等。
用户只需要简单地编译、链接和执行。
其次,使用Borland C/C++产生的80186的目标代码(实模式,在大模式下编译)与所有Intel、AMD、Cyrix公司的80x86 CPU兼容。
1.00 安装 µC/OS-II本书附带一张软盘包括了所有我们讨论的源代码。
是假定读者在80x86,Pentium,或者Pentium-II处理器上运行DOS或Windows95。
至少需要5Mb硬盘空间来安装uC/OS-II。
请按照以下步骤安装:1.进入到DOS(或在Windows 95下打开DOS窗口)并且指定C:为默认驱动器。
2.将磁盘插入到A:驱动器。
3.键入 A:INSTALL 【drive】注意『drive』是读者想要将µC/OS-II安装的目标磁盘的盘符。
INSTALL.BAT 是一个DOS的批处理文件,位于磁盘的根目录下。
它会自动在读者指定的目标驱动器中建立\SOFTWARE目录并且将uCOS-II.EXE文件从A:驱动器复制到\SOFTWARE并且运行。
µC/OS-II将在\SOFTWARE目录下添加所有的目录和文件。
μCOS-Ⅱ的主要特点_μCOS-II实时操作系统概述1.源代码开放嵌入式实时操作系统μC/OS-II公开全部的程序清单。
绝大部分μC/OS-II的源代码是用移植性很强的ANSI C编写的,和微处理器硬件相关的那部分是用汇编语言编写的。
汇编语言编写的部分已经压缩到最低限度,使得μC/OS-II便于移植到其他微处理器上。
由于代码的开放性,使用者可以清楚地了解该操作系统各个方面的设计细节,通过自己修改源代码,来构造符合应用需求的操作系统环境。
2.可移植性μC/OS-II可以移植到许多微处理器上,条件是只要该微处理器有堆栈指针,有CPU内部寄存器入栈、出栈指令。
另外,使用C编译器必须支持内嵌汇编(inline assembly)或者该C语言可扩展、连接模块,使得关中断、开中断能在C语言程序中实现。
μC/OS可以在绝大多数8位、16位、32位以至64位微处理器、微控制器、数字信号处理器(DSP)上运行。
3. 可固化性μC/OS-Ⅱ是为嵌入式应用而设计的,这就意味着,只要有固化手段(C编译、连接、下载和固化),μC/OS-II就可以嵌入到产品中成为当中的一部分。
4.可裁剪性在实际应用中,可以只使用μC/OS-II应用程序需要的那些系统服务。
也就是说某产品可以只使用几个μC/OS-II功能调用,而另一个产品则使用了几乎所有μC/OS-II的功能。
这样可以减少产品中的μC/OS-II所需的存储空间(RAM和 ROM)。
这种可裁剪性是靠条件编译实现的。
只要在用户的应用程序中(用#def ine constants语句)定义那些μC/OS-II中的功能是应用程序需要的就可以了。
5.抢先式μC/OS-II是抢先式的实时内核。
这就意味着μC/OS-II总是运行就绪条件下优先级最高的任务。
大多数商业内核都是抢先式的,μC/OS-II在性能上和它们类似。
6.多任务μC/OS-Ⅱ可以管理64个任务,然而,目前这一版本保留8个给系统,应用程序最多可以有56个任务。
第10章从µC/OS 升级到µC/OS-II本章描述如何从µC/OS 升级到µC/OS-II。
如果已经将µC/OS移植到了某类微处理器上,移植µC/OS-II所要做的工作应当非常有限。
在多数情况下,用户能够在1个小时之内完成这项工作。
如果用户熟悉µC/OS的移植,可隔过本章前一部分直接参阅10.05节。
10.0 目录和文件用户首先会注意到的是目录的结构,主目录不再叫\SOFTWARE\uCOS。
而是叫\SOFTWARE\uCOS-II。
所有的µC/OS-II文件都应放在用户硬盘的\SOFTWARE\uCOS-II目录下。
面向不同的微处理器或微处理器的源代码一定是在以下两个或三个文件中:OS_CPU.H, OS_CPU_C.C,或许还有OS_CPU_A.ASM.。
汇编语言文件是可有可无的,因为有些C编译程序允许使用在线汇编代码,用户可以将这些汇编代码直接写在OS_CPU_C.C.中。
与微处理器有关的特殊代码,即与移植有关的代码,在µC/OS 中是放在用微处理器名字命名的文件中的,例如,Intel 80x86的实模式(Real Mode),在大模式下编译(Large Modle)时,文件名为Ix86L.H,Ix86L_C.C,和Ix86L_A.ASM.。
表 L10.1在µC/OS-II中重新命名的文件.新的文件名,这比重新建立一些新文件要容易许多。
表10.2给出来几个与移植有关的新旧文件名命名法的例子。
表L10.2对不同微处理器从µC/OS到µC/OS-II,要重新命名的文件.10.1INCLUDES.H用户应用程序中的INCLUDES.H文件要修改。
以80x86 实模式,在大模式下编译为例,用户要做如下修改:•变目录名µC/OS 为µC/OS-II•变文件名IX86L.H为OS_CPU.H•变文件名UCOS.H为uCOS_II.H新旧文件如程序清单 L10.1和 L10.2所示10.2OS_CPU.HOS_CPU.H文件中有与微处理器类型及相应硬件有关的常数定义、宏定义和类型定义。
嵌入式实时操作系统ucosIIucosII是一款源代码公开、可免费使用的嵌入式实时操作系统。
它是由德国嵌入式系统专家brosse于1992年编写完成的,主要适用于嵌入式系统的开发。
ucosII具有源代码短小精悍、可移植性好、稳定性高等优点,被广泛应用于各种嵌入式系统中。
源代码短小精悍:ucosII的源代码只有几百KB,相对于其他RTOS来说,其代码量较小,易于理解和修改。
可移植性好:ucosII采用了可移植性的设计方法,可以在不同的处理器和编译器上进行移植和优化。
稳定性高:ucosII在各种嵌入式系统中得到了广泛应用,其稳定性和可靠性得到了充分的验证。
支持多任务:ucosII支持多任务处理,可以同时运行多个任务,提高系统的效率和响应速度。
实时性:ucosII具有较高的实时性,可以满足各种实时性要求高的应用场景。
可扩展性:ucosII具有较好的可扩展性,可以根据需要进行功能扩展和优化。
系统内核:包括任务调度、任务管理、时间管理、内存管理等核心功能。
中断处理程序:处理各种中断请求,包括硬件中断、软件中断等。
系统API:提供了一套完善的API函数,方便应用程序的开发和调试。
调试和测试工具:包括各种调试和测试工具,如内存检查工具、性能分析工具等。
ucosII被广泛应用于各种嵌入式系统中,如工业控制、智能家居、智能交通、航空航天等。
其应用场景涵盖了消费类电子产品、医疗设备、通信设备、汽车电子等领域。
ucosII作为一款源代码公开、可免费使用的嵌入式实时操作系统,具有短小精悍、可移植性好、稳定性高等优点。
它广泛应用于各种嵌入式系统中,为应用程序的开发提供了便利和支持。
其可扩展性和实时性也使得它在各种领域中具有广泛的应用前景。
随着嵌入式系统的广泛应用,对嵌入式操作系统的需求也日益增长。
uCOSII是一种流行的实时嵌入式操作系统,具有轻量级、实时性、可扩展性等优点。
本文将介绍如何在AT91平台上实现uCOSII的移植。
ucos-ii工作原理uC/OS-II(Micro C/Operating System-II)是一种用于嵌入式系统的实时操作系统。
它的工作原理可以简单归纳为以下几个步骤:1. 任务管理:uC/OS-II使用优先级调度算法管理多个任务。
每个任务都有一个优先级,高优先级的任务会优先执行。
uC/OS-II通过一个任务控制块(TCB)来管理每个任务的信息,包括任务的状态、堆栈信息、优先级等。
2. 中断处理:uC/OS-II可以处理多种类型的中断。
当发生中断时,uC/OS-II会根据中断类型进行相应的处理,并且可以自动切换到中断服务程序(ISR)进行执行。
中断服务程序中的代码通常是短小且高效的,用于处理特定的中断事件。
3. 任务切换:uC/OS-II使用抢占式的任务调度方式,因此任务切换可以发生在任何时刻。
当一个任务的时间片用尽或者有更高优先级的任务需要执行时,uC/OS-II会保存当前任务的上下文信息,并切换到下一个任务的执行。
任务切换时,uC/OS-II会保存当前任务的栈指针等信息,并从下一个任务的栈指针中恢复相应的上下文,以使下一个任务继续执行。
4. 事件同步:uC/OS-II提供了多种事件同步机制,如信号量、事件标志、消息邮箱等,用于任务之间的同步和通信。
这些机制可以帮助任务之间按照一定的顺序进行执行,实现数据共享和互斥访问等功能。
5. 内存管理:uC/OS-II提供了内存管理功能,可以动态分配和释放内存块。
这种内存管理机制可以帮助节省内存空间,提高系统的效率。
总而言之,uC/OS-II通过任务管理、中断处理、任务切换、事件同步和内存管理等机制,实现了对嵌入式系统的实时调度和资源管理,以提供稳定、可靠的操作系统支持。