1 引言

在数字信号处理系统开发过程中,通常要对算法的正确性进行验证,也就是程序调试。而传统的主机调试器必须通过在目标应用程序中插入断点,在中断目标 应用程序运行时观测目标机上各寄存器或内存变量的值。但是,由于处理系统是实时的,因此,这种经典的方法不能实时地跟踪数据的变化,有时显示的数据根本就 是错误的。这种方法的不足在笔者的图像处理系统中表现得更为突出。且不说它不能实时反映数据处理的结果,即使可以实时反映,在用memoryview方法 来观测图像处理的结果时也只是各内存单元的值,因而非常不直观,为故障诊断和系统性能测评等带来许多不便,所以,必须寻找一种方法来实时跟踪数据变化,而 且数据还应以非常直观的形式显示在主机屏幕上。

TI的Real-Time Data Ex-change(RTDX)技术就是利用DSPs的内部仿真逻辑和JTAG接口来实现主机与目标机之间的数据交换,它不占用DSPs的系统总线和串口 等I/0资源,数据传送完全可以在应用程序的后台运行,对应用程序影响很小,它完全可以在不中断目标应用程序的前提下,向主机实时发送目标机上各寄存器或 内存变量的值。而主机上的可视化应用程序也可以通过嵌入COM的APl函数来获得这些数据,并以适当的格式把数据显示出来(如表格、波形图或二维图像等形 式)。这样,就可以实时观测和分析应用程序的运行情况,使得编程人员查找和修改应用程序的错误更加方便,从而缩短系统的设计开发周期。

笔者在设计图像目标识别系统时,把摄像头信号通过视频采集卡进行采样和量化,并存放在处理机系统的外部存储器中。为了获得目标在图像中的位置,设计 时必须对采样的数据进行识别算法处理。因为笔者处理的是连续图像帧序列,因而不能在中断程序运行的情况下观测处理结果,而且无法通过只看相应memo~的 值来判断跟踪窗是否能跟上运动的目标,所以,笔者采用了RTDX技术。

2 RTDX的原理

RTDX是一种可以在不影响目标应用程序运行的情况下让主机和目标机进行实时数据传输的技术。RTDX支持双向数据流,即目标机到主机的数据流和主机到目标机的数据流。RTDX数据流示意图如图1所示。

2.1目标机到主机的数据传送

目标机为了向主机发送数据,必须设定一个输出通道oehanData。通过用户接口可将数据送到输出通道以使这些数据随即保存到RTDX目标机的缓 存(由RTDX目标函数库定义)中,然后再将这些数据通过JTAG接口发送到主机。RTDX主机函数库将接收到的数据保存在log文件中或主机的缓存中 (具体由RTDX模式来决定)。

