DSP集成开发环境CCS开发指南_部分10精_第1页
DSP集成开发环境CCS开发指南_部分10精_第2页
DSP集成开发环境CCS开发指南_部分10精_第3页
DSP集成开发环境CCS开发指南_部分10精_第4页
DSP集成开发环境CCS开发指南_部分10精_第5页
免费预览已结束,剩余6页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第六章实时分析16. 使用Load Control窗口逐渐增加处理load值。(如果在DSP应用程序停止工 作的情况下滑动Load Control窗口的控制条,贝U RTDX将新的load控制值缓存在 主机上。这些值直到DSP应用程序重新运行、并调用 RTDX_readNB以请求从主 机刷新load值时才会有影响)。17. 重复步骤16,直到loadchange_PRD中的Max和Average值增加并在Executi onGraph的Assertion行出现蓝色方块,Assertion表明一个线程不满足实时期限的要 求。为什么?当load值超过某个值时,loadchange_PRD的Max值

2、开始增加,随着 load值的增加,P rocessi ng_SWI需要占用的运行时间长得致使 loadcha nge_ PRD在 超过实时期限很长时间才能开始运行。当load值增加到一定程度时,低优先级的idle循环就不再执行,主机 停止接收实时分析数据,DSP/BIOS插件停止刷新,暂停目标程序用排队数据82第六章实时分析6.5修改软中断优先级为了便于理解程序为什么不满足实时期限的要求,你需要检查软中断任务的优先 级。1. 选择Debugs Halt中止目标程序。2. 在 Project View 中双击文件 volume.cdb。3. 加亮SWI manager,注意SWI对象的优先级显示

3、在窗口的右半部分。4. 由于PRD_swi和Processing_SWI具有相同的优先级,PRD_swi不能先处理process in g_SWIo p rocessi ng_SWI 每 10ms 运行一次而 P RD_swi 每 2ms 运行一 次。当load值较高时,processing_SWI运行时间超过2ms,它使得PRD_swi不满 足实时期限的要求。5. 为了解决上述问题,需要把P RD_swi设置成最高优 先级。降低Processing_SWI的优先级。这增加了一 个第二级的优先级别,现在 P RD_swi具有最高优先 级。6. 选择File TSav保存你所作的修改。7. 选择

4、 File f Closed闭 volume.cdb。8. 选择Project f Bui或者点击工具栏按钮(Incremental Build)9. 选择 File f ReloaProgram。10. 选择Debugs Run重新运行目标程序。在程序运行时使用RTDX使能的Win dows应用程序loadctrl.exe应用程序窗口改变load值。11. 注意:现在可增加load值而不会使PRD_swi不满足实时期限的要求。12. 在进行下一章之前(完成6.6节之后),需要完成下述操作: o点击工具栏按钮或者按Shift+F5中止程序运行。DSP/BIOS插件和源程序窗口。ft止二止d亍F

5、 r斥 购 一 早FI HI I d-粘- 川 E m 需一o关闭GEL对话框、83第六章实时分析6.6进一步探索为了进一步研究DSP/BIOS,试做下述工作:0当增加load值时,Execution Graph表明processing_SWI需要的运行时间超过1 个PRD计数周期。这是否意味着 Processing_SWI不满足实时期限的要求?请回 忆一下,PRD ticks以每毫秒为时间间隔出现的同时,Processing_SWI必须每 10ms运行一次。o如果直接从硬中断服务例程中调用 P rocess ing函数而不是从软中断中调用,那 将发生什么呢?由于硬中断优先级低于软中断优先级,

6、那将使得程序不满足实时 期限的要求。请回忆一下,当 Load值很高时,PRD_swi需要先于Processing_SWI执行。如果processing_SWI是一个硬中断,PRD_swi则不能先于 它执行。o观察CPU Load Graph。使用RTA Control Panel打开和关闭统计累积器,注意这 对CPU Load Graph无影响,这表明统计累器在处理器上放置了一个很小的 Load 值。统计累积器对Processing_SWI的统计数据有多大影响呢?可一边打开和关闭统计 累积器,一边观察统计数据,这之间的差别是各累计器所需的指令数的精确计 量。为了观察效果,记住对统计数据窗口点击

