- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于UCOSII支持可重构计算平台通信策略
基于UCOSII支持可重构计算平台通信策略
【摘要】可重构计算平台的任务间通信是可重构计算平台正常工作的前提,提高任务间通信效率可以直接提升计算平台的吞吐率。对C/OS-II进行改进扩展,直接通过任务控制块(TCB)实现任务间的通信策略,可以提高任务间的通信效率。在改进扩展后的操作系统上进行实验,结果表明改进后的C/OS-II实现了可重构计算平台的任务间通信功能。
【关键词】可重构;操作系统;C/OS-II;硬实时;FPGA
中图分类号:TP39文献标识码A文章编号1006-0278(2013)06-166-02
一、引言
以FPGA为可重构器件的可重构计算平台①,可将任务抽象为软件任务和硬件任务两种②。虽然使用任务划分图③可以减少没有必要的任务间通信量,如将两个并行的硬件任务合并为一个硬件任务从而减少任务间的通信,但这无法大量减少通信代价,因此高效的任务间通信策略必须引入可重构计算平台。
在 C/OS-Ⅱ中,任务间的通信可以依靠信号量、邮箱和消息队列实现,但是都需要涉及到事件控制块(ECB),ECB的作用是通过自身的桥接让一个任务或者中断服务子程序能够向另外的任务发信号。所有的信号都被看成事件,无论其是信号量或是消息队列等。
所有的任务间的信号传递都需通过ECB的桥接,事件控制块的使用④如图1所示。虽然任务间使用信号沟通,都有ECB的参与从而使得系统非常严谨,但这使通信效率效率受到比较大的影响。
当发送方发送消息的时候,不再使用ECB,而是直接将消息写入TCB,并且对任务状态进行相应的调整,此时,所有的信息都要包含在OSTCBMessage中了。
为了满足上述要求,在任务控制块TCB中添加一个新的字段,这一个新的字段名为OSTCBMessage,用来保存其它任务传给它的信息。改进过后的任务控制块结构如下:
typedef struct os_tcb{OS_STK*OSTCBStkPtr;/*当前栈顶指针*/
#if OS_TASK_CREATE_EXT_EN
Void*OSTCBExtPtr;/*指向用户定义数据的指针*/
OS_STK*OSTCBStkBottom;/*栈底指针*/
INT32UOSTCBStksize;/*堆栈大小*/
INT16U OSTCBOpt;/*任务选项*/
INT16U OSTCBId;/*任务ID*/
INT32UOSTCBMessage/*新增加的字段*/
#endif
Structos_tcb*OSTCBNext;/*指向TCB链中下一TCB块的指针*/
Structos_tcb*OSTCBPrev;/*指向TCB链中上一TCB块的指针*/
#if (OS_Q_EN(OSJ_MAX_QS=2))||OSMBOX_EN|| OS_SEM_EN
OS_EVENT*OSTCBEventPtr;/*事件控制块指针*/
#endif
#if(OS_Q_EN(OSJ_MAX_QS=2))||OS_MBOX_EN
Void*OSTCBMsg;
/*从OSMboxPost()或OSQPost()收到的消息*/
#endif
INT16U OSTCBDly;/*延迟时间*/
INT8U OSTCBStat;/*任务状态*/
INT8U OSTCBPrio;/*任务优先级*/
INT8U OSTCBX;/*根据任务优先级指出就绪组*/
INT8U OSTCBY;/*根据任务优先级指出就绪表*/
INT8U OSTCBBitX;/*就绪表的位掩码*/
INT8U OSTCBBitY;,/*就绪组的位掩码*/
#if OS_TASK_DEL_EN
B00LEANOSTCBDelReq;/*指出一个任务是否要删除本身*/
#endif
}OS_TCB
修改后的操作系统保留了 C/OS-Ⅱ的消息队列等,ECB仍然可以发挥作用,但是任务间的通信量都是可以大致先行估算的,绕开ECB进行任务间的通信,可以减少ECB读取和写入的时间消耗,从而提高系统的实时性。既然要替代消息邮箱、信号量和消息队列,那么OSTCBMessage中包含的信息应该比较全面,它至少需要包含以下一些信息:
1.发送信息方的标识,比如优先级ID
2.具体的信息含义标识,比如发送的消息是什么目的。一个信息可以有多种理解方式,接受方可以根据相关的定义做相应的处理,这个工作由OSTCBMessage的若干位表示。比如接受到一个信息,查看其相关的含义,就可以判断这个信息是否需要回复确认。这个可以由应用程序设计者完成的
文档评论(0)