保存在log文件中或主机缓存中的数据可以通过COM Automation Client重新获取析。下面是几种典型的COM Automation Client:

  • Visual Basic applications;
  • Visual C++ applications;
  • Lab View;
  • Microsoft Excel。

    2.2主机到目标机的数据传送

    目标机要从主机中获得数据,首先必须设定一个输入通道ichanCmd,来接受主机发出的命令,从而实现数据传输的同步。运行中,系统可通过用户接 口发送一个读取数据的请求,并将这个请求保存在RTDX目标机的缓存中,然后通过JTAG接口发送到主机。同时应由COM automation client通过COM接口把要发送的数据先写入到RTDX主;帆函数库中的缓
    存,以等待目标机读取数据的请求。当RTDX主机函数库收到从目标机发出的读取数据请求时,保存在RTDX主机函数库中的数据便可通过JTAG接口将数据发送到目标机,从而使该数据可以实时写入目标机指定的存储区域。操作完成后,主机会通知RTDX目标机函数库。

    2.3 RTDX目标机函数库的用户接口和COM接口

    利用RTDX目标机函数库的用户接口可实现在目标机DSP应用程序和主机之间进行安全可靠的数据交换。同时可利用它完成应用程序向RTDX主机库发 送数据、应用程序向RTDX主机库发送数据请求以及在目标机上提供数据缓存等功能。另外,数据发送前应先将数据拷贝到目标机缓存中,以减少对应用程序实时 性的影响。 RTDX主机库中的COM接口可用来确定COM automation client与RTDX主机函数库的通信方式。而通过COM automation client可访问保存在RTDX lox文件或BTDX主机函数库缓存中的数据。同时COM automation client也可通过RTDX主机函数库向应用程序发送数据。

    2.4 RTDX模式

    RTDX主机函数库提供了两种接受目标机数据的模式:第一种是非连续模式,在这种模式中,数据通常存到主机的log文件中。该模式一般应用于非实时 处理情况下,可在事后分析保存在log文件中的数据。第二种是连续模式,在这种模式中,数据不写入log文件,而是由RTDX主机函数库缓存,它一般应用 在实时情况下。

    3 基-ZRTDX的视频数据传输

    在程序调试时,笔者利用RTDX技术在主机上显示采集图像处理后的结果以验证算法的性能,并通过设定主机与目标机的握手信号来在主机上实现动态的视频显示。

    考虑到数据传输都由JTAG接口完成而且图像数据量很大,调试中往往采用将512X512图像每4个相邻像素取一个点的方法来将分辨率降为 128X128,因为减少数据量可提高显示帧频。当数据通过RTDX通道传到主机时,128X128的图像数据可通过每个像素扩展成4个相邻的像素来恢复 图像。最后通过VC的位图显示函数来显示图像结果。图2所示是其视频数据流示意图。

    为了使主机与目标机之间能正确地传送和接受数据,主机应用程序和目标机应用程序都要嵌入支持RTDX的APl函数。下面详细介绍两者之间的操作流程。

    3.1在DSP应用程序中使用RTDX

    在DSP应用程序中通过APl函数调用RTDX目标机函数库时,必须将相应的API函数嵌入应用程序中。其步骤如下:

    (1)设定相应的RTDX通道为全局对象

    RTDX通道为单向传输。设定RTDX输出通道ochanData可使目标机向主机传输数据;而设定RT-DX输入通道ichanCmd则可使主机向目标机传输命令数据,同时,可用输入通道来同步主机与目标机。

    其程序如下:
    RTDX_CreatOutputChannel(ochanData);
    RTDX_CreatlnputChannel(ichanCmd);
    Void Task ch()
    RTDX_enableOutput(&ochanData);
    RTDX_enablelnput(&ichanCmd)

    //START为主机向目标机发送
    的传输开始控制命令(用户自定义)

    Retumcode二RTDX_read(&ichanCmd,
    received,4);
    )while(received[0]!:START);

    (2)设定RTDX_Poll()的调用方式

    RTDX目标机函数库是通过调用函数RTDXPon()来实现主机与目标机间的通信的。RTDX_Poll()的调用有两种方式:一种是在应用程序中调用,另一种是利用中断服务程序调用。程序如下
    while(RTDX_writing!二NUIL)
    #ifRTDX_POIIJNG
    RTDX_Poll();
    #endif )

    若将宏RTDX_POII,ING_IMPLEMENTATION定义为1,则表示在应用程序中调用RTDX_Poll(),而如果将其定义为0,则表示在中断服务程序中调用
    RTDX_Poll()。

    (3)目标机向主机发送视频数据

    若采集数据空间的一帧图像(512X 512),可通过调用函数RTDX_write()发送到主机,并可将一帧图像分成若干块传输,每一块数据为1k。程序如下:

    fOr(cond:0;cond<0x10;cond++)
    rawdat_temp'baseadd+cond*0x4000;
    rawdat二(unsignedint*)mwdat_temp;
    /*图像在目标机上的地址*/
    fOr(count:0;count<OxlO;count++)
    while(!RTDX-write(&ochan,mwdat+count*datanum,datanum*sizeof(int)));

    3.2在VC编程环境下使用RTDX

    在VC环境下获取RTDX主机函数库缓存中的数据并显示的步骤如下:

    (1)在VC中实现与RTDX主机函数库的握手

    (Handshanking)程序如下:
    ::Colnitialize(NULL); //initializeCOM
    ::Variantlnit(&sa); //initializeVARIANTsa
    h二ndx.Createlnstance(uuidof(RTDXINTLib::Rtdx-
    Exp)); //instantiate出eRTDX//COMObiect
    订(FAILED(血)){
    MessageBox(//Error:Instantiationfailed!//);
    return-1; )
    status二rtdx->Open("ochan'',"R");
    //opepachannel(ochan)fOrreading
    订(status!二Success){
    MessageBox("-Error
    fdled!");
    return-1; 1

    (2)在VC中重新获得由目标机传送来的数据

    rtck->ReadSAl4(&sa);
    //read a 32-ht integermessage
    switch(status) {
    //teststatus returnedfrom ReadSAl4
    case Success:
    for(i:0;i<(signed)sa.parray->
    rgsabound[0].cElements;i++)
    {hr二::SafeArrayGetElement(sa.parray,
    &i,(10ng*)&data);
    datatemp:(unsignedint)data;
    fOr(intitochar:0;itochar<4;itochar十+)
    ImageT[count+itochar];(char)(datatemp
    >>itochar-k9)&队000000ff);
    count+:4;1//counter为传输像素计数器
    break;
    case Failure:
    MessageBox(-Error:ReadSAl4
    returnedfmlure!\n");
    case
    return-1;
    EnoDataAvailsble:
    MessageBox("NODataiscurrendy
    available!");
    return-1;
    case EendOfl_ogFile:
    MessageBox("DataProcessingComplete!")
    1 while(status!二EEndOfLogFile)

    (3)在VC中显示数据的程序如下:

    if(count二:16384) //128*128:
    count二0;
    br(inti:0;i<m_nHeidlt;i++)
    for(intj:0¨<m_nWidth;j++)
    lpTemlmage¨*m_nWidth+¨:ImageT
    [(m_nHei少t-i-1)*m_nWidth+¨
    m_rawdat:RawToDib(hlmage);
    Draw(m_rawdat,dc,1eft,top);
    /*调用函数Draw()画图*

    4 结束语
    RTDX是一种非常优秀的实时数据传输技术,为软件调试提供了一种全新的方法。该项技术所设计的调试软件具有占用系统资源少、速 度快和COM Automatic Client选择灵活等特点,为DSP编程人员发现程序错误和监测系统运行状况提供了实时的、直观的表示形式。其实,RTDX不但可以用在软件调试过程 中,而且可用于医疗监测、工业控制等领域。

RTDX在图像处理中的应用相关推荐

  1. 傅里叶变换在图像处理中的应用初步学习

    1 理解傅里叶变换在图像处理中的应用 一维傅里叶变换的作用对象是信号,信号是一维连续的:随着时间不断推移,信号强度的变换情况,可称为时域. 图像处理中的傅里叶变换的作用对象是二维矩阵.随着位置的不断改 ...

  2. 傅里叶变换在图像处理中的作用

    傅立叶变换在图像处理中非常的有用.因为不仅傅立叶分析涉及图像处理的很多方面,傅立叶的改进算法, 比如离散余弦变换,gabor与小波在图像处理中也有重要的分量. 印象中,傅立叶变换在图像处理以下几个话题 ...

  3. 5、VTK在图像处理中的应用

    5.VTK在图像处理中的应用 图像是VTK中一个非常重要的数据.数字图像广泛应用于工业生产.生物医学.媒体娱乐.地质.气象等重要领域,数字图像处理具有重要的应用价值.我们在掌握了VTK的基本知识后,这 ...

  4. 寻找下一款Prisma APP:深度学习在图像处理中的应用探讨

    在9月23日到9月24日的MDCC 2016年中国移动者开发大会"人工智能与机器人"专场中,阿里云技术专家周昌进行了题为<寻找下一款Prisma APP:深度学习在图像处理中 ...

  5. 中blur函数_Comonad在图像处理中的应用

    前几天我回答了一个关于comonad的问题Monad和Comonad到底是什么东西?.其中有讲到comonad的应用例子,但都还不够直观和实用.后来找到一个Comonad在图像处理中的应用的例子,觉得 ...

  6. matlab在图像处理中的应用论文,MATLAB在数字图像处理中的应用

    摘要:数字图像处理是一门新兴技术,经过计算机硬件的快速发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,这就使得其处理速度越来越快,能更好的为人们服务.数字图像处理是一种通过计算 ...

  7. 窗函数在图像处理中的应用

    窗函数在图像处理中的应用 1. 频谱混乱的三角函数图像 下图是一个45度倾斜的单一频率的余弦函数图像,请注意图中的边界都不是均匀过渡到外界的,全是不连续的跳变. 下面来看看这幅图的频谱会是什么样? 频 ...

  8. 模糊数学在计算机方面的应用,模糊数学理论在图像处理中的应用

    摘要:用计算机来处理图片已成为计算机研究的一个重要方向,基于模糊数学的图像处理技术是计算机图像处理中的重要计算.图像本质上具有模糊性,因此模糊信息处理技术在图像处理中的使用有其必然性.提出一种基于模糊 ...

  9. 【图像识别】【读论文】模式识别方法概论模式识别及其在图像处理中的应用

    <模式识别及其在图像处理中的应用> 1.模式识别基本框架 一般认为,模式识别是通过具体的事物进行观测所得到的具有时间.空间分布的信息,模式所属的类别或同一类中模式的总体成为模式类,其中个别 ...

最新文章

  1. WCF后续之旅(16): 消息是如何分发到Endpoint的--消息筛选(Message Filter)
  2. mysql order by 多字段排序
  3. 时间序列数据的存储和计算 - 开源时序数据库解析
  4. mysql 白皮书_mysql企业版 《 MySQL企业版中文白皮书 》.cn.doc
  5. P4884-多少个1?【BSGS】
  6. 没有为 ucrtbase.dll 加载符号_深入理解Java虚拟机(类加载机制)
  7. 人脸识别冤枉了98%的好人,伦敦警察局长:我很满意
  8. 网站可行性报告范文_合肥可以做可行性研究报告范文
  9. Win11如何开启移动热点?Win11开启移动热点的方法
  10. .texi文件如何转成pdf
  11. 计算机系统的性能建模与设计 排队论实战,计算机系统的性能建模与设计:排队论实战(计算机科学丛书)...
  12. 自由传奇|为你的队伍加油!
  13. Java注解是怎么成功上位的?
  14. 直播美颜SDK动态贴纸详解
  15. Android入门教程(八)
  16. win7中USB音箱没有声音解决的方法
  17. 创业第一步做什么?——走出自己的“舒适区”
  18. 用大白话来说一说对spring IOC、DI 的理解
  19. L2-038 病毒溯源 (25 分)
  20. lua怎么嵌入php,Lua教程(一):在C++中嵌入Lua脚本

热门文章

  1. 向日葵控正在连接服务器,向日葵连接服务器失败
  2. 用photoshop结合切片工具处理超级大图,例如原图为完整的台湾省19级图片
  3. PDF文档页码怎么设置
  4. 无居士 无居所 苏轼_如何安装和设置居所家庭安全系统
  5. python 英文文本中的关键词提取
  6. mysql 词频分析_从Mysql中取出数据并用jieba统计词频
  7. 雷丁CAN通讯信号上位机,比德文,宝路达,看通讯报文,查故障,灰常方便实用
  8. 蜂巢输入法android,讯飞输入法Android新版蜂巢输入模型
  9. 我是一名铺砖匠——铺砖问题汇总(DP)
  10. AcWing 算法基础课第三节基础算法3 双指针、位运算、离散化、区间合并