dsp学习已看dm642rf框架小结转.pdfVIP

  • 0
  • 0
  • 约5.46千字
  • 约 4页
  • 2022-08-19 发布于北京
  • 举报
DM642 RF 框架小结【转】 RF5 是德州仪器TI 公司新近推出的DSP 开发的起步代码参考框架,它以DSP/BIOS 为基础,利用 其中的数据处理元素和数据通信元素方便快捷地完成DSP 的设计与开发RF5 是RF 的 版本,其 区别于RF1 和RF3 的显著特点是其支持动态对象创建和支持线程(任务)挂起功能,因此适合系统较复 杂的应用场合。 RF5 主要实现三个功能, 管理,线程模型和通道封装,对于不同的应用, 只需在这三个元素 上做修改,而对于整个应用程序,不用从头设计,这样大大简化了开发者的开发难度,缩短了开发时间。 RF5 适用于包含大量的算法,且要求多线程,多通道的应用,如图像处理,多 应用等,以Ti 提供 的实例mpeg2lo ack 为例,对RF5 进行分析。 RF5 包含的元素有: 1 线程(Thread): RF5 框架包含四个基本的数据处理元素,处在最顶层的是线程,线程总是顺序的执行所包含的通道, 线程在一个比较高级的级别上把数据组织在一起,他们可以与别的线程,设备驱动以及别的类似结构进行 通讯,在mpeg2lookback 实例中,创建了三个线程分别是tsk Input,tsk Output 和 tskPro s。每个线程都在不断的等待消息,处理数据,并将结果发送给其他的线程,同时有可能还要发 送同步消息给其他线程已实现线程间的通讯,这里使用的机制是SCOM 模块。 每个线程都是进行数据处理的一个单元,有的是处理简单的,有的处理是相对复杂的过程,简单的线 程可以不包括任何的通道,而进行复杂数据处理的线程有可能包含多个的通道。 2 通道(Channel): RF5 提供了一种通道结构是为了更方便的封装算法,这可以理解通道为并行里的串行,因为线程的执 行就是由通道的串行执行来完成的,一个通道包含一组核(Icell),其主要任务就是依次顺序的执行所包 含的核,主要执行的流程为:首先需要初始化通道模块,然后建立通道对象, 该通道所包含的核对象, 接着依次执行每个核,执行完成了后就销毁对象,最后退出。每个通道可以包含多个核,每个核都要进行 初始化后在调用CHAN_regCell 。 通道对象的结构如下: typedef struct CHAN_Obj { ICELL_Obj *cellSet; /* set of cells he channel */ Uns t; /* number of cells he cellSet */ CHAN_S e s e; /* s e of the channel */ Bool (*chanControlCB)(CHAN_Handle chanHandle); /* optional control function */ } CHAN_Obj; 线程一般不定义通道对象,但是在CHAN_open()调用中初始化它们。CHAN_open()的最后一个参 数是通道属性(CHAN_Attrs)结构体的地址。如果最后一个参数是NULL,那么CHAN_open()使用默认 的参数。如果要想使用不同的参数,就要 一个CHAN_Attrs 的结构体,并需初始化为CHAN_ATTRS 宏所定义的初值,然后根据需要可以修改其中相应的域的值,通常,其中的通道状态参数CHAN_S e s e 域默认为CHAN_ACTIVE,以及通道控制回调函数参数域Bool (*chanControlCB)(CHAN_Handle chanHandle)默认为NULL。如果通道控制回调函数不是空,那么 在任何的cell 调用执行之前都会先调用此回调函数。 一个典型的设置,一个线程为每一个通道建立一个CHAN_Obj 对象(或者一组类似的对象),并且为 每一个cell 建立一个ICELL_Obj 对象(或者是与每个通道相对应的一组ICCE_Obj 对象). 程初始化 ICELL_Obj 之后就会调用下面的函数: 备注其中的cell 指向cell 对象的指针, inputIcc/outputIcc 是相应的cell 的 ICC 对象,这个调用计算 单元需要的空间,并分配给定的ICC 对象给单元cell。 CHAN

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档