μC/OSII

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

μC/OSII时钟管理系统

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

  void OSTimeTick(void) {

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

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

  OS_ENTER_CRITICAL();//关中断

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

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

  OS_EXIT_CRITICAL();//开中断

  指针指向下一个任务;

  }

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

  }

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

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

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

μC/OSII操作系统移植的改进

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

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

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

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

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

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

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

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

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

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

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

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

 
0
本词条对我有帮助
 
 
词条标签