DM642_RF框架小结

DM642_RF框架小结

ID:44702931

大小:37.51 KB

页数:6页

时间:2019-10-25

DM642_RF框架小结_第1页
DM642_RF框架小结_第2页
DM642_RF框架小结_第3页
DM642_RF框架小结_第4页
DM642_RF框架小结_第5页
资源描述:

《DM642_RF框架小结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、DM642RF框架小结RF5是德州仪器TI公司新近推出的DSP软件开发的起步代码参考框架,它以DSP/BIOS为基础,利用其中的数据处理元素和数据通信元素方便快捷地完成DSP软件的设计与开发RF5是RF的最新版本,其区别于RF1和RF3的显著特点是其支持动态对象创建和支持线程(任务)挂起功能,因此适合系统较复杂的应用场合。RF5主要实现三个功能,存储管理,线程模型和通道封装,对于不同的应用,我们只需在这三个元素上做修改,而对于整个应用程序,不用从头设计,这样大大简化了开发者的开发难度,缩短了开发时间。RF5适用于包含大量的算法,且要求多线程,多通道的应用,如图像处理,多媒体应用等,以Ti提

2、供的实例mpeg2loopback为例,对RF5进行分析。RF5包含的元素有:1线程(Thread):RF5框架包含四个基本的数据处理元素,处在最顶层的是线程,线程总是顺序的执行所包含的通道,线程在一个比较高级的级别上把数据组织在一起,他们可以与别的线程,设备驱动以及别的类似结构进行通讯,在mpeg2lookback实例中,创建了三个线程分别是tskVideoInput,tskVideoOutput和tskProcess。每个线程都在不断的等待消息,处理数据,并将结果发送给其他的线程,同时有可能还要发送同步消息给其他线程已实现线程间的通讯,这里使用的机制是SCOM模块。每个线程都是进行数据

3、处理的一个单元,有的是处理简单的,有的处理是相对复杂的过程,简单的线程可以不包括任何的通道,而进行复杂数据处理的线程有可能包含多个的通道。2通道(Channel):RF5提供了一种通道结构是为了更方便的封装算法,这可以理解通道为并行里的串行,因为线程的执行就是由通道的串行执行来完成的,一个通道包含一组核(Icell),其主要任务就是依次顺序的执行所包含的核,主要执行的流程为:首先需要初始化通道模块,然后建立通道对象,注册该通道所包含的核对象,接着依次执行每个核,执行完成了后就销毁对象,最后退出。每个通道可以包含多个核,每个核都要进行初始化后在调用CHAN_regCell注册。通道对象的结构

4、如下:typedefstructCHAN_Obj{ICELL_Obj*cellSet;/*setofcellsinthechannel*/UnscellCnt;/*numberofcellsinthecellSet*/CHAN_Statestate;/*stateofthechannel*/Bool(*chanControlCB)(CHAN_HandlechanHandle);/*optionalcontrolfunction*/}CHAN_Obj;线程一般不定义通道对象,但是在CHAN_open()调用中初始化它,CHAN_open()的最后一个参数是通道属性(CHAN_Attrs)结构

5、体的地址。如果最后一个参数是NULL,那么CHAN_open()使用默认的参数。如果要想使用不同的参数,就要声明一个CHAN_Attrs的结构体,并需初始化为CHAN_ATTRS宏所定义的初值,然后根据需要可以修改其中相应的域的值,通常,其中的通道状态参数CHAN_Statestate域默认为CHAN_ACTIVE,以及通道控制回调函数参数域Bool(*chanControlCB)(CHAN_HandlechanHandle)默认为NULL。如果通道控制回调函数不是空,那么在任何的cell调用执行之前都会先调用此回调函数。一个典型的设置,一个线程为每一个通道建立一个CHAN_Obj对象(或

6、者一组类似的对象),并且为每一个cell建立一个ICELL_Obj对象(或者是与每个通道相对应的一组ICCE_Obj对象)。在线程初始化ICELL_Obj之后就会调用下面的函数:备注其中的cell指向cell对象的指针,inputIcc/outputIcc是相应的cell的ICC对象,这个调用计算单元需要的空间,并分配给定的ICC对象给单元cell。CHAN_regCell(cell,inputIcc,1,outputIcc,1);当所有的cells都已经创建并初始化之后,线程调用CHAN_open()函数来为每一个指定的通道(chanNum)传递cell对象(cellList)。这个函数

7、创建所有的XDAIS算法,并且如果单元细胞定义了cellOpen函数,则会调用每一个单元细胞的cellOpen函数,.CHAN_open(chanList[chanNum],cellList,numCells,NULL/*defaultattributes*/);最后,在运行时,线程为每一个通道(chanNum)调用CHAN_execute函数开始执行:CHAN_execute(chanList[chanNum],NUL

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。