7、鼠标右键并清除统计计数。o就象在5.7节中所做的那样,在loadchange函数中增加函数STS_se1和 STS_delta调用。这样的修改对 CPU load影响如何?在dataIO函数中增加STS_set 和STS_delta的调用,这又将对CPU Load有何影响?为什么?试考虑各函数执行 时的频率。对于经常执行的函数而言,它需要的处理时间的细微的增加,都可能 对CPU Load造成很大的影响。6.7进一步学习想要更多地了解软中断属性、RTDX和PRD模块,请参见CCS和RTDX的在线 帮助或者参考 TMS320C54X DSP/BIOS User s Guide用户指南)。84第七章

8、I/O第七章I/O本章介绍用 DSP/BIOS和RTDX技术实现I/O。在本章中,将采用RTDX和DSP/BIOS使应用程序与I/O设备相连接。也可以采 用 DSP/BIOS API 的 HST、PIP和 SWI 模块。基本要求:DSP/BIOS和RTDX组件,目标板7.1打开和查看工程在CCS中打开工程文件并查看它包含的源程序及库文件。如果你把CCS安装在c:ti目录,可以创建一个新目录 c:timyproject;如果CCS 安装在其他目录,则可在相应的位置建立myp roject目录。将c:tic5400tutorialhostio1下的所有文件拷贝到新目录下。从Windows开始菜单中

9、,选择 ProgramCodeComposer Studio C54O0 CCStudio选择 Project f Ope并打开 hostio.mak。依次点击 Project、HOSTIO.MAK、Source旁的+,可以看到工程文件中包含的各种文件。hostiocfg.cmd及include中的头文件是在保存配置文件时创建的。本例程需要的文件有:o hostio.c主程序o sig nal prog.exe VB应用程序,它产生正弦波并显示输入/输出信号oo slider.exe VB应用程序,它控制输出信号幅度 hostiocfg.cmd连接命令文件,它 仅增加了名为trace的LOG对

10、象hostiocfg.s54汇编源文件hostiocfg.h54头文件1. 2. 3. 4. 5.85第七章I/O7.2查看源程序 本章中的例子模拟一个能数字化音频信号、调整音量、产生幅度可调的模拟输出 的DSP应用程序。为简单起见,该例没有使用收、发模拟信号的设备,而是使用主机产生的数字信 号测试算法。数据的输入/输出及音量控制信号是采用 RTDX在主机和目标板之 间传送的。在主机上运行的VB应用程序使用RTDX产生输入信号并显示输入/输出信号,该 程序允许开发者不中止程序运行即进行算法测试。1. 双击 Project View 中的 hostio.c源程序。2. 注意源程序的下述方面:o三

11、个RTDX通道声明为全局的。第一个输入通道控制音量,第二个输入通道接 收主机发送来的信号,输出通道用于从目标板向主机发送的输出信号。(是站在 目标板应用程序的角度来称输入和输出信道的,即:输入信道从主机接收数据, 输出信道向主机发送数据。)o当通道当前不是处于等待输入状态时,调用RTDX_channelBusy函数将返回FALSE,它表明数据已到达可供读取。如第六章所述,调用RTDX_readNB无需等待接收数据就可返回DSP应用程序。主机将数据异步写入控制通道。0RTDX_Poll用于RTDX下层应用之间的数据读/写的。o如果输入通道是使能的,RTDX_read将等待数据的到来。o如果输出通

12、道是使能的,RTDX_write将缓冲区的数据写入到输出的 RTDX通 道中。o当目标板通过调用 RTDX_enablelnput使控制通道control_channel处于使能状态 时,则该例程中的其他RTDX通道将处于非使能状态。而下一节描述的主机程序 将使能这些通道。使用con trol_cha nnel的滑动控制被视为应用程序的有机组成部 分,在目标程序中使能该通道会使人们在应用程序运行时亦清楚该通道是处于使 能状态的;而A2D通道和D2A通道是用于算法测试的。所以这些通道是通过主 机应用程序设定为使能状态或非使能状态的。#i nclude #i nclude #in clude 86

