博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于RF5
阅读量:2023 次
发布时间:2019-04-28

本文共 3421 字,大约阅读时间需要 11 分钟。

RF现有的模块列表如下:

1ALGMIN模块
RF1提供的一个IALG执行接口成为ALGMINALGMIN模块提供了静态应用的XDAIS算法函数,可以同时在C5000C6000平台上使用。
2ALGRF模块
ALGRF模块可以使用DSP/BIOS存储管理器来创建和删除XDAIS算法,符合RF3RF5的需要。它还可能适用于其他级别的RF

3CHAN模块

CHAN负责管理算法的封装,它使定义的结构符合ICELL接口。

4ICC模块

ICC负责管理内部CELL之间的通信。

5SCOM模块

SCOM负责模块间的同步通信。
6SSCR模块
SSCR是共享的可改写存储模块。
7UTL模块
UTL是调试和诊断的统一模块。
RF主要实现三个主要的功能:存储管理,线程模型和通道封装。对于不同的应用,我们只需在这三个元素上做改变,而不用从头设计整个应用,这大大简化了开发者的开发难度,并节省了开发时间。
RF5针对大型系统,主要用于由C6 ×实现的高端系统。RF5适用于包含大量的算法,且要求多线程、多通道的应用,像图像处理、多媒体应用等。
Motion Detection程序是按照RF5框架来构造的,下面是针对该程序做简要介绍:
1.线程(Thread)
RF5框架包含四个基本数据处理元素,处在最顶层是线程,线程总是顺次执行所包含的通道。线程在一个较高级别的层次上把数据组织在一起,它们可以与别的线程,设备驱动以及别的类似结构进行通讯。每个线程都是在不断地等待消息,处理数据,并将结果传给别的线程。每个线程之间是通过SCOM来进行通讯的。
每个线程都是进行数据处理的一个单元。有的处理是很简单的
,有些处理却很复杂,简单的线程可以不包含任何通道,而复杂的线程可以包含多个通道。

该系统有四个线程,分别为

Capture线程
Process线程
Display线程
Control线程
四个线程既是分工明确,又是有序的结合。
Capture线程进行原始图像的捕获,并对捕获的图像进行转换,以便于接下来的处理;Process线程对采集进来的图像进行处理,主要包括DIFFROTATE两个处理过程,是这个程序的主要部分;Display线程将处理好的图像进行显示;Control线程主要是用来进行控制在DIFF算法中所涉及的参考帧和所着的颜色信息。

2.同步通讯机制(SCOM)

ThrProcess中包含两个SCOM对象。RF5使用SCOM对象来实现线程间的通讯。
SCOM消息是用户自定义的一种结构。一个线程通过调用SCOM putMsg ( ),SCOM消息放到一个SCOM队列中,发送给别的线程,或者通过调用SCOM getMsg()从队列中获取消息。一般情况下,发送消息指明接受线程所要读取的数据缓冲区的地址,接受消息指明发送线程所要写入的数据缓冲区的地址。在本例中,thrProcess要从thrCapture接受消息,并且要发送消息给thrDisplay
RF5使用SCOM来实现线程间的通讯:thrProcess拥有一些缓冲区,需要thrCapture写或thrDisplay读。故thrProcess需要告诉thrCapturethrDisplay这些缓冲区的位置,并且保证两个线程不会同时访问同一个缓冲区。这就要用到SCOMthrProcess创建了两种消息以分别与两个线程进行通讯。整个系统中包含许多存储区,它们可以被任何线程访问,但为了保证每次只能有一个线程访问某个存储区,当前访问该存储区的线程通过发送SCOM消息给另外一个线程,表示它放弃了访问该存储区的权利,而接受到SCOM消息的线程就可以访问该存储区了。
下面是一个利用
SCOM通信的简单例子:

本程序中的应用示例如下:

Capture线程中:
scomReceive = SCOM_create("scomCapture", &SCOM_ATTRS);

scomReceive = SCOM_open( "scomCapture" );

scomSend = SCOM_open( "scomToProcessFromCapture" );

Process线程中:

scomReceiveFromCapture = SCOM_create( "scomToProcessFromCapture",
&SCOM_ATTRS );
scomReceiveFromDisplay = SCOM_create( "scomToProcessFromDisplay",
&SCOM_ATTRS );

scomSendToCapture = SCOM_open( "scomCapture" );

scomSendToDisplay = SCOM_open( "scomDisplay" );

Display线程中:

scomReceive = SCOM_create("scomDisplay", NULL);

scomReceive = SCOM_open( "scomDisplay" );

scomSend = SCOM_open( "scomToProcessFromDisplay" );

