摘 要:為了提高DSP程序的開發效率以及處理程序運行過程中出現的大量數據,介紹如何利用Matlab中的CCSLink結合CCS進行DSP程序的調試以及代碼的直接生成。利用從概念設計到實時實現的集成、統一的開發環境,完成代碼產生、代碼加載、執行以及與目標DSP進行通信。最后通過實例驗證了該方案的有效性。
關鍵詞:Matlab;CCSLink;CCS;直接代碼
中圖分類號:TP368.1文獻標識碼:B文章編號:1004373X(2008)2006803
Methods of Debugging DSP and Producing Codes Based on Matlab
LENG Bin1,LI Xueyong2,LIU Jianhua1
(1.Jiangxi Tourism Commerce College,Nanchang,330063,China;2.Nanchang Hangkong University,Nanchang,330063,China)
Abstract:In order to improve the efficient of DSP program development and handle the data in process of running program,CCSLink is used to debug DSP program in Matlab and direct code production with CCS.In the integrate and uniform development circumstance,in which the designing can be accomplished from concept to real-time actualizing,producing code,loading code,performing code and communicating with DSP can be all completed.Finally the examples validate the method.
Keywords:Matlab;CCSLink;CCS;direct code
Matlab作為一種有效的信號處理工具,已經滲透到DSP的設計當中[1]。開發者在將一個新的數字信號處理算法應用于實際前,一般是先用Matlab進行模擬驗證,當模擬結果滿意時再把算法修改成C或DSP匯編語言通過CCS在目標DSP上實現,并比較實際應用與模擬的結果以發現誤差,如此反復進行。在較新版本的Matlab(6.0以上)中提供了Matlab與DSP的統一集成環境后,眾多學者對Matlab環境下的DSP調試進行了研究[2-4]。文獻[2-4]從CCSLink的角度出發,對Matlab環境下的DSP調試進行了原理及思路上的闡述,但均未涉及到直接代碼生成。本文在介紹CCSLink的連接對象、嵌入式對象和RTDX對象的基礎上,詳細闡述Simulink環境下的直接代碼生成。
1 CCSLink及ETTIC2000概述
Matlab具有強大的分析、計算和可視化功能,但處理速度慢;DSP具有快速的信號處理能力,但是其CCS的編譯環境中數據可編輯和分析能力不如Matlab;而MathWorks公司和TI公司聯合開發的Matlab Link for CCS Development Tools(CCSLink)和Embedded Target for the TI TMS320C2000 DSP Platform(ETTIC2000),CCSLink提供了Matlab和CCS的接口,能把Matlab和TI CCS及目標DSP連接起來。利用此工具可以像操作Matlab變量一樣來操作TI DSP的存儲器或寄存器。CCSLink支持CCS能夠識別的任何目標板(C200,C5000,C600),此工具用于DSP程序的調試過程。而CCSLink與ETTIC2000的配合使用,可直接由Matlab的Simulink模型生成TIC2000DSP的可執行代碼,能在集成、統一的Matlab環境下完成DSP的整個開發過程。
2 CCSLink 環境下的DSP調試
CCSLink向用戶提供了3個組件內容,如圖1所示。
2.1 CCSLink的接口對象
2.1.1 CCS IDE的連接對象
該對象支持TI的C2000/5000/6000系列DSP,利用此對象可創建CCS IDE和Matlab的連接。用戶可以編寫用于DSP程序的Matlab語言批處理腳本,從Matlab的命令窗中直接運行CCS IDE中的應用程序,向硬件DSP的存儲器或寄存器發送或取出數據,檢查DSP的狀態,停止或啟動程序在DSP中的運行。
2.1.2 與RTDX的連接對象
該對象提供Matlab和硬件DSP之間的實時通信通道。它允許用戶在主機和目標板之間進行實時的數據交換而不用考慮目標程序的運行。RTDX連接對象實際上是CCS連接對象的一個子類,在創建CCS連接對象的同時創建RTDX連接對象,它們不能分別創建。