13、第七章I/O#in clude target.h#defi ne BUFSIZE 64#defi ne MINVOLUME 1typedef Int sampie; /* representation of a data sampie from A2D *11* Global declarati ons */samp le in p_buffer BUFSIZE;samp le out_buffer BUFSIZE;In t volume = MINVOLUME; /* the scali ng factor for volume control */ /* RTDX cha nn els *

14、/RTDX_Createl np utCha nn el(co ntrol_cha nn el);RTDX_CreateI npu tCha nn el(A2D_cha nn el); RTDX_CreateOut putCha nn el(D2A_cha nn el);/* Objects created by the Con figuratio n Tool */extern LOG_Obj trace;/*mai n*/Void mai n()sample *input = inp _buffer;sample *out put = out_buffer;Uns size = BUFSI

15、ZE;TARGET_INITIALIZE(); /* En able RTDX in terru pt */LOG _printf(&trace,hostio exa mple started);/* en able volume con trol input cha nnel */RTDX_e nable Inp ut(&con trol_cha nn el);Conn ecti ng to I/O Devices while (TRUE) /* Read a new volume when the hosts send it */if (!RTDX_cha nn elBusy(&co nt

16、rol_cha nn el)RTDX_readNB(&con trol_cha nn el, &volume, sizeof(volume); while (!RTDX_is Inp utE nabled(&A2D_cha nn el)RTDX_ Poll(); /* poll comm channel for inp ut */87第七章I/O/* A2D: get digitized input (get sig nal from the host through * RTDX). If A2D_cha nnel is en abled, read data from the host.

17、*/RTDX_read(&A2D_cha nn el, i nput, size*sizeof(sam pie);/* Vector Scale: Scale the input sig nal by the volume factor to * p roduce the out put sig nal.*/while(size-)*out pu t+ = *inpu t+ * volume;size = BUFSIZE;input = inp _buffer;out put = out_buffer;/* D2A: p roduce an alog out put (se nd sig na

18、l to the host through * RTDX). If D2A_cha nnel is en abled, write data to the host. */RTDX_write(&D2A_cha nn el, out put, size*sizeof(sam pie); while(RTDX_writ in g) RTDX_ Poll(); /* poll comm cha nnel for out put */88第七章I/O7.3 Sig nal prog 应用程序VB编制的应用程序signalprog.exe的源程序可用于文件signalfrm.frm。有关该应 用程序的

19、详细说明可见文件sig nalp rog. pdf。可查看几个对该例而言很重要的例程 和函数:o Test_ON。点击Test_ON按钮时运行该例程。首先,它为输入通道和输出通道 创建RTDX接口实例;接着,它打开输入/输出通道并使它们处于使能状态。该 例程同时清除图形并启动Transmit_Signal和Receive_Signal的定时器。VB源程 序中的全局变量声明把 VB应用程序中的通道和hostio.c应用程序中相应通道联 系到一起,如下:Channel n ame con sta ntsConst READ_CHANNEL = D2A_cha nn elConst WRITE_CH

20、ANNEL = A2D_cha nn elo Test_OFF该例程废止、关闭和释放 Test_ON例程创建的RTDX对象,并使定时 器处于非使能状态。o Tran smit_Sig nal首先,该函数产生正弦波信号并把正弦信号显示在Tran smittedSignal图中;然后,它试图使用 写方式将数据传送到目标板。0 Receive_Signal该函数使用ReadSAI2方式从目标板读取数据,并将信号显示在 Received Sig nal 图中。o tmr_MethodDispatch_Timer 该例程调用 Transmit_Signal和 Receive_Signal函数, 该例程在定时器被Test_On例程使能后每隔1ms被调用一次。89第七章I/O7.4运行应用程序1.2.3.4.5.6.7.3. 点击工具栏按钮或选择 Project Bui。选择File Load Program并双击 hostio.out。选择 Tools RTD%

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论