从μC/OS―II到μC/OS―III的各种改进
2 μC/OS-III的新特性
μC/OS—III已经不仅仅是一个RTOS内核,而是包含很多与该内核配套的软件开发包。和传统的大型商用RTOS类似,μC/OS—III能以传统的BSP(板级支持包)方式,实现诸如USB主机、文件系统、TCP/IP协议栈等,还包括RTOS本身的调试工具等。Micrium公司和很多软件公司合作,提供很多基于μC/OS—III的通用商业软件,如GUI、FS、USB、TCP/IP等。今后还会与更多的半导体厂商合作,提供更多商家的以ARM Cortex—M3/4为核心的μC/OS—III评估板。
μC/OS—III在功能上得到了全面的扩展和提升。μC/OS—II最多支持255个任务,而μC/OS—III可以支持任意数目的任务,实际使用的任务数目仅受CPU所能使用的存储空间的限制。μC/OS—III可以支持任意数目的信号量、事件标志组、消息队列、存储块等内核对象,而且,为了避免在程序编译过程中出现资源不够分配的问题,允许用户在程序运行中动态配置内核资源。μC/OS—II允许挂起某个任务,但挂起操作不可以嵌套,而μC/OS—III允许嵌套挂起某个任务,嵌套挂起最深可达250层。μC/OS—III增加了一个时钟节拍任务来做延时处理和超时判断。通过在任务级代码完成时钟节拍服务,能极大地减少中断延迟时间。而且,μC/OS—III使用了哈希散列表机制,进一步降低了延时处理和超时判断的开销,提高了系统的实时性。
除了功能上的扩展和提升,μC/OS—III还增加了一些新功能。μC/OS—III增加了时间片轮转调度,允许多个任务有相同的优先级。当多个优先级相同的任务同时就绪并且所属优先级高于其他所有就绪任务时,μC/OS—III轮转调度这些任务,让每个任务运行一段用户指定的时间长度(即时间片)。
μC/OS—III允许中断或任务直接给另一个任务发信号或消息。在实际应用中,很多情况下,编程人员知道该向哪个任务发信号或消息,这时就可以使用μC/OS—III的这种新功能来向目标任务直接发信号或消息,从而避免创建和使用诸如信号量或消息队列等内核对象作为中介,提高信号或消息发送的效率。μC/OS—III增加了时间戳功能,可以给信号或消息打上时间戳,从而允许用户获取某个事件发生的时刻,以及信号或消息传递到目标任务所耗费的时间等。
另外,μC/OS-III的设计能方便地按照CPU架构优化,特别是其数据类型可按照CPU能适应的最佳位数宽度修改,以适应8/16/32位的CPU。关键算法可采用汇编程,以发挥一些有特殊指令的CPU的优势。很多CP有读改写指令,可方便实现存储器访问的原子操作,有的CPU有计算前导零指令,可用来快速查找任务就绪表。
μC/OS—III增加了中断处理任务,可以把内核对象的处理工作都放到任务级代码中完成,从而允许通过给调度器上锁的方式实现临界段代码的保护,这样就使内核关中断的时钟周期几乎为零。μC/OS—III内置了对系统性能进行测试的代码,能够检测每个任务的执行时间、堆栈使用情况、每个任务运行的次数、CPU利用率、关闭中断和给调度器上锁的时间等。μC/OS—III还支持内核觉察式调试,可以以友好的方式对μC/OS—III的变量、数据结构进行检查和显示,并且带有μC/Probe调试工具,可在程序运行过程中察看和修改变量。
结语
相比μC/OS—II,μC/OS—III做了很多改进,比如改进了任务调度方法、改进了时钟节拍管理机制、增加了中断处理任务、允许向任务直接发信号或消息、增加了时间戳功能、支持内核觉察式调试等。从这些改进来看,μC/OS—III比μC/OS—II上升到一个更高的档次。其中,一主要的改进,比如μC/OS—III的任务调度方法的改进、时钟节拍管理机制的改进、中断管理方法的改进等会在后续专题文章中详细介绍。本文引用地址:http://www.amcfsurvey.com/article/159587.htm
评论