用协处理器提高μC/OS-II的实时性

技术分类: 嵌入式系统  | 2008-05-08
来源:单片机与嵌入式系统应用

  在不使用的XGATEμC/OS-II中,S12X CPU的RTI中断的中断服务子程序代码如下:

程序

  以上S12X CPU中断服务子程序共有220条指令,需运行538个周期。测试中采用了16 MHz的总线时钟和16 kHz的μC/OS-II时钟节拍。可以估算出,每次中断服务子程序在S12X CPU中的运行时间为33.6 μs,约相当于62.5 μs时钟节拍的53%,即S12X CPU需要用一多半的时间响应时钟节拍中断,这显然是不可取的。

  在μC/OS-II中用XGATE处理时钟节拍中断时,当无需做任务调度时,XGATE遍历10个任务的控制块链表,执行延时计数器减1操作,共需要148条指令。由于XGATE是RISC结构的处理器,指令执行时间多为1~2个周期,故执行148条指令共需要218个周期。在32 MHz时钟频率下,执行时间大约7 μs,仅相当于62.5 μs时钟节拍的11%。这说明,即使使用短至62.5 μs的时钟节拍,对XGATE的占用率也并不高。

  通过以上测试可看出,由单一CPU运行μC/OS-II,16 kHz的时钟节拍导致S12X CPU频繁地加载中断服务子程序,占用超过了50%,严重地影响了任务的实时运行。故对于单一CPU,一般采用的时钟节拍频率不高于100 Hz,此时计时精度为±10 ms,以避免时钟节拍中断占用大量CPU运行时间。

  在用XGATE处理μC/OS-II的时钟节拍时,16 kHz的时钟节拍并未对S12X CPU的任务运行产生影响,这个频率的时钟节拍使μC/OS-II的定时精度高于±62.5 μs。利用协处理器XGATE来处理μC/OS-II的时钟节拍,使主 CPU的执行时间为固定值,因而保证了任务的实时运行,提升了系统实时性,高频率的时钟节拍也提高了计时精度。

  4 结论

  μC/OS-II中,时钟节拍中断服务子程序需要遍历整个任务控制块链表,不同应用中任务数目不同,遍历整个任务控制块链表所花费的时间就不同。时钟节拍中断所带来的不确定性是影响μC/OS-II实时性指标的唯一因素。采用协处理器来实现μC/OS-II的时钟节拍可以很好地解决这个问题。

  如果使用协处理器来响应μC/OS-II的时钟节拍中断,那么μC/OS-II任务控制块链表的遍历和延时计数器减1操作均由协处理器完成。主CPU只有在需要做任务调度时才会进入相应的中断服务子程序,因此主CPU运行中断服务子程序的时间是固定值。由于主 CPU的运行时间不会被时钟节拍中断占用,因而可以采用很高频率的时钟节拍来提高μC/OS-II的计时精度。

  参考文献

  [1] Labrosse Jean J.μC/OS-II——源码公开的实时嵌入式操作系统[M].邵贝贝,译.第2版.北京:北京航空航天大学出版社,2003.

  [2] 邵贝贝.单片机嵌入式应用的在线开发方法[M].北京:清华大学出版社.2004.

  [3] Freescale.XGATE Block Guide,2004.冯泽东(硕士研究生),主要研究方向为嵌入式系统的应用与开发。

1】【2】【3
加载中

对文章的评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销