一共创建了四个SCOMCapture创建了“scomCapture”,用来接收Process发来的空缓冲区。Process创建了“scomToProcessFromCapture”“scomToProcessFromDisplay”,前者用来接收Capture发来的满的缓冲区,后者用来接收Display发来的空的缓冲区。

3.通道(Channel)

RF5提供了一种通道结构是为了更方便地封装算法。我们可以把通道理解为并行里的串行,因为线程的执行就由通道的串行执行来完成的。一个通道包含了一组核。通道的主要任务就是依次顺序地执行所包含的核。其主要执行流程为:首先需要初始化通道模块,然后建立通道对象,注册该通道所包含的核对象,接着依次执行每个核,执行完了后就销毁对象,最后退出。要注意的是,每个通道可以包含多个核,每一个核都要进行初始化后再调用CHAN regCell注册。
本程序的
Process线程中,安排了四个通道,分别为:
1. Passthrough Channel
2. Diff Channel
3. Rotate Channel
4. Combo Channel

4.(Icell)

核实际上就是ICELL接口对象。基于RF5的应用常常包含大量的算法和通道。为了便于算法集中到应用中,RF5提出了核的概念。一个核就是包含一种XDAIS算法的容器。一个RF5通道对象可以包含多个核,也即是包含多个算法。通道通过核来调用算法。实际上,真正的数据处理是在XDAIS算法,核只是提供了一个调用算法的接口。这大大简化了工作量,便于移植。RF5提供了一个核对象接口,称为ICELL。该接口包含一个重要的结构: ICELL Fxns ,该结构包含一组函数指针。通道通过调用这些函数来调用算法。其中包含一个关键的函数cellExecute ,这个函数的功能是调用XDAIS算法来执行。上面的通道执行函数CHAN execute就包含了对每一个cellExecute的调用。
实际情况和和上面的图稍有不同,就是四个通道都没有包含
“YUV2RGB”这个CELL。所以四个通道包含的CELL数分别是:0112
“DIFF”核来说,它的具体算法的源代码存放在referenceframeworks\apps\rf5_iek\diff_ti目录下,以库文件diff_ti.l64的形式输出,存放在/lib目录下。在.cmd file文件中,有如下代码:
_l diff_ti.l64
_DIFF_IDIFF = _DIFF_TI_IDIFF;
运用这套算法,需要为它做一个CELL外壳。工程中的文件cellDiff.hcellDiff.c
就是来实现这个外壳的。
5.ICC
ICC模块是用来管理在核之间以及核与它们的线程之间的数据通讯的,我们知道线程间的数据传输是通过SCOM模块来实现的。每个ICC模块管理一个或多个ICC对象。每个核都有一组输入和输出ICC对象。这些对象是通过CHAN regCell()来注册到相应的通道中的。

转载地址:http://stgxf.baihongyu.com/

你可能感兴趣的文章
Python 包/模块导入及系统路径SYS.PATH设置关键点
查看>>
Python内置函数/内建函数,魔法方法、特殊方法 built-in functions、special method、magic method区别与联系
查看>>
图数据的攻与防:智谱AI和biendata联合组织KDD Cup 2020
查看>>
同期两篇Nature:运行温度高于1K的量子计算平台!
查看>>
知识疫图背后的故事之地区风险预测与基于搜索日志疫情预测技术实践
查看>>
从梯度信噪比来理解深度学习泛化性能为什么这么好 | AI TIME PhD ICLR专题第2期...
查看>>
人工智能是学术搜索的未来吗?
查看>>
量子计算的人才、软件和硬件:解开你对量子的困惑
查看>>
浅谈细粒度实体分类的前世今生 | AI Time PhD知识图谱专题
查看>>
直播预告:SIGDIAL2020最佳论文一作高信龙一评测任务导向型对话系统|AI TIME PHD对话系统专题-1...
查看>>
SIGDIAL 2020最佳论文得主:你的任务导向型对话系统表现够好吗?
查看>>
直播预告:任务导向对话的数据和平台建设|AI TIME PHD对话系统专题-2
查看>>
直播预告:对话系统中的个性化回复生成与异常输入检测-3
查看>>
直播预告:KdConv: 知识驱动的中文多轮对话数据集 | AI TIME PhD 对话系统专题-4
查看>>
AI 3.0时代,情感计算的颠覆性力量
查看>>
直播预告:对神经网络对抗鲁棒性正则化的认识 | AI TIME PhD
查看>>
ACL 2020最佳论文:一种全新的NLP模型测试方法CheckList
查看>>
KDD 2020(一) | 可调控的多兴趣推荐框架(作者带你读论文)
查看>>
KDD 2020(二) | GCC:图上的Contrastive Coding(作者带你读论文)
查看>>
KDD 2020(三) | 从多个环境选择性偏差中学习稳定的图结构
查看>>