"); //-->
本文介绍了mC/OS-II实时内核及其应用。
引言
嵌入式系统每年都在变得更加复杂。在过去的几年中,产品已经从采用8位处理器转向16位,甚至32位处理器。单任务的应用过于简单,不再适应当前的竞争趋势。实时操作系统(RTOS)通常用于处理复杂性的需求。RTOS创建一个框架,用于建立和提供比单任务应用更好的响应系统。一个非常流行的RTOS是MicroC/OS-II(也就是熟知的mC/OS-II)。
mC/OS-II实时内核
mC/OS-II提供多任务的能力。多任务处理是调度的过程和几个任务之间切换CPU;单CPU在几个有序的任务之间进行切换。多任务处理提供构造应用成为一组小的,专注的共享处理器的任务的能力。多任务处理的最重要的方面之一是允许应用程序开发者管理实时应用固有的复杂性。mC/OS-II可以使应用程序更容易设计和维护。任务是一个简单的程序,可以认为它完全占有CPU。实时应用程序的设计过程包括把问题分割成为多个任务,每个任务负责完成问题的一部分。mC/OS-II允许创建多达254个应用任务。对于许多嵌入式系统来说,254个任务可以用于复杂的产品设计。
内核是多任务处理系统负责任务管理和任务之间通讯的部分。当内核决定运行一个不同任务时,它仅仅存储当前任务的上下文(CPU寄存器)到当前的任务的堆栈;每一个任务在内存中被分配它自身拥有的堆栈区域。一旦这个操作完成,新的任务的上下文从它的堆栈区域存储到此,然后新的任务的代码执行被恢复。这个过程称为上下文切换或任务切换。每一个任务的堆栈的当前顶端,随同其他信息,被存储在一个称为任务控制块(TCB)的数据结构中。当任务被RTOS创建和管理时,每一个任务都被分配一个TCB。
在实时系统中,一个重要的问题是响应中断的时间要求,以及实际开始执行处理中断的用户代码的时间要求。这被称为中断响应。像市场上的所有RTOS一样,当处理关键代码段时,mC/OS-II会禁止中断。然而,mC/OS-II作了优化,中断禁止尽可能的短,并提供更好的中断响应。例如,对ARM处理器,mC/OS-II禁止中断不大于250个时钟周期(假设内存存取零等待状态)。
调度器是内核的一部分,它负责决定哪一个任务将要运行和何时运行。mC/OS-II的调度器是基于优先级的;每一个任务依据其重要性被分配一个优先级。分配给每一个任务的优先级依赖产品试图达到的目的。在基于优先级的内核中,CPU的控制将总是给予就绪态的最高优先级的任务。然而,何时最高优先级任务获得CPU,依赖调度器使用的类型。注意,调度器执行时间是不变的和确定性的。换句话说,不论在产品中采用多少个任务,mC/OS-II的调度器将总是花费相同大小的时间执行。
mC/OS-II是可抢占内核,而且当一个事件使就绪态的最高优先级的任务运行,当前任务立即挂起,高优先级任务控制CPU。如果一个中断使就绪态的最高优先级的任务运行,被中断的任务挂起,新的最高优先级的任务恢复运行。大多数实时系统使用抢占调度器,因为它们响应更快。mC/OS-II为应用提供许多有价值的服务。最基本的服务之一是允许任务挂起执行直到某一时间结束。换句话说,一个任务完成某项工作,然后任务进入指定的时间量的睡眠“sleep”,这个时间是可变的,从一个时钟节拍(clock tike)到几个小时。时钟节拍通常由硬件定时器和有规则的中断CPU产生,并且它是由mC/OS-II管理的基本时间单元。时钟节拍中断CPU的速率由应用程序开发者决定,通常每秒发生在10到1000次之间。
多任务处理需要仔细考虑共享资源(内存特定区域,变量,I/O,等等)。换句话说,必须确保有权使用的共享资源是独占的。mC/OS-II提供多种服务使你更易使用,但责任也是由你承担。mC/OS-II提供的最普通的资源保护机制是信号量。当存取共享资源时,应用程序开发者需要获取为保护资源创建的信号量,存取资源,然后释放信号量。如果一个任务需要存取资源,而信号量已经给予另一个任务,则这个任务会被放置在任务的等待列表,等待信号量的拥有者释放信号量。任务等待信号量释放,并不消耗CPU时间。当信号量被释放,mC/OS-II要决定是否新的信号量拥有者比释放者有更高的优先级,如果是,切换到高优先级任务。mC/OS-II可以根据需要允许创建许多信号量(在运行时)。
任务或ISR(中断服务程序)与其它任务通讯也是重要的。像mC/OS-II这样的RTOS提供消息邮箱和消息队列这样的服务实现这一通讯。邮箱是一个对象,它可以拥有一个消息(实际上是一个指针),并且任务列表等待邮箱中的消息,这个消息由其它的任务或ISR存放。指针的使用在于避免在运行时拷贝数据。指针发送实际上可以指向几乎任何事:数据结构,变量,数组或甚至函数。等待消息到达的任务放置在等待列表中,直到消息被发送(由其它任务或ISR)。当任务等待消息时,它们不消耗CPU时间。换句话说,那些任务在等待时,RTOS执行其它的任务。当一个消息被发送时,实际上等待消息的最高优先级的任务接收消息。如果等待消息的任务成为最重要的任务要执行,则mC/OS-II执行那个任务,允许它立即处理接收的消息。
mC/OS-II总共提供80个函数,它们可以在应用程序中调用。
mC/OS-II的尺寸(代码内存数量)在6K字节到大约24K字节的代码量之间变化。同样地,mC/OS-II需要500字节到大约4K字节之间的RAM。这意味着mC/OS-II是可伸缩的(在编译时),适合用于一些最小的嵌入式控制器。事实上,mC/OS-II已经移植到超过45种不同CPU构架(8位,16位,32位CPU和DSP)。多年来,许多的这些移植已经被用户贡献出来,并且可以从Micrium的网站免费下载使用。
mC/OS-II的应用
除了许多使用mC/OS-II的技术原因之外,也有许多源于商业的观点。使用mC/OS-II的最大优势是它是可证明的可用于安全关键性应用的RTOS。事实上已经有第三方为μC/OS-II开发的认证套件可以提供全部必须的文档,以便交付mC/OS-II作为预先证明的用于安全关键性系统的软件组件,包括美国航空无线电技术委员会(RTCA)航空电子设备D0-178B (A级)标准和EUROCAE ED-12B标准,美国食品和医药管理局(FDA)医疗510(K)(III类)标准,以及IEC 61068 (SIL3/SIL4)用于运输和原子能系统标准。即使你的产品不具备安全关键性,你应该了解到这个证明,它证明了mC/OS-II是一个非常健壮和高可靠的RTOS。mC/OS-II也99%适应汽车工业软件可靠性协会(MISRA)C编码标准。这些标准由MISRA创建,目的是在关键性汽车电子系统中改善C语言程序的可靠性和可预测性。MISRA协会成员包括戴勒克电子,福特汽车公司,美洲虎汽车有限公司,Lotus Engineering,Lucas Electronics,Rolls-Royce, Rover Group Ltd.,以及其它专注改善汽车电子安全性和可靠性的公司和大学。这个标准的全部详细资料可以直接从MISRA的网站获得,http://www.misra.org.uk。详细的mC/OS-II遵循所有MISRA127条C编码规则的描述表格可以从Micrium网站获得(www.micrium.com)
mC/OS-II是流行的软件,其原因是你可以从它获得经验而不用付授权费,直到你决定将它应用到实际的商业产品。同样它在世界上许许多多的学院和大学中被使用。也有成千的mC/OS-II授权使用在许多不同类型的产品中。因为mC/OS-II低廉的费用和整洁的源代码,它是非常吸引人的RTOS。
mC/TCP-IP
最近Micrium已经开发了mC/TCP-IP,一个洁净的嵌入式TCP/IP协议栈。mC/TCP-IP开发成为与mC/OS-II同样质量级别的软件,事实上对教学使用是免费的。但是像mC/OS-II一样,如果用于商业应用,需要得到授权。你可以从Micrium的网站(www.micrium.com)下载mC/TCP-IP,对于商业应用,Micrium允许免费评估mC/TCP-IP软件45天。mC/TCP-IP是IPV4版本协议栈,提供BSD V4插槽接口(socket interface)。Micrium开发大量补充模块到mC/TCP-IP:DHCPc(动态主机配置协议,客户端),FTP(文件传输协议,客户端和服务器两者),HTTPs(超级文本传输协议,服务器)就是通常说的Web服务器,邮件客户端,POP3(邮局协议3)和SMTP(简单邮件传输协议),以及更多的其它模块。这些模块根据每一个最终产品授权。
Micrium还提供完整的软件组件(就是通常说的中间件)。你可以得到嵌入式FAT兼容的文件系统(mC/FS),嵌入式图形用户系统(mC/GUI),嵌入式通用串行总线协议栈(mC/USB)以及其它更多的组件。
结语
Micrium的价值观是为嵌入式大众提供最好质量的软件。虽然Micrium的软件以源码形式提供,但它并不能被认为是开源代码。提供源代码是为方便和容易配置。请通过授权我们的软件帮助我们提供给嵌入式大众最好的软件。我们感激您的诚实和合作。
参考文献:
1. www.misra.org.uk
2. www.micrium.com
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。