μC/OSII

发布时间:2024-05-16 20:48:58 作者:汉语成语

μC/OSII是一个可移植、可固化、可裁剪的抢占式实时多任务内核。大部分用ANSIC语言编写,只有一小部分与硬件相关的代码用汇编语言编写。至今,μC/OSII已经在40多种不同架构的微内核处理器上移植成功。

时钟管理系统

μC/OSII原有的时钟管理系统类似于Linux,但是比Linux简单得多。它仅向用户提供一个周期性的信号OSTime,时钟频率可以设置在10~100Hz,时钟硬件周期性地向CPU发出时钟中断,系统周期性响应时钟中断,每次时钟中断到来时,中断处理程序更新一个全局变量OSTime。μC/OSII时钟中断服务程序的核心是调用OSTimeTick()函数。OSTimeTick()函数用来判断延时任务是否延时结束从而将其置于就绪态。其程序伪代码如下:

voidOSTimeTick(void){

OSTimeTickHook();//调用用户定义的时钟节拍外连函数

while{(除空闲任务外的所有任务)

OS_ENTER_CRITICAL();//关中断

对所有任务的延时时间递减;

扫描时间到期的任务,并且唤醒该任务;

OS_EXIT_CRITICAL();//开中断

指针指向下一个任务;

}

OSTime++;//累计从开机以来的时间

}

在μC/OSII的时钟节拍函数中,需要执行用户定义的时钟节拍外连函数OSTimeTickHook(),以及对任务链表进行扫描并且递减任务的延时。这样就造成了时钟节拍函数OSTimeTick()有两点不足:

①在时钟中断中处理额外的任务OSTimeIickHook(),这样增加了中断处理的负担,影响了定时服务的准确性;

②在关中断情况下扫描任务链表,任务越多所需要时间越长,而长时间关中断对中断响应有不利影响,是中断处理应当避免的。

操作系统移植的改进

μC/OSII*****提供的基于CortexM3内核移植的μC/OSII系统一直工作在特权级下。这样做的好处是,系统不用频繁地切换访问等级,而且开关中断很快,利于实时性的实现;但是应用程序(用户任务)也可以访问特殊功能寄存器和系统控制空间(SCS)寄存器,修改操作系统的变量,这对系统的安全性是一种威胁,如果用户任务程序跑飞,那就有可能破坏系统寄存器和变量。

(即μC/OS的版)主要特点

(1)公开源码:是为数不多的公开源码的RTOS,给二次开发和移植提供了可能;

(2)可移植性强:μC/OSII绝大多数源码用ANSIC编写,少量用汇编语言编写,具有较强的移植性;

(3)可固化:微小内核,可以和应用程序一起固化到FLASHROM中;

(4)可裁剪:通过条件编译即可实现裁剪,十分方便;

(5)占先式:是实时性的重要保证;

(6)多任务:多达64个任务管理,可以满足大多数控制任务;

(7)可确定性:全部的函数调用与服务执行的时间是可知的;

(8)系统服务:提供众多的系统服务,如:消息队列、信号量、内存管理等。

(9)中断管理:多达255层的中断管理。

(10)稳定性和可靠性:自1992年以来已经有好几百个商业应用。其中NationalOptronics公司成功将μC/OS用于三轴运动控制卡中,该三轴运动控制卡主要用于高精度的光电子制造业。