版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章CCS開(kāi)發(fā)工具及應(yīng)用7.1CCS概述7.2CCS的安裝及窗口7.3開(kāi)發(fā)一個(gè)簡(jiǎn)單的應(yīng)用程序7.4算法和數(shù)據(jù)測(cè)試的例子7.5使用DSP/BIOS的語(yǔ)音實(shí)例7.1CCS概述7.1.1CCS的發(fā)展
CCS提供了基本代碼生成工具,它具有一系列的調(diào)試、分析能力。CCS支持如圖7-1所示的開(kāi)發(fā)周期中的所有階段。圖7-1CCS開(kāi)發(fā)周期在學(xué)習(xí)本章之前,讀者需要完成下述工作:●安裝好目標(biāo)板和相應(yīng)的驅(qū)動(dòng)程序。安裝時(shí)請(qǐng)參考硬件廠商提供的安裝說(shuō)明書(shū)?!癜惭bCCS軟件。安裝時(shí)也根據(jù)安裝說(shuō)明書(shū)安裝。如果你已經(jīng)有了CCS仿真器和TMS320C54x代碼生成工具,但是沒(méi)有完整的CCS,可按照7.2節(jié)的步驟進(jìn)行安裝?!襁\(yùn)行CCS安裝程序。安裝程序?yàn)槟繕?biāo)板提供驅(qū)動(dòng)程序,安裝完成后就可以使用目標(biāo)板上所提供的設(shè)備。
CodeComposerStudio(CCS)是TI公司推出的一個(gè)集成性DSP軟件開(kāi)發(fā)工具。在一個(gè)開(kāi)放式的插件(Plug-In)結(jié)構(gòu)下,CCS內(nèi)部集成了以下軟件工具:●TMS320C54x代碼生成工具(參見(jiàn)7.1.2節(jié));●CCS集成開(kāi)發(fā)環(huán)境(IDE)(參見(jiàn)7.1.3節(jié));●DSP/BIOS插件程序和API(參見(jiàn)7.1.4節(jié));●RTDX插件、主機(jī)接口和API(參見(jiàn)7.1.5節(jié))。
CCS的構(gòu)成及其在主機(jī)和目標(biāo)系統(tǒng)中的接口如圖7-2所示。圖7-2CCS構(gòu)成及其接口7.1.2代碼生成工具代碼生成工具是CCS開(kāi)發(fā)環(huán)境的基礎(chǔ)部分。圖7-3示出了一個(gè)典型的軟件開(kāi)發(fā)流程圖。大多數(shù)DSP軟件開(kāi)發(fā)流程都和C程序的開(kāi)發(fā)流程相似,只是DSP開(kāi)發(fā)的一些外圍器件的功能得到了一定的增強(qiáng)和提高。圖7-3軟件開(kāi)發(fā)流程圖7-3中的部分工具描述如下:●C編譯器(CCompiler)將C語(yǔ)言源代碼編譯成為匯編語(yǔ)言代碼。 ●匯編器(Assembler)將匯編語(yǔ)言源文件翻譯成機(jī)器語(yǔ)言目標(biāo)文件,機(jī)器語(yǔ)言使用的是通用目標(biāo)文件格式(COFF)。●連接器(Linker)把多個(gè)目標(biāo)文件連接成一個(gè)可執(zhí)行的目標(biāo)文件。連接器的輸入是可重定位的目標(biāo)文件和目標(biāo)庫(kù)文件。●歸檔器(Archiver)允許將一組文件保存到一個(gè)存檔文件里,稱為庫(kù)。存檔器也允許開(kāi)發(fā)人員通過(guò)刪除、替換、提取和添加文件來(lái)修改一個(gè)庫(kù)?!裰浄酱鷶?shù)匯編語(yǔ)言轉(zhuǎn)換程序(Memoric-to-algebraicTranslatorUtility)將含有助記符的匯編語(yǔ)言文件轉(zhuǎn)換成含有代數(shù)指令的匯編語(yǔ)言源文件?!窠◣?kù)程序(Library-buildUtility)創(chuàng)建滿足開(kāi)發(fā)者需要的運(yùn)行支持庫(kù)?!襁\(yùn)行支持庫(kù)(Run-time-supportLibrary)包括C編譯器所支持的ANSI標(biāo)準(zhǔn)運(yùn)行支持函數(shù)、編譯器公用程序函數(shù)、浮點(diǎn)運(yùn)算函數(shù)和C編譯器支持的I/O函數(shù)?!袷M(jìn)制轉(zhuǎn)換程序(HexConversionUtility)能夠?qū)⒁粋€(gè)COFF目標(biāo)文件轉(zhuǎn)化成TI-Tagged、十六進(jìn)制ASCII碼、Intel、Motorola-S或者Tektronix等目標(biāo)格式,也可以把轉(zhuǎn)換好的文件下載到EPROM編程器中?!窠徊嬉昧斜砥?Cross-ReferenceLister)用目標(biāo)文件參考列表文件,可顯示符號(hào)及其定義,以及符號(hào)所在的源文件?!窠^對(duì)列表器(AbsoluteLister)輸入為目標(biāo)文件,輸出為.abs文件。通過(guò)匯編.abs文件,產(chǎn)生含有絕對(duì)地址的列表文件。7.1.3CCS集成開(kāi)發(fā)環(huán)境
CCS集成開(kāi)發(fā)環(huán)境允許創(chuàng)建、編輯、編譯和調(diào)試DSP目標(biāo)程序。1.編輯源程序
CCS允許編輯C語(yǔ)言源程序和匯編語(yǔ)言源程序,開(kāi)發(fā)人員還可以通過(guò)在C語(yǔ)句后面顯示匯編命令的方式來(lái)查看C語(yǔ)言源程序,如圖7-4所示。圖7-4“hello.c”源程序集成編輯環(huán)境支持下述功能:●用彩色加亮關(guān)鍵字、注釋和字符串?!褚詧A括號(hào)和花括號(hào)標(biāo)記C語(yǔ)言塊,并可以查找匹配塊或下一個(gè)圓括號(hào)和花括號(hào);可以在一個(gè)或者多個(gè)文件中進(jìn)行查找和替換;可以向前或者向后查找和快速查找C語(yǔ)言塊?!窨梢詫?duì)多個(gè)操作進(jìn)行撤銷操作或者重新操作。●獲得上下文相關(guān)的幫助?!穸ㄖ苽€(gè)性化的鍵盤(pán)命令。圖7-5“hello.pjt”工程文件目錄2.創(chuàng)建應(yīng)用程序在CCS中,應(yīng)用程序通過(guò)向一個(gè)工程中添加文件來(lái)創(chuàng)建。工程文件中包括C語(yǔ)言源程序、匯編語(yǔ)言源程序、目標(biāo)文件、庫(kù)文件、連接命令文件和包含文件,如圖7-5所示。編譯、匯編和連接文件時(shí),可以分別指定它們要使用的選項(xiàng)。在CCS中,可以通過(guò)一個(gè)窗口來(lái)詳細(xì)為一個(gè)工程指定相應(yīng)的編譯、匯編和連接選項(xiàng)。CCS可以選擇完全編譯或增量編譯,可以編譯單個(gè)文件,也可以掃描出工程文件的全部包含文件從屬樹(shù),還可以利用傳統(tǒng)的makefiles文件進(jìn)行編譯。3.調(diào)試應(yīng)用程序CCS提供下列調(diào)試功能:●設(shè)置可選擇步數(shù)的斷點(diǎn);●在斷點(diǎn)處自動(dòng)更新窗口;●查看變量;●觀察和編輯存儲(chǔ)器和寄存器的值;●觀察和調(diào)用堆棧;●對(duì)流入目標(biāo)系統(tǒng)或從目標(biāo)系統(tǒng)流出的數(shù)據(jù)采用探針工具觀察,并收集存儲(chǔ)器映像;●繪制選定對(duì)象的信號(hào)曲線圖;●估算執(zhí)行程序性能的統(tǒng)計(jì)數(shù)據(jù);●觀察目標(biāo)程序的反匯編指令和C指令。
CCS還提供GEL語(yǔ)言,這種語(yǔ)言允許開(kāi)發(fā)者向CCS通常的運(yùn)行菜單中添加功能。7.1.4DSP/BIOS插件在軟件開(kāi)發(fā)周期的分析階段,當(dāng)調(diào)試依賴于時(shí)間的程序時(shí),傳統(tǒng)的調(diào)試方法效率低下。
DSP/BIOS插件支持用于可視化的探測(cè)、跟蹤和監(jiān)視一個(gè)DSP應(yīng)用程序的實(shí)時(shí)分析,而這種探測(cè)對(duì)程序的實(shí)時(shí)性能影響很小。例如,圖7-6顯示了一個(gè)執(zhí)行了多個(gè)線程的應(yīng)用程序的時(shí)序。圖7-6應(yīng)用程序的時(shí)序
DSP/BIOS應(yīng)用編程接口(API,ApplicationProgrammingInterface)具有下列實(shí)時(shí)分析功能:●程序跟蹤(ProgramTracing)在程序執(zhí)行期間顯示寫(xiě)入目標(biāo)系統(tǒng)日志(TargetLog)的事件并反映程序執(zhí)行過(guò)程中的動(dòng)態(tài)控制流?!裥阅鼙O(jiān)視(PerformanceMonitoring)跟蹤反映目標(biāo)資源利用情況的統(tǒng)計(jì)表,諸如處理器負(fù)荷和線程時(shí)序等?!裎募?FileStreaming)把常駐目標(biāo)系統(tǒng)的I/O對(duì)象捆綁成主機(jī)文檔。1.DSP/BIOS配置在CCS環(huán)境中,可以利用DSP/BIOSAPI定義的對(duì)象創(chuàng)建配置文件,這類文件簡(jiǎn)化了存儲(chǔ)器映像和硬件中斷服務(wù)程序矢量映像,因此,即使沒(méi)有使用DSP/BIOS應(yīng)用編程接口,也可以使用配置文件。
配置文件有兩個(gè)作用:●設(shè)置全局運(yùn)行參數(shù);●可視化創(chuàng)建和設(shè)置運(yùn)行對(duì)象的屬性。這些運(yùn)行對(duì)象由目標(biāo)系統(tǒng)應(yīng)用程序的DSP/BIOSAPI函數(shù)調(diào)用,它們包括軟中斷、I/O通道和事件日志。在CCS中打開(kāi)一個(gè)配置文件時(shí),會(huì)出現(xiàn)如圖7-7所示的窗口。圖7-7“hello.cdb”窗口2.DSP/BIOS應(yīng)用編程接口模塊傳統(tǒng)的調(diào)試(Debugging)手段相對(duì)于正在執(zhí)行的程序而言是外部的,而DSP/BIOSAPI要求將目標(biāo)系統(tǒng)程序與特定的DSP/BIOS應(yīng)用編程接口模塊連接在一起。通過(guò)在配置文件中定義DSP/BIOS對(duì)象,一個(gè)應(yīng)用程序可以使用一個(gè)或者多個(gè)DSP/BIOS模塊。在源程序代碼中,這些對(duì)象被聲明為外部的,并調(diào)用DSP/BIOS應(yīng)用編程接口。
DSP/BIOSAPI被分成下列模塊,模塊內(nèi)的任何API的調(diào)用均以下面列出來(lái)的代碼開(kāi)頭。●ATM:提供用來(lái)處理共享數(shù)據(jù)的函數(shù)?!馛54:提供特殊函數(shù)來(lái)處理DSP中斷?!馛LK:片內(nèi)定時(shí)器模塊,控制片內(nèi)定時(shí)器并且提供一個(gè)高精度的32bit的實(shí)時(shí)邏輯時(shí)鐘信號(hào)?!馜EV:用于創(chuàng)建和使用用戶定義的設(shè)備驅(qū)動(dòng)程序?!馠ST:主機(jī)輸入/輸出模塊,管理主機(jī)通道對(duì)象,允許應(yīng)用程序在主機(jī)和目標(biāo)系統(tǒng)之間傳送數(shù)據(jù)。主機(jī)通道通過(guò)靜態(tài)配置為輸入或輸出?!馠WI:硬件中斷模塊,提供對(duì)硬件中斷服務(wù)程序的支持,可以在配置文件中指定當(dāng)硬件中斷發(fā)生時(shí)需要運(yùn)行的函數(shù)?!馡DL:空閑函數(shù)模塊,管理空閑函數(shù)。空閑函數(shù)在目標(biāo)系統(tǒng)程序中沒(méi)有更高優(yōu)先權(quán)的函數(shù)運(yùn)行時(shí)啟動(dòng)。●LCK:鎖定模塊,管理全局共享資源。當(dāng)不同的任務(wù)請(qǐng)求使用同一資源時(shí),對(duì)資源的分配做出裁決?!馤OG:日志模塊,管理LOG對(duì)象。LOG對(duì)象在目標(biāo)系統(tǒng)程序執(zhí)行的時(shí)候?qū)崟r(shí)捕捉所發(fā)生的事件,并加以記錄。開(kāi)發(fā)者可以使用系統(tǒng)日志或者定義自己的日志,并可以在CCS中利用它實(shí)時(shí)查看這些日志文件?!馦BX:郵箱模塊,管理任務(wù)之間傳遞的消息?!馦EM:存儲(chǔ)器模塊,允許指定存放一個(gè)目標(biāo)程序的不同的代碼和數(shù)據(jù)段所使用的存儲(chǔ)器段。●PIP:數(shù)據(jù)通道模塊,管理數(shù)據(jù)通道?!馪RD:周期函數(shù)模塊,管理周期函數(shù)對(duì)象,它可以控制一個(gè)應(yīng)用程序的周期性執(zhí)行?!馫UE:隊(duì)列模塊,管理數(shù)據(jù)的隊(duì)列結(jié)構(gòu)?!馬TDX:實(shí)時(shí)數(shù)據(jù)交換模塊,允許主機(jī)和目標(biāo)系統(tǒng)之間進(jìn)行實(shí)時(shí)的數(shù)據(jù)交換,在主機(jī)上使用自動(dòng)OLE的客戶都可以對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)顯示和分析。●SEM:信號(hào)量模塊,管理用來(lái)使任務(wù)同步或者互斥的信號(hào)量?!馭IO:流模塊,管理那些能夠提供有效、實(shí)時(shí)的獨(dú)立設(shè)備I/O對(duì)象?!馭TS:統(tǒng)計(jì)模塊,管理統(tǒng)計(jì)累加器。●SWI:軟件中斷模塊,管理軟件中斷?!馭YS:系統(tǒng)服務(wù)模塊,提供執(zhí)行基本系統(tǒng)服務(wù)的多種用途函數(shù),這些系統(tǒng)服務(wù)包括執(zhí)行掛起程序和打印格式化文本等?!馮RC:跟蹤模塊,管理一套跟蹤控制位,這些控制位通過(guò)事件日志和統(tǒng)計(jì)累加器來(lái)控制程序信息的實(shí)時(shí)捕獲。●TSK:任務(wù)管理模塊,管理任務(wù)線程,用來(lái)對(duì)優(yōu)先級(jí)低于軟件中斷的線程進(jìn)行調(diào)度。7.1.5硬件仿真和實(shí)時(shí)數(shù)據(jù)交換
美國(guó)德州儀器公司(TI)的DSP設(shè)備提供在片仿真支持,它使得CCS能夠控制程序的執(zhí)行和實(shí)時(shí)監(jiān)視程序的運(yùn)行。增強(qiáng)型的JTAG連接提供了對(duì)在片仿真的支持,這種連接是一種可與任意DSP系統(tǒng)相連的低干擾式的連接方法。仿真接口提供主機(jī)一側(cè)的JTAG連接,如TIXDS510。為方便起見(jiàn),評(píng)估板上提供了一個(gè)在板的JTAG仿真器接口。在片仿真硬件提供了如下功能:●DSP的啟動(dòng)、停止或復(fù)位功能;●向DSP中下載代碼或者數(shù)據(jù);●檢測(cè)DSP的寄存器或者存儲(chǔ)器;●設(shè)置數(shù)據(jù)斷點(diǎn);●包括周期的精確計(jì)算在內(nèi)的多種計(jì)數(shù)能力;●主機(jī)和DSP之間的實(shí)時(shí)數(shù)據(jù)交換(RTDX)。
CCS提供在片能力的嵌入式支持,另外,RTDX通過(guò)主機(jī)和DSP的APIs提供主機(jī)和DSP之間的雙向?qū)崟r(shí)數(shù)據(jù)交換,它能夠使開(kāi)發(fā)者實(shí)時(shí)連續(xù)地觀察到DSP應(yīng)用的實(shí)際工作方式。在目標(biāo)系統(tǒng)應(yīng)用程序運(yùn)行的情況下,RTDX也允許系統(tǒng)開(kāi)發(fā)者在主機(jī)和DSP設(shè)備之間傳送數(shù)據(jù),而且這些數(shù)據(jù)可以在使用自動(dòng)OLE的客戶機(jī)上實(shí)時(shí)分析和顯示,從而可以縮短開(kāi)發(fā)時(shí)間。
如圖7-8所示,RTDX由目標(biāo)系統(tǒng)和主機(jī)兩部分共同組成,一個(gè)小的RTDX軟件庫(kù)需要依靠目標(biāo)DSP才能運(yùn)行。開(kāi)發(fā)者通過(guò)調(diào)用RTDX軟件庫(kù)里面的應(yīng)用程序接口將數(shù)據(jù)輸入或者輸出目標(biāo)系統(tǒng)的DSP,庫(kù)函數(shù)通過(guò)在片仿真硬件和一個(gè)增強(qiáng)型的JTAG接口將數(shù)據(jù)輸入或者輸出主操作平臺(tái),在DSP應(yīng)用程序運(yùn)行時(shí)數(shù)據(jù)可實(shí)時(shí)傳送給主機(jī)。圖7-8RTDX系統(tǒng)組成圖7-9RTDX實(shí)例7.1.6CCS小結(jié)
CCS是繼“一體化的DSP解決方案”后,TI公司為鞏固自己在DSP業(yè)界的地位而在開(kāi)發(fā)工具方面的一次重拳出擊。CCS的集成開(kāi)發(fā)環(huán)境使得代碼開(kāi)發(fā)過(guò)程從編輯、編譯到調(diào)試及代碼性能測(cè)試都集成在一個(gè)環(huán)境下進(jìn)行,而且各項(xiàng)功能都有了一定程度的提升,簡(jiǎn)化了開(kāi)發(fā)過(guò)程,并降低了代碼開(kāi)發(fā)的難度。7.2CCS的安裝及窗口7.2.1CCS的安裝1.系統(tǒng)配置要求(1)機(jī)器類型:IBMPC及兼容機(jī)。(2)操作系統(tǒng):MicrosoftWindows95/98/2000或WindowsNT4.0。(3)當(dāng)使用硬件開(kāi)發(fā)時(shí)需要主機(jī)空余一條ELSA插槽,以便插入驅(qū)動(dòng)板。2.安裝CCS
安裝過(guò)程包括兩個(gè)階段。(1)安裝CCS到系統(tǒng)中。將CCS安裝光盤(pán)放入光盤(pán)驅(qū)動(dòng)器,運(yùn)行CCS安裝程序setup.exe。如果在WindowsNT下安裝,則用戶必須要具有系統(tǒng)管理員的權(quán)限。安裝完成后在桌面上會(huì)有“CCS2('C5000)”和“SetupCCS2('C5000)”兩個(gè)快捷方式圖標(biāo)(如圖7-10所示),分別對(duì)應(yīng)CCS應(yīng)用程序和CCS配置程序。圖7-10CCS快捷方式圖標(biāo)(2)運(yùn)行CCS配置程序,設(shè)置驅(qū)動(dòng)程序。如果CCS在硬件目標(biāo)板上運(yùn)行,則先要安裝目標(biāo)板驅(qū)動(dòng)卡,然后運(yùn)行CCS配置驅(qū)動(dòng)程序,最后才能執(zhí)行CCS。除非用戶改變CCS應(yīng)用平臺(tái)類型,否則只需運(yùn)行一次CCS配置程序。3.CCS配置程序
CCS配置程序用來(lái)定義DSP芯片和目標(biāo)板類型。單擊桌面上的SetupCCS2快捷方式圖標(biāo),彈出如圖7-11所示的對(duì)話框。圖7-11CCS配置對(duì)話框7.2.2CCS的文件和變量1.安裝目錄在安裝CCS的過(guò)程中將會(huì)在CCS的安裝目錄(默認(rèn)的安裝目錄是:c:\ti)里創(chuàng)建如下的子目錄,如圖7-12所示。在Windows系統(tǒng)目錄(c:\windows或者c:\winnt)里也會(huì)創(chuàng)建一些子目錄。
圖7-12CCS安裝目錄下的子目錄
c:\ti目錄包含下面這些目錄:●bin:各種不同用途的程序文件?!馽5400\bios:DSP/BIOS應(yīng)用程序接口在創(chuàng)建應(yīng)用程序時(shí)需要用到的文件。●c5400\cgtools:德州儀器公司的源代碼生成工具?!馽5400\examples:源程序?qū)嵗!馽5400\rtdx:對(duì)RTDX有用的一些文件。
●c5400\tutorial:TICCS教程所用到的示例?!馽c\bin:關(guān)于CCS環(huán)境的程序文件。●cc\gel:CCS所用到的GEL文件?!馾ocs:一些pdf格式的文件和手冊(cè)。如果安裝時(shí)沒(méi)有選擇安裝全部文件,則需要在CD-ROM里查看pdf格式的用戶手冊(cè)。圖7-13Windows系統(tǒng)目錄下的子目錄●myprojects:用戶自己的文件或者工程文件的存放地點(diǎn)。圖7-13所示的目錄結(jié)構(gòu)是被添加到Windows系統(tǒng)目錄里面的子目錄:●ti\drivers:各種DSP板的驅(qū)動(dòng)程序文件?!駎i\plugins:和CCS一起使用的一些插件程序?!駎i\uninstall:CCS卸載時(shí)要用到的文件。2.文件擴(kuò)展名當(dāng)使用CCS的時(shí)候,所使用的文件都具有以下的文件命名規(guī)則:●project.prj:CCS在定義一個(gè)工程或者創(chuàng)建應(yīng)用程序時(shí)用的工程文件?!駊rogram.c:C語(yǔ)言源程序?!駊rogram.asm:匯編語(yǔ)言源程序?!駀ilename.h:C程序的頭文件,DSP/BIOS應(yīng)用程序接口的包含文件。
●filename.lib:庫(kù)文件。●program.cmd:連接命令文件。●program.obj:從源文件里組合或者編譯成的目標(biāo)文件。●program.out:經(jīng)過(guò)組合、編譯、連接后生成的可執(zhí)行文件,可以在CCS里加載和執(zhí)行這個(gè)文件。●project.wks:是CCS用來(lái)保存環(huán)境設(shè)置的文件?!駊rogram.cdb:CCS所創(chuàng)建的配置數(shù)據(jù)庫(kù)文件。這個(gè)文件是要用到DSP/BIOS應(yīng)用程序接口的用戶程序所需要的,也是其他一些應(yīng)用程序可選擇的。保存配置文件時(shí)還將產(chǎn)生下列文件:*programcfg.cmd:連接命令文件。*programcfg.h54:頭文件。*programcfg.s54:匯編語(yǔ)言源程序文件。3.環(huán)境變量安裝程序?qū)?huì)在autoexec.bat(對(duì)Windows95或者Windows98而言)文件中定義如表7-1所示的變量,或者將其作為環(huán)境變量(對(duì)WindowsNT而言)。
表7-1環(huán)境變量變量描述C54x_A_DIR匯編程序用來(lái)尋找所需要的庫(kù)和DSP/BIOS、RTDX以及代碼生成工具所包含文件的一個(gè)搜尋列表。具體內(nèi)容可參見(jiàn)TMS320C54x匯編語(yǔ)言工具用戶手冊(cè)C54x_C_DIR由編譯程序和連接程序使用的用來(lái)尋找所需要的庫(kù)和DSP/BIOS、RTDX以及代碼生成工具所包含文件的一個(gè)搜尋列表。具體內(nèi)容可參見(jiàn)TMS320C54x最優(yōu)化C編譯器用戶手冊(cè)PATH加到你的路徑定義里的文件夾列表。默認(rèn)路徑是C:\TI\C5400\CGTOOLS和C:\TI\BIN7.2.3CCS的窗口、主菜單和工具條1.CCS應(yīng)用窗口圖7-14為一個(gè)典型CCS集成開(kāi)發(fā)環(huán)境窗口的示例。整個(gè)窗口由主菜單、工具條、工程窗口、編輯/調(diào)試窗口、圖形顯示窗口、內(nèi)存單元顯示窗口和寄存器顯示窗口等構(gòu)成。圖7-14CCS應(yīng)用窗口示例圖7-15工程窗口關(guān)聯(lián)菜單2.關(guān)聯(lián)菜單在任一CCS活動(dòng)窗口中單擊鼠標(biāo)右鍵都可以彈出與此窗口內(nèi)容相關(guān)的菜單,我們稱其為關(guān)聯(lián)菜單(ContextMenu)。利用此菜單,用戶可以對(duì)本窗口內(nèi)容進(jìn)行特定操作。例如,在圖形顯示窗口中單擊鼠標(biāo)右鍵,彈出如圖7-15所示的菜單。選擇不同的條目,可以完成添加程序、掃描相關(guān)性、關(guān)閉當(dāng)前工程等功能。3.主菜單主菜單中各選項(xiàng)的使用在后面的小節(jié)中會(huì)結(jié)合具體使用詳細(xì)介紹,在此僅對(duì)菜單項(xiàng)功能做簡(jiǎn)要說(shuō)明。用戶如果需要了解更詳細(xì)的信息,請(qǐng)參閱CCS在線幫助“Commands”。CCS主菜單如圖7-16所示,各項(xiàng)功能介紹如表7-2所述。圖7-16CCS主菜單表7-2主菜單簡(jiǎn)要介紹菜單項(xiàng)功能File(文件)文件管理,載入執(zhí)行程序、符號(hào)及數(shù)據(jù),文件輸入/輸出等Edit(編輯)字符串查找替換,內(nèi)存變量、寄存器變量的編輯等View(查看)工具條顯示設(shè)置,內(nèi)存、寄存器對(duì)話框的顯示等Project(工程)工程的管理、創(chuàng)建、打開(kāi)和關(guān)閉,以及編譯、構(gòu)建工程等Debug(調(diào)試)斷點(diǎn)、探針設(shè)置,程序的運(yùn)行和復(fù)位Profiler性能菜單,包括時(shí)鐘設(shè)置等GEL(擴(kuò)展功能)利用通用擴(kuò)展語(yǔ)言產(chǎn)生的擴(kuò)展功能菜單Option(選項(xiàng))選項(xiàng)設(shè)置,設(shè)置字體、顏色、鍵盤(pán)屬性等Tools(工具)包括管腳連接、命令窗口、鏈接配置等DSP/BIOSDSP/BIOS設(shè)置,包括實(shí)時(shí)分析、可視化探測(cè)等Window(窗口)窗口管理,包括窗口列表等Help(幫助)CCS在線幫助菜單4.常用工具條
CCS將主菜單中常用的命令篩選出來(lái),形成4類工具條:標(biāo)準(zhǔn)工具條、編輯工具條、工程工具條和調(diào)試工具條,依次如圖7-17~圖7-20所示。用戶可以單擊工具條上的按鈕執(zhí)行相應(yīng)的操作。圖7-17標(biāo)準(zhǔn)工具條圖7-18編輯工具條圖7-19工程工具條圖7-20調(diào)試工具條7.2.4TMS320C5402DSK的配置和使用
TMS320C5402DSK是TI公司提供的一款廉價(jià)、獨(dú)立的開(kāi)發(fā)平臺(tái),用于C54x系列DSP的開(kāi)發(fā)。系統(tǒng)開(kāi)發(fā)者可以用DSK來(lái)進(jìn)行C54xDSP應(yīng)用系統(tǒng)的開(kāi)發(fā),同時(shí),TMS320C5402DSK提供了DSP硬件設(shè)計(jì)的一個(gè)范例。利用TI公司提供的TMS320C5402DSK的電路圖紙和DSK應(yīng)用手冊(cè),DSP開(kāi)發(fā)者能夠大大縮短系統(tǒng)的設(shè)計(jì)時(shí)間。
TI的TMS320C5402DSK工具包包括:CCS安裝光盤(pán)、TMS320C5402DSK、TMS320C5402DSK使用說(shuō)明、并行口線、配套電源等(如圖7-21所示)。圖7-21TMS320C5402DSK工具包
TMS320C5402DSK的結(jié)構(gòu)如圖7-22所示,它包括以下硬件資源:●一片100MHzTMS320VC5402DSP。●一片外部64K字SRAM?!褚黄?56K字FlashMemory?!衽cCCS調(diào)試器兼容的JTAG(IEEEStd.1149.1)測(cè)試接口和主機(jī)接口,可以用于和主機(jī)并行口相連。
●電話接口。DSP通過(guò)模擬網(wǎng)絡(luò)接口(DAA,AnalogNetworkInterface)和AD50AIC與電話接口相連,電話接口接在DSP的第一個(gè)McBSP(McBSP0)上?!褚黄珹D50AIC,用作耳機(jī)和麥克風(fēng)音頻接口(3.5mm的耳機(jī)插孔),與DSP的第二個(gè)McBSP(McBSP1)相連?!馬S-232異步數(shù)據(jù)傳輸接口?!駭U(kuò)展子板(DaughterBoard)接口。
●8鍵雙列直插開(kāi)關(guān),用于用戶設(shè)置、手動(dòng)復(fù)位DSP的復(fù)位開(kāi)關(guān)?!癜迳嫌须妷恨D(zhuǎn)換芯片,用于提供1.8V的DSP內(nèi)核電壓、3.3V數(shù)字電壓和5V模擬電壓。圖7-22TMS320C5402DSK的結(jié)構(gòu)框圖
TMS320C5402DSK上面有8鍵雙列直插開(kāi)關(guān)和4個(gè)跳線,用于用戶配置DSK。表7-3描述了8鍵雙列直插開(kāi)關(guān)每一鍵的功能。表7-4給出了C5402DSP的時(shí)鐘模式(CLKMD)選擇。表7-38鍵雙列直插開(kāi)關(guān)功能開(kāi)關(guān)號(hào)碼名稱關(guān)開(kāi)1JTAG選擇外部,比如XDS510PP內(nèi)部測(cè)試控制總線2MP/MC微處理器模式微控制器模式3,4,5時(shí)鐘模式見(jiàn)表7-4見(jiàn)表7-46外部存儲(chǔ)器選擇板上外部存儲(chǔ)器板外外部存儲(chǔ)器7用戶0用戶軟件定義(1)用戶軟件定義(0)8用戶1用戶軟件定義(1)用戶軟件定義(0)表7-4時(shí)鐘模式選擇開(kāi)關(guān)5(CLKMD1)開(kāi)關(guān)4(CLKMD2)開(kāi)關(guān)3(CLKMD3)CLKMD復(fù)位默認(rèn)值DSPCPU時(shí)鐘頻率000E007H×15(無(wú)效)0019007H×10(無(wú)效)0104007H×5(100?MHz)1001007H×2(40?MHz)110F007H×1(20?MHz)1110000H×0.5(10?MHz)101F000H×0.25(5?MHz)011—保留表7-5跳線功能及默認(rèn)設(shè)置名稱描述1和2腳相連的功能2和3腳相連的功能默認(rèn)值JP1CPLD編程選擇CPLD通過(guò)J1和JTAG編程CPLD通過(guò)并行口編程1和2腳相連JP2Boot模式控制從HPI自舉加載從內(nèi)部或外部存儲(chǔ)器自舉加載2和3腳相連JP3麥克風(fēng)輸出控制無(wú)緩沖輸出低阻抗驅(qū)動(dòng)輸出2和3腳相連JP4DAA回路電流選擇125?mA(插入跳線)45?mA(拔出跳線)插入跳線
TMS320C5402DSK的配置和使用步驟如下:(1)關(guān)閉計(jì)算機(jī)并且關(guān)閉計(jì)算機(jī)的電源。(2)將TITMS320C5402DSK工具包提供的并口(打印機(jī)接口)線與DSK板相連,如圖7-23所示。(3)將并口線的另外一端與計(jì)算機(jī)的并行口相連,如圖7-24所示。如果要接入耳機(jī)、麥克風(fēng)或者子板卡,則一定要保證在DSK板上電前完成這些接入工作。
圖7-23并口線與DSK板相連示意圖圖7-24并行線與計(jì)算機(jī)的并行口相連示意圖圖7-25DSK雙列直插開(kāi)關(guān)定義(4)將DSK上的8鍵雙列直插開(kāi)關(guān)設(shè)置為1、2、3、4、7、8鍵開(kāi)啟,5、6鍵關(guān)閉。其中,1、2、3、4、5、6、7、8鍵的定義如圖7-25所示。(5)將電源線與DSK板相連。(6)將模擬電源線與TI工具包提供的變壓器相連,并將插銷插入插座。(7)啟動(dòng)計(jì)算機(jī),在使用CCS和DSK之前,確保計(jì)算機(jī)的并行口被配置為ECP或者EPP模式。圖7-26DSK配置對(duì)話框(8)如果此時(shí)沒(méi)有安裝CCS軟件,可按照7.2.1節(jié)介紹的安裝步驟安裝CCS;如果已經(jīng)安裝了CCS軟件,則按照以下步驟對(duì)CCS進(jìn)行配置:①雙擊桌面上的“SetupCCS2('C5000)”圖標(biāo),出現(xiàn)如圖7-11所示的對(duì)話框。②在“Family”中選擇“c54x”,在“Platform”中選擇“dsk”,得到如圖7-26所示的對(duì)話框。③選擇“C54xParallelPortEmulator(DSK5402)”,單擊“Import”按鈕,得到的結(jié)果如圖7-27所示。圖7-27配置結(jié)果④在“C54xParallelPort”上單擊鼠標(biāo)右鍵,選擇“Properties”,得到的“BoardProperties”對(duì)話框如圖7-28所示。⑤在該對(duì)話框中的“I/OPort”后填入前面得到的并行口地址0x378,如圖7-29所示。⑥關(guān)閉SetupCCS,選擇保存系統(tǒng)設(shè)置(SystemConfiguration),選擇啟動(dòng)CCS。圖7-28“BoardProperties”對(duì)話框圖7-29I/O端口設(shè)置7.2.5XDS510PP的配置和使用仿真器,即擴(kuò)展開(kāi)發(fā)系統(tǒng)(XDS),可用來(lái)進(jìn)行系統(tǒng)級(jí)的集成調(diào)試,是進(jìn)行DSP芯片軟硬件開(kāi)發(fā)的最佳工具。目前主要有兩種類型的仿真器:一種是傳統(tǒng)的電路仿真器,主要用于早期的TMS320C1x和TMS320C2x兩代DSP芯片的仿真,這兩代DSP芯片沒(méi)有仿真信號(hào)線;另一種是先進(jìn)的掃描仿真器,主要用于TMS320C3x、TMS320C4x、TMS320C5x、TMS320C54x、TMS320C2xx和TMS320C8x等DSP芯片的仿真,在這些DSP芯片上提供了用于仿真的信號(hào)線。采用傳統(tǒng)的電路仿真器對(duì)用戶設(shè)計(jì)的系統(tǒng)進(jìn)行硬件仿真時(shí),仿真器的電纜插頭必須插入到用戶硬件電路中DSP芯片的相應(yīng)位置,也就是說(shuō),仿真電纜的插頭引腳必須與DSP芯片的引腳一一對(duì)應(yīng)。TI的XDS/22仿真器就屬于這一類,主要用于TMS320C1x和TMS320C2x等芯片的仿真。
SEED-XDSpp仿真器的配置和使用步驟如下:(1)關(guān)閉計(jì)算機(jī)并且關(guān)閉計(jì)算機(jī)的電源。(2)使用SEED-XDSpp仿真器工具包提供的25芯仿真器連接電纜,將PC機(jī)并口與仿真盒連接(如圖7-30所示)。(3)將5V直流電源插接到220V交流電源上,并將直流5V輸出插頭插入仿真盒的插孔。(4)使用仿真器的JTAG電纜,將仿真器插到目標(biāo)系統(tǒng)的JTAG接口上,這里使用TMS320C5402DSK作為目標(biāo)系統(tǒng)。圖7-30PC機(jī)并口與仿真盒(5)將DSK上的8鍵雙列直插開(kāi)關(guān)設(shè)置為2、3、4、7、8鍵開(kāi)啟,1、5、6鍵關(guān)閉。這種設(shè)置將DSK設(shè)置為:JTAG與外部仿真器相連;DSP工作于微控制器模式;DSPCPU時(shí)鐘頻率為40MHz;外部存儲(chǔ)器使用DSK板上的外部存儲(chǔ)器。跳線按照表7-5中的默認(rèn)值設(shè)置。連接好的系統(tǒng)如圖7-31所示。圖7-31仿真器與目標(biāo)系統(tǒng)JTAG接口連接示意圖(6)啟動(dòng)計(jì)算機(jī),插入SEED-XDSpp仿真器工具包提供的驅(qū)動(dòng)光盤(pán),雙擊SEED-XDSPP的驅(qū)動(dòng)程序SetupCC54x.exe,安裝SpectrumDigitalTMS320C5000Drivers及CCS2.xDebugTools,得到如圖7-32所示的安裝畫(huà)面。圖7-32“SpectrumDigitalTMS320C5000Drivers,CCS2.xDebugTools”的安裝畫(huà)面圖7-33“SDConfig”圖標(biāo)(7)單擊“Next”按鈕,安裝SpectrumDigitalTMS320C5000CCSDebugTools,接受所有的默認(rèn)選項(xiàng)。安裝完成后,桌面上出現(xiàn)“SDConfig”圖標(biāo)(如圖7-33所示)。(8)雙擊“SDConfig”圖標(biāo),對(duì)計(jì)算機(jī)的并行口進(jìn)行配置,如圖7-34所示。圖7-34“SpectrumDigitalTMS320C5000CCSDebugTools”的進(jìn)入畫(huà)面(9)雙擊需要配置的端口名稱,如“378”,單擊“Emu”,在“Nameofhardware”中選擇“XDS510PP”,在“Emulatorport”中選擇“SPP8”,如圖7-35所示。(10)單擊圖標(biāo)可以測(cè)試XDS510PP與DSK板上的JTAG是否連接正常。圖7-35XDS510PP的端口配置示意圖(11)如果此時(shí)沒(méi)有安裝CCS軟件,可按照7.2.1節(jié)介紹的安裝步驟安裝CCS;如果已經(jīng)安裝了CCS軟件,則按照以下步驟對(duì)CCS進(jìn)行配置:①雙擊桌面上的“SetupCCS2('C5000)”圖標(biāo),在出現(xiàn)的如圖7-36所示的對(duì)話框的“Family”中選擇“c54x”,在“Platform”中選擇“emu”,在“AvailableConfigurations”中選擇“C54xPPEmulator-0x378”,單擊“Import”按鈕。圖7-36XDS510PP配置對(duì)話框②在sdgo5xx(SpectrumDigital)上單擊鼠標(biāo)右鍵,選擇“Properties”,在彈出的“BoardProperties”對(duì)話框中選擇“StartupGELFile(s)”選項(xiàng)卡,然后在StartupGEL中選擇“c5402_dsk.gel”,如圖7-37所示。圖7-37XDS510PP屬性配置③關(guān)閉SetupCCS,保存系統(tǒng)設(shè)置(SystemConfiguration),啟動(dòng)CCS。這樣用戶就完成了對(duì)CCS的配置,從而可以使用SEED-XDSpp仿真器,并且與TITMS320C5402DSK配合來(lái)完成本章后面幾個(gè)CCS的實(shí)例了。7.3開(kāi)發(fā)一個(gè)簡(jiǎn)單的應(yīng)用程序7.3.1創(chuàng)建一個(gè)新的工程在本章中,將使用CCS來(lái)創(chuàng)建一個(gè)工程,并向這個(gè)工程里添加源程序文件和庫(kù)文件,它采用標(biāo)準(zhǔn)的C語(yǔ)言庫(kù)函數(shù)來(lái)顯示一條“helloworld”消息。創(chuàng)建一個(gè)新的工程的操作步驟如下:(1)如果用戶的CCS是安裝在c:\ti目錄下,在c:\ti\myprojects目錄里新建立一個(gè)名字為“hello1”的文件夾。(如果將CCS安裝在其他的目錄下,那么就在相應(yīng)的安裝目錄中的“myprojects”文件夾里新建一個(gè)文件夾“hello1”即可。)(2)將c:\ti\c5400\tutorial\hello1文件夾里的所有的文件復(fù)制到這個(gè)新的文件夾里。(3)從Windows的開(kāi)始菜單里選擇“Programs”→“CodeComposerStudioTMS320C5400”→“CCStudio”(或者直接在桌面上雙擊CodeComposerStudio圖標(biāo)),進(jìn)入如圖7-38所示的畫(huà)面。圖7-38CCS的進(jìn)入畫(huà)面(4)選擇“Project”→“New”,彈出如圖7-39所示的對(duì)話框。(5)在“ProjectName”中輸入“myhello”作為工程名,在“Location”(位置)中選擇你所建的工作文件夾,然后在“ProjectType”中選擇“Executable(.out)”。輸入完成后單擊“Finish”按鈕,CCS將會(huì)建立一個(gè)叫做“myhello.prj”的工程文件,這個(gè)文件保存了你的工程的設(shè)置和涉及到的變量文件。圖7-39新建工程對(duì)話框7.3.2向一個(gè)工程里添加文件向一個(gè)工程里添加文件的操作步驟如下:(1)選擇“Project”→“AddFilestoProject”,然后選擇“hello.c”文件,再雙擊打開(kāi)(Open)。(2)選擇“Project”→“AddFilestoProject”,然后在文件類型中選擇“AsmSourceFiles(*.a*,*.s*)”。(3)選擇“Project”→“AddFilestoProject”,在文件類型框中選擇連接命令文件(*.cmd),然后選擇“hello.cmd”并打開(kāi)。這個(gè)文件包含程序段到存儲(chǔ)器的映射。(4)選擇“Project”→“AddFilestoProject”,進(jìn)入編譯庫(kù)文件夾(c:\ti\c5400\cgtools\lib),再在文件類型框中選擇目標(biāo)文件和庫(kù)文件(*.o*,*.lib),然后選擇“rts.lib”并打開(kāi)。這個(gè)庫(kù)對(duì)目標(biāo)系統(tǒng)DSP提供了運(yùn)行實(shí)時(shí)支持。(5)單擊緊挨著Projects、hello.pjt、Libraries和Source旁邊的“+”標(biāo)記來(lái)擴(kuò)充工程(Projects)列表,這個(gè)列表叫做工程窗口(ProjectView)。(6)此時(shí),包含文件還沒(méi)有出現(xiàn)在工程窗口里。
(7)如果需要從工程中刪除某一個(gè)文件,則只需要在工程窗口中的相應(yīng)文件上單擊鼠標(biāo)右鍵,并從彈出的菜單里選擇“Removefromproject”(刪除)即可。在創(chuàng)建程序的時(shí)候,CCS通過(guò)下面的路徑順序搜尋,就會(huì)找到文件:●包含源文件的目錄。●編譯器和匯編器選項(xiàng)的IncludeSearchPath(搜尋路徑)中列出的目錄(從左到右)?!窳性贑54X_C_DIR(編譯器)和C54X_A_DIR(匯編器)環(huán)境變量中定義的目錄列表(從左到右)。7.3.3查看源代碼
在工程窗口里雙擊hello.c文件,可在窗口的右半部看到源代碼。如果想使窗口更大一些,以便能夠看到更多的源代碼,則可以在“Option”→“Font”中選擇較小一點(diǎn)的字體。源代碼如下:/*========hello.c========*/#include<stdio.h>#include"hello.h"#defineBUFSIZE30structPARMSstr={2934,9432,213,9432,&str};/**========main========*/voidmain(){#ifdefFILEIOint i;char scanStr[BUFSIZE];char fileStr[BUFSIZE];size_t readSize;FILE *fptr;#endif/*writeastringtostdout*/puts("helloworld!\n");
#ifdefFILEIO/*clearchararrays*/for(i=0;i<BUFSIZE;i++){scanStr[i]=0/*deliberatesyntaxerror*/fileStr[i]=0;}/*readastringfromstdin*/scanf("%s",scanStr);
/*openafileonthehostandwritechararray*/fptr=fopen("file.txt","w");fprintf(fptr,"%s",scanStr);fclose(fptr);/*openafileonthehostandreadchararray*/
fptr=fopen("file.txt","r");fseek(fptr,0L,SEEK_SET);
readSize=fread(fileStr,sizeof(char),BUFSIZE,fptr);printf("Reada%dbytechararray:%s\n",readSize,fileStr);fclose(fptr);#endif}7.3.4編譯和運(yùn)行程序
CCS自動(dòng)將用戶所做的改變保存到工程設(shè)置中。在查看完源代碼之后,如果退出了CCS,則通過(guò)重新啟動(dòng)CCS,并單擊“Project”→“Open”,即可從用戶停止工作的地方開(kāi)始繼續(xù)以前的工作。編譯和運(yùn)行程序的操作步驟如下:(1)選擇“Project”→“RebuildAll”,或者單擊工具欄中的按鈕,可以重新編譯、匯編、連接工程中的所有文件,有關(guān)這個(gè)工程的信息將顯示在窗口底部的信息框中。(2)選擇“File”→“LoadProgram”,再選擇剛才重新編譯過(guò)的程序“hello.out”(該程序在C:\ti\myprojects\hello\folder),并單擊“Open”按鈕,CCS就會(huì)把程序加載到目標(biāo)系統(tǒng)DSP上。(3)選擇“View”→“MixedSource/ASM”,將同時(shí)顯示該工程的C源代碼和相應(yīng)的反匯編指令。(4)單擊混合模式窗口中任意一條匯編指令(單擊指令,而不是單擊指令的地址或者空白的區(qū)域),按F1鍵,CCS將會(huì)搜尋有關(guān)那條命令的幫助信息。(5)選擇“Debug”→“GoMain”,使程序從main函數(shù)開(kāi)始執(zhí)行,程序?qū)?huì)在main停止,由指出。(6)選擇“Debug”→“Run”,或者單擊工具欄中的(運(yùn)行)按鈕。(7)選擇“Debug”→“Halt”放棄運(yùn)行程序。圖7-40hello程序運(yùn)行結(jié)果7.3.5修改程序設(shè)置和糾正語(yǔ)法錯(cuò)誤在前一節(jié)中,由于沒(méi)有定義FILEIO,因此預(yù)處理命令(#ifdef和#endif)之間的程序沒(méi)有運(yùn)行。在這一節(jié)中,使用CCS設(shè)置一個(gè)預(yù)處理器選項(xiàng),并找出和糾正語(yǔ)法錯(cuò)誤。具體操作步驟如下:(1)選擇“Project”→“Options”。(2)從BuildOption窗口的“Compiler”欄的“Category”列表中選擇“Preprocessor”。在“DefineSymbols”框中鍵入“FILEIO”并按“Tab”鍵,如圖7-41所示。圖7-41編譯選項(xiàng)設(shè)置(3)單擊“OK”按鈕,保存新的選項(xiàng)設(shè)置。(4)選擇“Project”→“RebuildAll”,或者單擊工具欄中的(RebuildAll)按鈕。無(wú)論什么時(shí)候,只要工程選項(xiàng)改變,就必須重新編譯所有文件。(5)如果出現(xiàn)一條說(shuō)明程序含有編譯錯(cuò)誤的消息,單擊“Cancel”按鈕,在Build窗口向上移動(dòng)滾動(dòng)條,就可以看到一條語(yǔ)法錯(cuò)誤信息,如圖7-42所示。圖7-42語(yǔ)法錯(cuò)誤信息(6)雙擊描述語(yǔ)法錯(cuò)誤位置的紅色文字。注意到hello.c的源文件被打開(kāi),同時(shí)用戶的光標(biāo)會(huì)出現(xiàn)在下面這一行上:
fileStr[i]=0;(7)修改語(yǔ)法錯(cuò)誤(缺少分號(hào))。注意,緊挨著編輯窗口題目欄的文件名旁邊出現(xiàn)一個(gè)星號(hào)(*),表明源文件被修改過(guò)了。當(dāng)文件被保存后,星號(hào)隨之消失。
(8)選擇“File”→“Save”,或者按“Ctrl+S”鍵可將所做的修改保存至hello.c。(9)選擇“Project”→“RebuildAll”,或者單擊工具欄中的(RebuildAll)按鈕,CCS會(huì)重新編譯已被更新的文件。7.3.6使用斷點(diǎn)和觀察窗口當(dāng)開(kāi)發(fā)或測(cè)試程序時(shí),經(jīng)常需要在程序執(zhí)行過(guò)程中檢查變量的值。在這一節(jié)里面,將使用斷點(diǎn)和觀察窗口(如圖7-43所示)觀察這些變量的值。程序執(zhí)行到斷點(diǎn)后,還可以使用單步執(zhí)行命令。具體操作步驟如下:(1)選擇“File”→“ReloadProgram”。(2)雙擊“ProjectView”中的“hello.c”文件,可以加大窗口,以便看到更多的源代碼。
圖7-43局部變量的觀察窗口(3)把光標(biāo)放到這一行上:
fprintf(fptr,"%s",scanStr);(4)單擊工具欄按鈕或者按“F9”鍵,這一行將顯示為高亮的深紅色。(5)選擇“View”→“WatchWindow”,在CCS窗口的右下角會(huì)出現(xiàn)一個(gè)獨(dú)立的區(qū)域(在程序運(yùn)行時(shí),這個(gè)區(qū)域?qū)?huì)顯示被觀察變量的值)。(6)選擇“Watch1”標(biāo)簽,單擊“Name”列的表達(dá)式圖標(biāo),再輸入“*scanStr”作為跟蹤變量,然后單擊窗口白色區(qū)域中的任意位置。圖7-44新的觀察變量(7)選擇“Debug”→“Run”,或者按“F5”鍵。(8)在相應(yīng)的提示框中,輸入“goodbye”,并單擊“OK”按鈕。注意,在“Stdout”框中以藍(lán)色顯示輸入的文字,同時(shí)還應(yīng)注意,“WatchWindow”窗口中顯示出“*scanStr”的值。在輸入一個(gè)字符串之后,程序開(kāi)始運(yùn)行并在斷點(diǎn)處停止,程序中將要執(zhí)行的下一行以黃色高亮顯示出來(lái)。(9)單擊工具欄中的(StepOver)按鈕或者按“F10”鍵,以便執(zhí)行到所調(diào)用的函數(shù)fprintf()之后。7.3.7使用觀察窗口觀察structure變量觀察窗口除了可以觀察簡(jiǎn)單變量的值以外,還可以觀察一個(gè)結(jié)構(gòu)體中的不同成員的值。具體操作步驟如下:(1)在“WatchWindow”窗口中選擇“Watch1”標(biāo)簽,單擊“Name”列的表達(dá)式圖標(biāo)。
(2)輸入“str”作為表達(dá)式并單擊窗口白色區(qū)域中的任意位置,則顯示著“+str={...}”的一行會(huì)出現(xiàn)在“WatchWindow”窗口中。符號(hào)“+”說(shuō)明這是一個(gè)結(jié)構(gòu)體。由7.3.3節(jié)“helloworld”的源代碼可知,類型為PARMS的結(jié)構(gòu)體被聲明為全局變量,并在hello.中初始化,而這種結(jié)構(gòu)體類型在hello.h中進(jìn)行了定義。(3)單擊符號(hào)“+”,CCS將展開(kāi)這一行,并列出該結(jié)構(gòu)的所有元素以及它們的值,如圖7-45所示。圖7-45觀察一個(gè)結(jié)構(gòu)體(4)雙擊結(jié)構(gòu)體中的任何一個(gè)成員,可以打開(kāi)該成員的變量編輯(EditVariable)窗口。(5)改變變量的值并單擊“OK”按鈕,可以看到“WatchWindow”窗口中的值改變了,而且值的顏色也發(fā)生了相應(yīng)的變化,說(shuō)明該值已經(jīng)進(jìn)行了改動(dòng)。(6)在“WatchWindow”窗口中選擇“str”的變量并單擊右鍵,從彈出的菜單中選擇“RemoveCurrentExpression”,并在WatchWindow中對(duì)所有表達(dá)式重復(fù)上述操作。(7)在“WatchWindow”窗口中單擊鼠標(biāo)右鍵,從彈出的菜單中選擇“Hide”可以隱藏觀察窗口。(8)選擇“Debug”→“Breakpoints”,在“Breakpointstab”中單擊“DeleteAll”,然后單擊“OK”按鈕,全部斷點(diǎn)都被清除。7.3.8測(cè)算源代碼執(zhí)行時(shí)間在本節(jié)中,將使用CCS的profiling功能來(lái)統(tǒng)計(jì)標(biāo)準(zhǔn)輸出函數(shù)puts()的執(zhí)行情況。具體操作步驟如下:(1)選擇“File”→“ReloadProgram”。(2)選擇“Profiler”→“EnableClock”,標(biāo)記“
”將出現(xiàn)在“Profiler”菜單的“EnableClock”項(xiàng)的旁邊,該選項(xiàng)使能計(jì)算指令周期。(3)在“ProjectView”窗口中雙擊“hello.c”文件。(4)在“Profiler”菜單中選擇“StartNewSession”,然后在“ProfilerSession”名稱對(duì)話框中輸入“hello_profile”。(5)選擇“View”→“MixedSource/ASM”,匯編指令將顯示成灰色并列在每一行C代碼的下面。(6)在Profiler窗口中選擇“Setup”標(biāo)簽,把光標(biāo)置于下面所述語(yǔ)句的一行:
puts("helloworld!\n");
將這一行拖進(jìn)Profiler窗口中的“StartPoints”,如圖7-46所示。圖7-46Profiler的起始點(diǎn)(7)向下移動(dòng)滾動(dòng)條,并把光標(biāo)置于下面所述語(yǔ)句:
for(i=0;i<BUFSIZE;i++){
將這一行拖進(jìn)Profiler窗口的“EndPoints”中,如圖7-47所示。
(8)從“Debug”菜單中選擇“Restart”,然后選擇“Run”,運(yùn)行到程序結(jié)束。(9)選擇Profiler窗口中的“Ranges”標(biāo)簽,可以看到有關(guān)統(tǒng)計(jì)數(shù)據(jù)的結(jié)果,如圖7-48所示。圖7-47Profiler的結(jié)束點(diǎn)圖7-48Profiler的統(tǒng)計(jì)數(shù)據(jù)報(bào)告7.4算法和數(shù)據(jù)測(cè)試的例子7.4.1打開(kāi)和查看工程在CCS中打開(kāi)一個(gè)工程文件(*.pjt),并且查看此工程中的源代碼文件和庫(kù)文件。具體操作步驟如下:(1)如果CCS安裝在c:\ti目錄下,那么就在c:\ti\myprojects文件夾中創(chuàng)建文件夾“volume1”(如果CCS安裝在其他位置,那么就在相應(yīng)的myprojects文件夾里面創(chuàng)建文件夾“volume1”)。(2)將文件夾c:\ti\c5400\tutorial\volume1中所有的文件都復(fù)制到新建的文件夾中。(3)如果CCS還沒(méi)有運(yùn)行,則在Windows開(kāi)始菜單中選擇“Programs”→“TexasInstruments”→“CodeComposerStudio”,單擊“CodeComposerStudio”(或者雙擊桌面上的CodeComposerStudio圖標(biāo))。
(4)在Project菜單中選擇“New”,在ProjectName中輸入“volume1”,在Location中將文件夾定位到第(1)步中創(chuàng)建的“volume1”,在ProjectType中選擇“Executable(.out)”,在Target中選擇SetupCCS時(shí)的配置。單擊“Finish”,這時(shí),CCS將會(huì)在“volume1”文件夾中創(chuàng)建名為“volume1.pjt”的工程文件。(5)選擇“Project”→“AddFilestoProject”,選擇“volume.c”,單擊“Open”,也可以通過(guò)在工程窗口中的“volume1.pjt”上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇“AddFilestoProject”。(6)選擇“Project”→“AddFilestoProject”,在文件類型框中選擇“AsmSourceFiles(*.a*,*.s*)”,然后選擇“vectors.asm”和“l(fā)oad.asm”文件,單擊打開(kāi)。這些文件包含了RESET中斷跳轉(zhuǎn)到程序入口c_int00的匯編跳轉(zhuǎn)指令。對(duì)于比較復(fù)雜的程序,可以在vectors.asm中定義其他的中斷向量,或者通過(guò)DSP/BIOS自動(dòng)生成。(7)選擇“Project”→“AddFilestoProject”,在文件類型框中選擇“LinkerCommandFile(*.cmd)”,然后選擇“volume.cmd”文件,單擊打開(kāi)。這個(gè)文件是連接命令文件,它將各段映射到存儲(chǔ)器中。圖7-49展開(kāi)后的工程窗口(8)選擇“Project”→“AddFilestoProject”,瀏覽至編譯庫(kù)文件夾c:\ti\c5400\cgtools\lib。在文件類型框中選擇“ObjectandLibraryFiles(*.o*,*.lib)”,然后選擇與目標(biāo)系統(tǒng)類型相匹配的“rts.lib”庫(kù)文件,單擊打開(kāi)。這個(gè)庫(kù)文件提供了對(duì)目標(biāo)DSP的實(shí)時(shí)支持。對(duì)于某些DSP而言,它們的實(shí)時(shí)支持庫(kù)文件可能會(huì)有比較特殊的名稱,如rts_ext.lib。(9)在工程窗口中,在“volume1.pjt”上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇“ScanAllDependencies”,volume.h文件將會(huì)在工程窗口中的“Libraries”文件夾下出現(xiàn)。(10)在工程窗口中分別單擊“Projects”、“volume1.pjt”、“Libraries”、“Source”旁邊的“+”將工程列表展開(kāi),同樣,打開(kāi)庫(kù)、資源、內(nèi)容等文件夾。展開(kāi)后的工程窗口如圖7-49所示。(11)如果未出現(xiàn)工程窗口“View”→“Project”,則選擇工程窗口底部的文件圖標(biāo),然后在工程窗口中單擊“File”。(12)如果想從工程中刪除文件,則在要?jiǎng)h除的文件上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇“Removefromproject”。7.4.2回顧源代碼在ProjectView窗口中雙擊“volume.c”文件,源程序就會(huì)顯示在CCS窗口的右邊。注意“volume.c”文件中的以下幾個(gè)部分:●主函數(shù)輸出一條消息后,應(yīng)用程序處于無(wú)限循環(huán)狀態(tài)。在這個(gè)循環(huán)中,主函數(shù)調(diào)用dataIO和進(jìn)程函數(shù)。●進(jìn)程函數(shù)將增益與輸入緩沖中的各數(shù)據(jù)相乘,并且將結(jié)果數(shù)據(jù)存入輸出緩沖區(qū)中,同時(shí)也調(diào)用匯編Load子程序,該子程序占用的指令周期取決于給傳它的processingLoad值?!馾ataIO函數(shù)是一個(gè)空函數(shù),它的作用除了返回以外不執(zhí)行任何操作。這里使用CCS中的探針功能把主機(jī)文件中的數(shù)據(jù)讀取到inp_buffer緩沖區(qū)中,而不是利用C程序直接執(zhí)行輸入/輸出操作。#include<stdio.h>#include"volume.h"/*Globaldeclarations*/intinp_buffer[BUFSIZE];/*processingdatabuffers*/intout_buffer[BUFSIZE];intgain=MINGAIN;/*volumecontrolvariable*/unsignedintprocessingLoad=BASELOAD;/*processingload*/structPARMSstr={2934,9432,213,9432,&str};/*Functions*/externvoidload(unsignedintloadValue);staticintprocessing(int*input,int*output);staticvoiddataIO(void);/*========main========*/voidmain(){int*input=&inp_buffer[0];
int*output=&out_buffer[0];puts("volumeexamplestarted\n");/*loopforever*/while(TRUE){/*ReadusingaProbePointconnectedtoahostfile.*//*Writeoutputtoagraphconnectedthroughaprobe-point.*/dataIO();#ifdefFILEIOputs("beginprocessing");#endif
/*applygain*/processing(input,output);}}/*========processing========**FUNCTION:applysignalprocessingtransformtoinputsignal.*PARAMETERS:addressofinputandoutputbuffers.*RETURNVALUE:TRUE.*/staticintprocessing(int*input,int*output){intsize=BUFSIZE;while(size--){*output++=*input++*gain;}/*additionalprocessingload*/load(processingLoad);return(TRUE);}/*========dataIO========**FUNCTION:readinputsignalandwriteoutputsignal.*PARAMETERS:none.*RETURNVALUE:none.*/static
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 如何設(shè)計(jì)生動(dòng)有趣的PowerPoint課件-提高學(xué)生學(xué)習(xí)興趣
- 動(dòng)物診所遷移協(xié)議書(shū)范文
- 旅游社直播合作協(xié)議書(shū)范文模板
- 創(chuàng)業(yè)物流快遞合作協(xié)議書(shū)范文
- 噴涂線承包合同協(xié)議書(shū)范文范本
- 兩家店的合作協(xié)議書(shū)范文范本
- 甜品店租房協(xié)議書(shū)范文范本
- 2017-2023年中國(guó)全面屏手機(jī)市場(chǎng)現(xiàn)狀研究報(bào)告(目錄)
- 感恩節(jié)活動(dòng)方案【范例15篇】
- 物理個(gè)人教研計(jì)劃7篇
- GB/T 15822.1-2024無(wú)損檢測(cè)磁粉檢測(cè)第1部分:總則
- 2024年反洗錢(qián)知識(shí)競(jìng)賽參考題庫(kù)400題(含答案)
- SLT824-2024 水利工程建設(shè)項(xiàng)目文件收集與歸檔規(guī)范
- 七年級(jí)語(yǔ)文人教部編版(上冊(cè))《課外古詩(shī)詞誦讀》之《行軍九日思長(zhǎng)安故園》課件(26張)
- 2024廣西專業(yè)技術(shù)人員繼續(xù)教育公需科目參考答案(100分)
- 人民調(diào)解員業(yè)務(wù)培訓(xùn)講稿
- 新質(zhì)生產(chǎn)力解讀課件
- 2024年日歷表(空白)(一月一張-可編輯做工作日歷)
- 2023-2024學(xué)年湖北省武漢市洪山區(qū)九年級(jí)(上)期中數(shù)學(xué)試卷(含解析)
- 國(guó)開(kāi)2022年春季《小學(xué)數(shù)學(xué)教學(xué)研究》形考任務(wù)1-4題庫(kù)及答案
- 從禮儀文化的角度解讀《林黛玉進(jìn)賈府》
評(píng)論
0/150
提交評(píng)論