μC/OSII

   2024-02-18 互联网810
核心提示:  μC/OSII原有的时钟管理系统类似于Linux,但是比Linux简单得多。它仅向用户提供一个周期性的信号OSTime,时钟频率可以设置在

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

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

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

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

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

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

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

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

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

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

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

 
举报收藏 0打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  隐私政策  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