原创
一个ucos实时机制的问题
2010-7-20 11:06
3361
10
10
分类:
软件与OS
在使用ucos的过程中,让我最不满意的一点是ucos资源的抢占会影响到中断的处理。在很多嵌入式处理器中都没有提供RMW原子操作机制,所以在ucos中都采用了关中断的方式避免资源的抢占。这种机制比较简单,但是当task之间进行资源抢占时会影响到中断的处理,从而导致数据丢失等现象的发生。比如,在我的实现过程中,由于关中断过于频繁,导致串口通信速率上不去,由于中断太多了!这种机制的存在会在一定程度上限制ucos在实时工控领域的应用。工控领域的很多firmware都没有采用os的方式,原因在于很多工控的过程比较简单,前后台程序可以搞定,但是没有os的支撑,对于功能庞大一点的firmware,前后台平台就无能为力了,效率较低,可扩展性很差,但是一旦采用ucos之类的平台,实时性反而不如前后台,特别是资源竞争相对较多的时候。
在Linux中,通过spinlock与semaphore来区别中断上下文与task上下文之间的互斥问题。我想对于嵌入式RTOS,特别是对于没有RMW机制的处理器,应该考虑一下中断上下文与task之间互斥的算法,尽量做到task上下文之间互斥不需要关中断,这样可以加快中断事件的处理效率。很多工控实时性应用的场合都是I/O密集型应用,所以,中断事件的处理尤为重要。
文章评论(0条评论)
登录后参与讨论