关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > 从μC/OS―II到μC/OS―III的各种改进

从μC/OS―II到μC/OS―III的各种改进

作者:时间:2012-12-24来源:网络收藏

摘要:相比;;;;I做了很多改进,比如任务调度策略、时间节拍管理等,不仅消除了;;中的一些局限,而且增加了一些全新的功能。本文首先介绍了μC/OS—II的特点与局限,然后介绍了μC/OS—所做的各种改进。
关键词:μC/OS—II;μC/OS—

引言
μC/OS系列内核都是源代码开放的、可移植、可固化、可裁剪的抢占式实时多任务内核。μC/OS诞生于1992年,是针对68HC11 CPU开发的。μC/OS—II V2.0诞生于1998年,μC/OS—II V2.52诞生于2002年。针对这3个版本的,Jean J.Labrosse先生出版了3书,分别为《μC/OS The Real—Time Kernel》、《Micro C/OS—II The Real—Time kernel》和《Micro C/OS—II TheReal—Time kernel(Second Edition)》。其中,第2本和第3本书都有对应的中文译著,第3本书比第2本书增加了约250页新内容。μC/OS—诞生于2009年,于2011年8月公开源码。《μC/OS—III The Real Time Kernel》--书分为两大部分:第1部分是对μC/OS—III硬件无关软件的描述;第2部分讲述μC/OS—III在不同型号的ARMCortex—M3/4单片机评估板上应用的范例。第1部分相同,第2部分对应不同硬件,目前已经组合出版了6本书,分别对应如下:
◆Freescale公司的以Kinetis53单片机为核心,面向医疗仪器类应用的TWR—K53N512评估板;
◆NXP公司的以LPCI768(Cortex—M3核)为核心的评估板;
◆Renesas公司的以RX62N为核心的评估板;
◆Renesas公司的以带以太网口的SH7216为核心的评估板;
◆ST公司的以STM32F107为核心的评估板;
◆TI公司的以LM3S9892为核心,面向小型机器人带以太网口的VM—EVALBOT评估板。
μC/OS—III是针对32位CPU开发的,相比μC/OS—II做了很多改动。下面将详细介绍μC/OS—II中的一些可以改进的地方以及μC/OS—III中的一些新特性。

1 μC/OS—Il的特点与局限
μC/OS—II主要针对8/16位CPU开发,是一个抢占式的实时多任务内核。任务调度策略是基于任务的优先级,总是运行处于就绪态的优先级最高的任务。在μC/OS—II中,每个任务都有一个唯一的优先级。μC/OS—IIV2.8之前的版本最多支持64个优先级,从V2.8开始最
多可支持255个优先级。
μC/OS—II的核心是任务调度算法。任务调度算法的目标就是快速找出其中优先级最高的处于就绪态的任务。为了做到这一点,μC/OS —II巧妙地采用了查表法。在查表过程中,μC/OS—II需要快速找出1个8位数的第一个非零位的位置,这是通过1个由256个元素构成的查找表OSUnMapTb1[]实现的,该查找表记录了每一个8位数的第一个非零位的位置。通过这种巧妙的查表算法,不论有多少个任务处于就绪态,都能在很短的、确定的时间内找出其中优先级最高的那个就绪任务。
如今,很多新的CPU都有一条计算前导零指令(CLZ)或功能类似的指令,比如32位PowerPC处理器的CLZ指令、Freescale S12X双核微控制器中的协处理器XGATE的Bit Field Find First One指令等。对于有这类硬件指令的CPU,无需再使用μC/OS—II中的查表算法,可以利用这类指令优化任务调度算法。
实时系统有2类:软实时系统和硬实时系统。软实时系统中,各任务运行得越快越好,并不限定某一任务必须在多长时间内完成。硬实时系统要求系统中的任何函数都有确定的执行周期数,任务运行必须准时,执行时间不因任务多少而改变。大多数实时系统是二者的结合。μC /OS—II中仅有一处不满足硬实时条件:OSTimeTiek()函数需要遍历所有任务控制块,执行时间受任务数目的影响,而该函数由时钟节拍中断服务程序调用,因此时钟节拍中断服务程序的执行时间也受任务多少影响。通过把这部分工作放到一个专门的系统级任务中去做,便可以解决这个问题,使其成为一个满足硬实时条件的RTOS。对于Freeseale公司的双核微控制器S12X,还可以通过把时钟节拍中断的处理交给协处理器来完成,从而实现硬实时条件,提高RTOS的实时性。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