CCSLink在实时DSP程序调试中的应用

来源:本站
导读:目前正在解读《CCSLink在实时DSP程序调试中的应用》的相关信息,《CCSLink在实时DSP程序调试中的应用》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《CCSLink在实时DSP程序调试中的应用》的详细说明。
简介:简要描述CCSLink的基本概念及其3个组件;用有限冲击响应FIR滤波程序作为实际例子,简要讨论基于MATLAB的DSP程序调试方法,介绍CCS IDE连接对象和嵌入式对象建立的步骤和方法。在这个过程中体现了基于MATLAB调试DSP程序的便利。

在DSP应用程序开发过程中,开发设计部分完成算法设计与验证, 一般先用MATLAB语言进行仿真, 当仿真结果满意时,再进入产品的实现阶段。将开发设计阶段的算法用C/C++或者汇编语言实现,在硬件的DSP目标板上调试,需要通过开发工具CCS(Code Composer Studios)把目标DSP程序运行的中间结果保存到PC机的硬盘上;然后调到MATLAB工作空间,与MATLAB仿真算法的中间结果进行比较,以发现DSP程序中由设计或精度导致的结果偏差。如此过程反复进行, 非常不便。

MathWorks公司和TI公司联合开发的MATLAB Link for CCS Development Tools(简称为“CCSLink”)提供了MATLAB和CCS的接口,即把MATLAB 和TI CCS 及目标DSP 连接起来。利用此工具可以像操作MATLAB 变量一样来操作TI公司DSP 的存储器或寄存器, 即整个目标DSP对于MATLAB好像是透明的,开发人员在MATLAB环境中就可以完成对CCS 的操作,从而极大地加快了DSP应用系统的开发进程。

1CCS Link简介

集成在MATLAB6.5中的CCSLink工具通过双向连接将MATLAB、CCS和DSP目标板联系起来,允许开发者利用MATLAB强大的可视化、数据处理和分析函数对来自CCS和TI DSP的数据进行分析和处理,极大地简化了TI公司DSP软件的分析、调试和验证过程。CCSLink可以支持CCS 能够识别的任何目标板,包括TI公司的DSK、EVM板和用户自己开发的目标DSP(C2000、C5000、C6000)板。MATLAB、CCSLink、CCS和硬件目标DSP的关系如图1所示。

CCSLink的主要特点如下:

① MATLAB函数可以自动完成调试、数据传递和验证。

② 在MATLAB和DSP之间实时传递数据, 而不用停止在DSP中程序的执行。

③ 支持XDS510、XDS560仿真器, 可以高速调试硬件DSP目标板。

④ 提供嵌入式对象, 可以访问C/C++变量和数据。

⑤ 对测试、验证和可视化DSP代码提供帮助。

⑥ 扩展了MATLAB和eXpress DSP的调试能力。

⑦ 符合TI eXpressDSP标准。

CCSLink在实时DSP程序调试中的应用

图1CCSLink把MATLAB和TI开发工具及目标DSP连接在一起

开发者利用CCSLink提供的MATLAB函数完成MATLAB与CCS和目标DSP的存储器及寄存器中信息之间的交换。CCSLink提供了3个组件的内容:① 与CCS IDE的连接对象;② 与RTDX的连接对象;③ 嵌入式对象。

2对象的建立

在对DSP进行操作之前,应该首先建立一个DSP目标。在MATLAB环境下,输入ccsboardinfo命令查看系统的目标板配置,系统将返回板卡的编号boardNum和处理器标号procNum的值。利用ccsdsp函数可以建立一个与CCS IDE的连接对象,ccsdsp函数以boardNum和procNum为参数,并在正确建立链接后返回其他属性,如处理器型号、处理器名称等。例如,在MATLAB环境下运行cc=ccsdsp(‘boardNum’, boardNum,‘procNum’, procNum),则建立起一个与CCS IDE的连接对象的句柄cc,从而可以通过cc,在MATLAB环境下实现对CCS的操作并控制DSP芯片。实际上,与RTDX的连接对象是与CCS IDE的连接对象的一个子类,在创建与CCS IDE的连接对象的同时创建与RTDX的连接对象,它们不能分别创建。嵌入式对象利用连接对象来访问目标DSP的存储器内容,因此在利用嵌入式对象之前必须先创建连接对象。

3基于MATLAB调试DSP中FIR滤波程序

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

3.1加载DSP目标板

在MATLAB环境下执行以下代码:

projfile=fullfile(MATLABroot,‘myprojects’,‘fir.pjt’)%选择工程fir.pjt文件

projpath=fileparts(projfile)%指定工程文件路径

open(cc, projfile)%打开工程文件

visible(cc,1) %使CCS IDE前台可见

cd(cc, projpath) %改变MATLAB工作路径

build(cc,‘all’,60)%编译工程

load(cc,‘fir.out’,30) %加载可执行文件

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

3.2利用CCSLink连接对象控制访问DSP

在MATLAB环境下,可以控制CCS IDE中程序的显示及断点的设置,并控制程序代码的执行和暂停,读写DSP的内存变量。例如,执行以下程序:

open(cc,‘fir.c’,‘text’) %在CCS中打开源程序

open(cc,‘fir.cmd’,‘text’) %在CCS中打开链接命令文件

insert(cc,‘fir.c’,30) %在源文件中第30行插入断点

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([0,0.0468,0.1009,0.1514,0.1009,0.0468,0])%修改滤波器系数table

run(cc,‘runtohalt’,20)%从断点处继续执行

ddatV=read(cc,address(cc,‘table’),‘double’,7)%读取修改后的数据table

idatV=read(cc,address(cc,‘buff’),‘single’,7) %读取修改后的数据buff

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

3.3利用CCSLink嵌入式对象调试访问DSP内存

利用MATLAB的面向对象编程技术和CCSLink技术,可以为目标程序中的所有C符号创建嵌入式对象,并通过对象来操作该C符号。

在本程序中,首先复位DSP并创建一个嵌入式对象:

restart(cc)%复位程序,使PC指向程序入口处

goto(cc,‘main’) %将PC定位到主程序入口

cvar=createobj(cc,‘table’)

%为操作嵌入式对象table创建MATLAB对象cvar

上述语句创建了指向DSP中C符号的MATLAB对象,从而可以实现对其全部或者部分读取和修改。

read(cvar) %将嵌入式对象读入到MATLAB工作空间

write(cvar,4,10) %将滤波器系数的第4个元素修改为10

set(cvar,‘size’,[11]) %修改滤波器的阶数

通过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,从而可以实时地调整或者修改处理算法。

最后要说明的是,MATLAB提供大量的CCSLink函数,本文只涉及其中的一小部分。要充分利用MATLAB强大的分析、计算和可视化功能来进行更深层次的DSP程序调试,可参阅相关资料。

提醒:《CCSLink在实时DSP程序调试中的应用》最后刷新时间 2024-03-14 00:56:51,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《CCSLink在实时DSP程序调试中的应用》该内容的真实性请自行鉴别。