2.1.3 嵌入式對象
在Matlab環境中創建一個可以代表嵌入在目標C程序中的變量的對象。利用嵌入式對象可直接訪問嵌入在目標DSP的存儲器和寄存器中的變量,即把目標C程序中的變量作為Matlab的一個變量來對待,并把編輯后的信息反返回到DSP程序中。所有這些操作均在Matlab環境下完成。
2.2 CCS IDE連接對象應用
CCS IDE連接對象提供Matlab與CCS IDE和目標DSP的連接,利用此連接可以在Matlab環境中控制和操作DSP中的應用程序;利用Matlab中強大的計算、分析和可視化工具來分析和對比目標程序運行過程中的結果;而嵌入式對象則提供Matlab對DSP內存中的變量進行實時訪問和控制,這樣大大縮短嵌入式應用程序的開發調試周期。本文以運行具體程序說明調試過程。源程序PWM.pjt保存在Matlab根目錄下的project文件下。
(1) 加載DSP目標板
mypjt=ccsdsp %建立CCSLink連接對象mypjt
CCSDSP Object:%Matlab界面返回信息
Processor type:TMS320C24xx
Processor name :CPU_1
Running?:No
Board number :0
Processor number :0
Default timeout :10.00 secs
Ccsboardinfo %測試目標板狀態
Board Board Proc Processor Processor
NumNameNumNameType
...........................................
0tds5102xx 0 CPU_1 TMS320C24xx
%Matlab環境下調試已建立好的DSP程序
profile=fullfile(Matlabroot,′myproject′,…
′PWM.pjt′);%調用硬盤目錄下的工程文件
projpath=fileparts(profile);%建立路徑
open(mypjt,projpath);%打開文件
visible(mypjt,1);%主機顯示CCS調試界面
cd(mypjt,projfile);%更改Matlab工作路徑
build(mypjt,′all′,60);%編譯程序
load(mypjt,′PWM.out′,30);%載入執行文件
animate(mypjt);%運行程序
(2) 利用CCSLink連接對象控制訪問DSP
open(mypjt,′PWM.c′,′text′);%打開源程序
open(mypjt,′PWM.cmd′,′text′);%打開命令文件
insert(mypjt,′PWM.c′,20);%在源程序第20行插入斷點
halt(mypjt);%在斷點處暫停目標DSP
restart(mypjt);%復位程序計數器PC
run(mypjt,′runtohalt′,20);%運行程序,知道第20行才把控制權返回到Matlab
PWMdat=read(mypjt,address(mypjt,′cesi1′),′int′);%讀cesi1
IPWMdat=read(mypjt,address(mypjt,′cesi2′),′int′);%讀cesi2
Write (mypjt,address(mypjt,′cesi1′),int([0]);%將數組[0]寫入cesi1
run(mypjt,′runtohalt′,20);%運行程序,知道第20行才把控制權返回到Matlab
(3) 利用嵌入式對象調試訪問DSP內存
由于CCSLINK不支持240x系列DSP,下面程序在28xx系列目標板上進行調試,過程如下:
restart(mypjt);%重新啟動工程文件
goto(mypjt,′main′);%跳到主程序入口處
PMW1=createobj(mypjt,′cesi1′);%為cesi1創建潛入式對象
read(PWM1);%讀出該嵌入式對象
write(PWM1,0);%將該嵌入式對象寫0
sct(PWM1,′size′,[400]);%更改該嵌入式對象數組長度
clear mypjt;%斷開連接
從上述程序可知,在Matlab環境下可以完成對CCS工程文件的調入、編譯,生成可執行文件并將其加載到DSP目標板。并且可以通過相應的連接對象和嵌入式對象操作函數,實現在DSP硬件不停止執行程序的情況下對DSP的C語言程序中數據結構變量的讀寫修改。
3 ETTIC2000 環境下的直接代碼生成
由第2節中可知,CCSLink為TI DSP實時應用開發的調試和測試階段提供了強大的支持,而ETTIC2000則為TI C2000 DSP實時應用開發的整個過程(概念設計、算法仿真、源代碼編寫、目標代碼生成、調試和測試)都提供了支持。利用ETTIC2000能夠從Simulink模型自動生成TI C2000 DSP的可執行代碼,并且為TI LF2407 EVM目標板上的I/O設備提供驅動代碼,使得MINULINK模型可以直接在LF2407 EVM板上進行實時測試,從而在Simulink統一環境下就可以實現整個硬件在線仿真。
3.1 ETTIC2000應用開發過程
應用ETTIC2000開發實時DSP處理的過程如下:
(1)概念構思和DSP處理算法設計;
(2)在Simulink環境下,利用DSP BLOCKSET,FIXED-POINT BLOCKSET,C2000 DSPLIB和Simulink等庫中的模塊構建算法模型,并在Simulink環境下進行仿真;
(3)如果Simulink仿真效果滿意,就可以在模型中加入需要的LF2407 EVM 目標板上的I/O模塊;
(4)設置REAL-TIME WORKSHOP 中的編譯鏈接(BUILD)選項;
(5)利用CCS中的調試工具、CCSLink 或RTDX來調試目標DSP中的程序;
REAL-TIME WORKSHOP 能夠從Simulink模型中自動產生C代碼并且插入ADC和DAC模塊指定的I/O設備驅動程序。再通過REAL-TIME WORKSHOP 面板上的BUILD按鈕,REAL-TIME WORKSHOP 會自動產生實時可執行代碼。
3.2 建立Simulink模型
由前述連接對象可知,系統已經正確安裝了TIC2000系列DSP目標板。在Matlab命令窗口輸入:C2000LIB,打開TIC2000的Simulink模塊庫,其模型庫組成如圖2所示。本系統采用2407目標板,因此只用到C2000 Target Preferences 和C2400 DSP Chip Support等模塊。本文以脈寬調制中A/D采樣控制為例,其建立的Simulink模型如圖3所示。

3.3 REAL-TIME WORKSHOP 選項設置
建立好Simulink模型后,設置其屬性,生成CCS可執行的工程文件。
在Simulink模型窗口選擇Simulation下拉菜單中選擇Configuration Parameters,彈出如圖4所示對話框。在屬性對話框中單擊Real-Time Workshop選項卡,在Category欄中選中Target configuration 修改System target file和Template make file文件名。其他選擇默認值,單擊Generate Code,就可以將Simulink模型自動生成CCS IDE的工程文件,并自動調入CCS IDE中,則該工程文件就可以在CCS IDE中編譯下載運行。其生成的工程文件在CCS IDE環境下的載入情況如圖5所示。

在直接代碼生成時,Matlab命令窗口返回信息如下:
### Writing header file c2407adcpwmtest.h
### Writing source file c2407adcpwmtest.c.
### TLC code generation complete.
### Creating project marker file:rtw_proj.tmw
### Wrapping unrecognized make command
###
### Creating c2407adcpwmtest.mk from F:\\\\Matlab71\\\oolbox\\\\rtw\\\argets\\\ic2000\\\ic2000\\\i_c2000_grt.tmf
### Creating project in Code Composer Studio(tm)
### Building Code Composer Studio(tm) project...
### Build complete
至此,代碼生成并在CCS IDE中編譯完畢。
4 結 語
本文基于Matlab環境對DSP的實時調試及直接代碼生成過程做了詳細的闡述,并結合實例給予演示。實驗證明,應用Matlab對DSP進行實時調試和代碼生成,有效地改變了傳統的設計方法。Matlab的易于操作性有助于在設計早期發現錯誤并進行實時更改。而CCSLINK與ETTIC2000的結合,使得在集成、統一的Matlab環境下完成DSP開發的整個過程。
參考文獻
[1]李真芳,蘇濤,黃小宇.DSP程序開發[M].西安:西安電子科技大學出版社,2003.
[2]王宏.Matlab 6.5及其在信號處理中的應用[M].北京:清華大學出版社,2004.
[3]許儒泉,高雪清.基于Matlab的DSP系統級的設計方法[J].現代電子技術,2004,27(13):152-156.
[4]沈鴻章,盧佩.CCSLINK 在實時DSP程序調試中的應用[J].單片機與嵌入式系統應用,2007(6):29-31.
[5]汪洋,郭麗麗,樊麗萍.一種基于Matlab的DSP開發思路的研究[J].控制工程,2006,5(13):123-126.
[6]劉和平,王維俊,江渝,等.TMS320LF240X DSP C語言開發應用[M].北京:北京航空航天大學出版社,2005.
[7]TMS320LF240X Evaluation Module User′s Guide.Texas Instruments Inc.,August 2002.
[8]Developer′s Kit for Texas Instruments DSP User′s Guide.MathWorks Inc.February 2001.
作者簡介 冷 斌 男,1981年出生,江西南昌人,在讀工程碩士,2004年7月畢業于南昌大學自動化學院,現任教于江西旅游商貿職業技術學院。研究方向為電力電子技術。
李學勇 男,1982年出生,湖南長沙人,在讀碩士研究生,2004年7月畢業于哈爾濱工程大學建筑工程學院,現就讀于南昌航空大學自動化學院。研究方向為現代電力電子技術。