欢迎来到天天文库
浏览记录
ID:31777346
大小:56.17 KB
页数:7页
时间:2019-01-18
《基于uc-os-ii支持可重构计算平台通信策略》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于UC/OS-II支持可重构计算平台通信策【摘要】可重构计算平台的任务间通信是可重构计算平台正常工作的前提,提高任务间通信效率可以直接提升计算平台的吞吐率。对C/OS-II进行改进扩展,直接通过任务控制块(TCB)实现任务间的通信策略,可以提高任务间的通信效率。在改进扩展后的操作系统上进行实验,结果表明改进后的C/OS-II实现了可重构计算平台的任务间通信功能。【关键词】可重构;操作系统;C/OS-II;硬实时;FPGA中图分类号:TP39文献标识码A文章编号1006-0278(2013)06-166-02一、引言以FPGA为可重构器件的可重构计算平台①,可将任
2、务抽象为软件任务和硬件任务两种②。虽然使用任务划分图③可以减少没有必要的任务间通信量,如将两个并行的硬件任务合并为一个硬件任务从而减少任务间的通信,但这无法大量减少通信代价,因此高效的任务间通信策略必须引入可重构计算平台。在C/OS-II中,任务间的通信可以依靠信号量、邮箱和消息队列实现,但是都需要涉及到事件控制块(ECB),ECB的作用是通过自身的桥接让一个任务或者中断服务子程序能够向另外的任务发信号。所有的信号都被看成事件,无论其是信号量或是消息队列等。所有的任务间的信号传递都需通过ECB的桥接,事件控制块的使用④如图1所示。虽然任务间使用信号沟通,都有ECB
3、的参与从而使得系统非常严谨,但这使通信效率效率受到比较大的影响。当发送方发送消息的时候,不再使用ECB,而是直接将消息写入TCB,并且对任务状态进行相应的调整,此时,所有的信息都要包含在OSTCBMessage中了。为了满足上述要求,在任务控制块TCB中添加一个新的字段,这一个新的字段名为0STCBMessage,用来保存其它任务传给它的信息。改进过后的任务控制块结构如下:typedefstructos_tcb{OS_STK*OSTCBStkPtr;/*当前栈顶指针*/#ifOS_TASK_CREATE_EXT_ENVoid*OSTCBExtPtr;/*指向用户定
4、义数据的指针*/OS_STK*OSTCBStkBottom;/*栈底指针*/INT32UOSTCBStksize;/*堆栈大小*/INT16UOSTCBOpt;/*任务选项*/INT16UOSTCBId;/*任务ID*/INT32U0STCBMessage/*新增加的字段*/Structos_tcb*OSTCBNext;/*指向TCB链中下一TCB块的指针*/Structos_tcb*OSTCBPrev;/*指向TCB链中上一TCB块的指针*/#if(OS_Q_EN&&(OSJ_MAX_QS>二2))
5、
6、OSMBOX_EN
7、OS_SEM_ENOS_EVENT*OS
8、TCBEventPtr;/*事件控制块指针*/ttendif#if(OS_Q_EN&&(OSJ_MAX_QS>=2))
9、
10、OS_MBOX_ENVoid*OSTCBMsg;/*从OSMboxPost()或OSQPost()收到的消息*/ttendifINT16UOSTCBDly;/*延迟时间*/INT8UOSTCBStat;/*任务状态*/INT8UOSTCBPrio;/*任务优先级*/INT8UOSTCBX;/*根据任务优先级指出就绪组*/INT8UOSTCBY;/*根据任务优先级指出就绪表*/INT8UOSTCBBitX;/*就绪表的位掩码*/INT8UOSTC
11、BBitY;,/*就绪组的位掩码*/#ifOS_TASK_DEL_ENBOOLEANOSTCBDeIReq;/*指出一个任务是否要删除本身}OS_TCB修改后的操作系统保留了C/OS-II的消息队列等,ECB仍然可以发挥作用,但是任务间的通信量都是可以大致先行估算的,绕开ECB进行任务间的通信,可以减少ECB读取和写入的时间消耗,从而提高系统的实时性。既然要替代消息邮箱、信号量和消息队列,那么OSTCBMessage中包含的信息应该比较全面,它至少需要包含以下一些信息:1.发送信息方的标识,比如优先级ID2.具体的信息含义标识,比如发送的消息是什么目的。一个信息可
12、以有多种理解方式,接受方可以根据相关的定义做相应的处理,这个工作由OSTCBMessage的若干位表示。比如接受到一个信息,查看其相关的含义,就可以判断这个信息是否需要回复确认。这个可以由应用程序设计者完成的任务,操作系统也可以完成,而且两者并不冲突,因此,在操作系统的设计中应该考虑信息含义和功能多元化。3•标识是否可扩展,已经扩展后的数据结构的访问方式。4•如果需要时间限制,相关信息的表示。5.和函数OSTicklSR()的关系。也就是因为等待信息而进入休眠状态之后,如何恢复到就绪状态,函数0STicklSR()只是恢复到就绪状态的方式之一。其他类似的因素也应该
13、被考虑。理
此文档下载收益归作者所有