打印

CCSLink实例:基于MATLAB(ccslink)调试DSP中FIR滤波程序

[复制链接]
595|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qwe890asd|  楼主 | 2017-11-16 17:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于MATLAB调试DSP中FIR滤波程序

建立起MATLAB链接之后,就可以在MATLAB命令窗通过CCS为DSP目标产生可执行代码,并进行编译、 调试和分析。下面以FIR数字滤波器程序为例,介绍基于CCSLink调试DSP程序的过程。源程序fir.pit保存在MATLAB根目录下的myprojects文件夹下。

1 、加载DSP目标板
      在MATLAB环境下执行以下代码:
  • projfile=fullfile(MATLABroot,‘myprojects’,‘fir.pit’)  %选择工程m.pjt文件

复制代码
如代码注释所示,在MATLAB环境下完成了对工程文件的调入、编译,生成可执行文件并将其加载到DSP目标板。切换到已经打开的CCS界面,可以看到在MAT— LAB环境下已经完成了对CCS的各种操作。

2、利用OOSLink连接对象控制访问DSP

在MATLAB环境下,可以控制CCS IDE中程序的显示及断点的设置,并控制程序代码的执行和暂停,读写DSP的内存变量。例如,执行以下程序:
  • open(ce,‘fir.C’,‘text’)                 %在CCS中打开源程序
  • open(ee,‘fir.cmd’,‘text’)              %在CCS中打开链接命令文件
  • insert(cc,‘fir.C’,30)                %在源文件中第3O行插入断点
  • halt(cc)                                            %暂停CPU
  • restart(cc)                                            %复位程序计数器PC
  • run(cc,‘runtohalt’,30)                            %DSP程序执行到断点
  • ddatV=read(cc,address(cc,‘table’),‘double’,7)               %读取C代码初始化滤波器系数table
  • idatV—read(CC,address(CC,‘buff’),‘single’,7)               %读取C代码初始化数据buff
  • write(cc,address(cc,‘table’),double(E0,0.0468,0.1009,
  • 0.1514,O.1009,0.0468,O])                                           %修改滤波器系数table
  • run(cc,‘runtohalt’,20)                                            %从断点处继续执行
  • ddatV=read(ee,address(cc,‘table’),‘double’,7)                             %读取修改后的数据table
  • idatV=read(cc,address(cc,‘buff’),‘single’,7)                             %读取修改后的数据buff

复制代码
阅读本例工程文件可知,在程序设计中,把滤波器系数表存储在变量ddatV中,把采样的信号数据存储在变量idatV中,在MATLAB环境下,同样可以通过regread和regwrite函数对CPU寄存器进行读写操作。这样在程序调试的过程中,就可以实时地修改滤波器的系数和读取采样信号数据;同时DSP硬件无须停止程序执行,实时地提供了程序调试的平台,直到达到满意的效果。

3 利用OCSUnk嵌入式对象调试访问DSP内存

利用MATLAB的面向对象编程技术和CCSLink技术,可以为目标程序中的所有C符号创建嵌入式对象,并通过对象来操作该C符号。
在本程序中,首先复位DSP并创建一个嵌入式对象:
  • restart(cc)                          %复位程序,使PC指向程序人口处
  • goto(cc,‘main’)                       将PC定位到主程序人口
  • cvar=createobj(cc,‘table’)                       %为操作嵌入式对象table创建MATLAB对象cvar

复制代码
上述语句创建了指向DSP中C符号的MATLAB对象,从而可以实现对其全部或者部分读取和修改。
  • read(evar)  %将嵌入式对象读人到MATLAB工作空间
  • write(cvar,4,10)  %将滤波器系数的第4个元素修改为1O
  • set(cvar,‘size’,E11]) %修改滤波器的阶数

复制代码
通过CCSLink,不仅可以为数组变量创建对象,而且可以为C定义的一切数据结构变量创建对象并进行相应的操作,例如:
  • cvar=createobj(cc,‘etype’) %创建指向C枚举常量的MATLAB对象
  • write(cvar,‘errorcondition’,‘NO_ ERROR’) %重新给枚举常量赋值

复制代码
上述语句均通过MATLAB环境下的对象cvar,实现了在DSP硬件不停止执行程序的情况下对DSP的C语言程序中数据结构变量的读写修改。这对于调试实时嵌入式系统具有很大的必要性和方便性。
         通过CCSLink,无论是CCS IDE连接对象还是嵌入式对象,均可以在MATLAB环境下进行操作,从而达到对DSP内部各种变量的读写和修改。这种能力给开发者提供了一个观察DSP实时运行的“窗口”,开发者可以在MATLAB中改变一个参数或者变量,并把此值传递给正在运行的DSP,从而可以实时地调整或者修改处理算法。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

455

主题

583

帖子

5

粉丝