版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第5章TMS320'C2000DSP開發(fā)環(huán)境
5.1開發(fā)流程5.2代碼生成工具5.3代碼調(diào)試工具5.4軟件開發(fā)平臺CodeComposer及應(yīng)用5.5Q格式5.6小結(jié)
5.1開發(fā)流程
通常DSP芯片的開發(fā)工具可以分為代碼生成工具和代碼調(diào)試工具兩大類。代碼生成工具的作用是將C或匯編語言編寫的DSP程序編譯并鏈接成為可執(zhí)行的DSP程序。代碼調(diào)試工具的作用則是對DSP程序及系統(tǒng)進行調(diào)試,使編寫的程序達到設(shè)計目標(biāo)。如圖5.1是DSP的開發(fā)流程。圖中顯示了從源程序編程到調(diào)試的過程,并指出了這種過程的反復(fù)完善、優(yōu)化的特征。圖5.1DSP開發(fā)流程圖
5.2代碼生成工具
代碼生成工具是指將用高級語言、匯編語言或用兩種語言混合編寫的DSP程序轉(zhuǎn)換為可執(zhí)行的目標(biāo)代碼程序,它除了最基本的C編譯器、匯編器和鏈接器外,還有文檔管理器、運行支持庫、交叉引用列表器、代碼格式轉(zhuǎn)換器等輔助工具程序。
C編譯器(Ccompiler):對C語言源代碼進行編碼,產(chǎn)生匯編語言源文件。
匯編器(Assembler):將匯編語言源文件轉(zhuǎn)換為機器代碼文件。TI公司新的匯編器和鏈接器創(chuàng)建的目標(biāo)文件采用一種稱為COFF的目標(biāo)文件格式(CommonObjectFileFormat,COFF)。采用這種目標(biāo)文件格式更利于模塊化編程,并且為管理代碼段和目標(biāo)系統(tǒng)存儲器提供更強有力、更靈活的方法。序或高級語言程序時,不必為程序代碼或變量指定目標(biāo)地址,由鏈接的目標(biāo)將?COFF?目標(biāo)文件和目標(biāo)庫重定位。
文檔管理器(Archiver):將一組文件集合到一個稱為庫文件的歸檔文件中,同時允許開發(fā)設(shè)計人員刪除、替代、釋放和添加庫成員。
匯編翻譯工具(Assemblytranslationassistant):將包含有助記符的匯編語言源文件轉(zhuǎn)換為一個包含代數(shù)指令的匯編語言源代碼。
庫生成工具(Library-buildutility):可以使用它構(gòu)造定制的運行支持庫。運行支持庫(Run-time-supportlibrary):包括ANSIC標(biāo)準(zhǔn)運行支持函數(shù)、編譯工具函數(shù)、浮點算術(shù)運算函數(shù)和I/O函數(shù)等C編譯器支持的函數(shù)。
代碼格式轉(zhuǎn)換工具(Hexconversionutility):將COFF目標(biāo)文件轉(zhuǎn)換為TITagged、ASCII-Hex、Intel、Motorola-s或Tektronix目標(biāo)格式,然后可將轉(zhuǎn)換后的文件編程到EPROM或FlashMemory中。
交叉列表程序(Cross-referencelister):將鏈接的目標(biāo)文件作為輸入文件,產(chǎn)生交叉列表文件。列表文件中顯示鏈接源文件中的符號、定義及引用情況。絕對地址列表(Absolutelister):接受鏈接后的目標(biāo)文件作為輸入文件,產(chǎn)生?.abs輸出文件。對.abs文件進行匯編就可產(chǎn)生一個列表,該列表文件中顯示的是目標(biāo)代碼的絕對地址。5.2.1C編譯器
所謂C編譯器,是指一種能將C語言程序自動編譯為DSP匯編程序的代碼生成工具,它為開發(fā)DSP芯片提供了一種極為便利的軟件開發(fā)手段。TI公司為其TMS320系列DSP提供了系列C編譯器,這些標(biāo)準(zhǔn)C優(yōu)化編譯器將標(biāo)準(zhǔn)C語言源文件編譯成為相應(yīng)片種的匯編語言源代碼文件,通過匯編和鏈接,產(chǎn)生可執(zhí)行的目標(biāo)文件。這些C編譯器的主要特點如下:
(1)完全符合ANSIC標(biāo)準(zhǔn);
(2)具有完整的運行支持庫,可以對運行支持函數(shù)庫和用戶定義函數(shù)庫作擴展;
(3)能夠進行優(yōu)化編譯,產(chǎn)生高效匯編代碼;
(4)用戶可進行庫或檔案的管理,可以對庫進行文件的添加、刪除、替換等,可以將目標(biāo)文件庫作為鏈接器的輸入;
(5)可控制存儲器的分配、存儲器的配置和部分鏈接;
(6)?C編譯器提供的外殼程序,只需用一個命令,就可以完成編譯、匯編和鏈接,直接從C源文件產(chǎn)生可執(zhí)行的公用目標(biāo)文件格式(COFF)文件;
(7)具有靈活的匯編語言接口;
(8)提供了多種列表文件,如源代碼文件、匯編列表文件、預(yù)處理輸出文件等;
(9)可以利用建庫應(yīng)用程序,通過不同的選擇來建立自己的運行支持庫等。5.2.2匯編器
匯編器能夠?qū)R編語言源程序文件匯編成機器語言目標(biāo)文件,目標(biāo)文件的格式為公用目標(biāo)文件格式(COFF)。匯編語言文件也可以是C編譯器產(chǎn)生的或匯編優(yōu)化器輸出的匯編文件,或者是由文檔管理器管理的宏庫內(nèi)的宏。匯編器的功能如下:
(1)處理匯編語言文件(?.ASM)中的源語句,產(chǎn)生可重新定位的目標(biāo)文件(?.obj);
(2)根據(jù)要求產(chǎn)生源程序列表文件(?.lst),并向用戶提供對此列表的控制;
(3)根據(jù)要求將交叉引用列表加到源程序列表中;
(4)將代碼分為段,并為每個目標(biāo)代碼段設(shè)置段程序計數(shù)器(SPC);
(5)匯編條件塊;
(6)支持宏調(diào)用,允許用戶在程序中或在庫內(nèi)定義宏。5.2.3鏈接器
鏈接器的作用是將目標(biāo)文件組合成一個可執(zhí)行的COFF目標(biāo)模塊。鏈接器可以接收的輸入文件包括匯編器產(chǎn)生的COFF目標(biāo)文件、命令文件、庫文件以及已部分鏈接好了的文件,它所產(chǎn)生的可執(zhí)行COFF目標(biāo)模塊可以裝入各種開發(fā)工具或由TMS320器件來執(zhí)行。在生成可執(zhí)行模塊的過程中,鏈接器實現(xiàn)重定位操作,并處理外部引用符號,其主要功能包括:
(1)定義一個與目標(biāo)系統(tǒng)存儲器一致的存儲器模塊;
(2)組合目標(biāo)文件塊;
(3)定位程序段到目標(biāo)系統(tǒng)存儲器的特定區(qū)域,賦予它們最后的地址;
(4)定義和重新定義全局符號,以賦予它們特定的值;
(5)處理輸入文件之間未定義的外部符號。5.2.4文檔管理器
文檔管理器的主要作用是將多個獨立文件組合成一個文檔(Archive)或庫(Library)。使用管理器可以方便地管理一組文件,這些文件可以是源文件或目標(biāo)文件。文檔管理器把這組文件放入一個稱為庫的文檔文件內(nèi),每個文件稱為一個庫成員,利用文檔管理器,可以方便地刪除、替換、提取或增添庫成員。利用文檔管理器可以生成不同類型的庫。用戶可以通過任何類型的文件建立庫。匯編器和鏈接器都可接收文檔管理器作為輸入,匯編器可以使用包含各源文件的庫,鏈接器可以使用包含各目標(biāo)文件的庫。5.2.5交叉引用列表器
交叉引用列表器接收已鏈接的目標(biāo)文件作為輸入,產(chǎn)生一個交叉引用列表,在列表文件中列出符號、符號的定義以及它們在已經(jīng)鏈接的源文件中的引用。
5.2.6代碼格式轉(zhuǎn)換器
代碼格式轉(zhuǎn)換器的作用是將鏈接器生成的?.out文件(COFF文件格式)轉(zhuǎn)換為若干標(biāo)準(zhǔn)的ASCII十六進制形式之一,如Intel的Hex文件格式、TI-Tagged文件格式等。這是因為大多數(shù)的EPROM編程器不支持TI的COFF格式目標(biāo)文件,所以TI提供該代碼格式轉(zhuǎn)換器,以便燒制EPROM。5.2.7絕對列表器
絕對列表器是接收已鏈接的目標(biāo)文件作為輸入,創(chuàng)建?.abs文件作為輸出的調(diào)試工具。產(chǎn)生絕對列表的操作步驟如下:
(1)匯編源文件;
(2)鏈接所產(chǎn)生的目標(biāo)文件;
(3)調(diào)用絕對列表器,使用已鏈接的目標(biāo)文件作為輸入,它將創(chuàng)建擴展名為?.abs的文件;
(4)匯編?.abs文件,這時用戶在命令中需加入一個適當(dāng)?shù)倪x項來調(diào)用匯編器,以產(chǎn)生包含絕對地址的列表文件。5.2.8應(yīng)用舉例
圖5.2為DSP系統(tǒng)產(chǎn)生可執(zhí)行文件的過程,步驟如下:
(1)使用編輯器建立命令文件,根據(jù)特定器件的結(jié)構(gòu)來定義地址范圍(如?test.cmd),建立匯編語言源程序(如test.asm);
(2)匯編上述程序,產(chǎn)生目標(biāo)文件(如test.obj)和匯編中發(fā)現(xiàn)的錯誤列表文件(如test.lst);
(3)使用鏈接器將目標(biāo)文件和命令文件中的信息組合在一起,建立可執(zhí)行文件(如test.out)和映射文件(test.map),映射文件說明鏈接器是如何在存儲器中分配程序的各個組成部分的;
(4)利用軟件調(diào)試工具將可執(zhí)行文件通過JTAG接口寫入目標(biāo)系統(tǒng),或者將COFF目標(biāo)文件轉(zhuǎn)換為EPROM編程器所能接收的文件格式固化于目標(biāo)系統(tǒng)中。圖5.2DSP系統(tǒng)可執(zhí)行文件產(chǎn)生過程
5.3代碼調(diào)試工具
代碼調(diào)試工具的作用是將代碼產(chǎn)生工具生成的可執(zhí)行?.out文件,通過調(diào)試器接口加載到TI的系統(tǒng)集成與代碼調(diào)試工具或用戶系統(tǒng)上進行調(diào)試。TMS320系列DSP芯片的集成與調(diào)試工具包括C/匯編語言源碼調(diào)試器、初學(xué)者工具DSK、軟件模擬器、評價模塊(EVM)、軟件開發(fā)系統(tǒng)(SWDS)以及硬件仿真器(XDS)。5.3.1C/匯編語言源碼調(diào)試器
C/匯編語言源碼調(diào)試器是運行在PC或SPAKC等產(chǎn)品上的一種軟件,與其它調(diào)試工具(如軟件模擬器、評價模塊、軟件開發(fā)系統(tǒng)、仿真器)配合使用。用戶的DSP程序既可用C語言調(diào)試,也可用匯編語言調(diào)試,還可進行C語言和匯編語言的混合調(diào)試。調(diào)試器提供了非常友好的人機界面,它采用面向窗口、鼠標(biāo)支持、菜單式接口和命令輸入等形式,使用十分方便。5.3.2初學(xué)者工具DSK
初學(xué)者工具是TI公司為TMS320系列DSP的初學(xué)者設(shè)計和生產(chǎn)的,含有DSP器件、模擬/數(shù)字模塊及必要的通信接口的硬件小系統(tǒng),配有專門的編譯調(diào)試軟件工具,用以練習(xí)編程和軟件調(diào)試等,是一種廉價的學(xué)習(xí)工具。用戶可以使用DSK來完成某些DSP實驗,如控制系統(tǒng)測試、語音處理應(yīng)用等,也可用來編寫和運行實時應(yīng)用的源代碼,并對其進行性能評估,還可以用來調(diào)試自己的系統(tǒng)。
DSK工具除了具有一片DSP芯片外,還具有如下軟硬件資源:一個打印機并口或RS-232串口,用來和PC機通信;一個電源插口;兩個標(biāo)準(zhǔn)的RCA插口(用以模擬信號的I/O),提供和話筒、揚聲器或其它模擬器件的連接;提供片外RAM;匯編器;調(diào)試器軟件接口。5.3.3軟件模擬器
軟件模擬器是一種模擬DSP在計算機上實現(xiàn)各種功能并在非實時條件下進行軟件調(diào)試的工具,它不需要目標(biāo)硬件支持,只需在計算機上運行,是一種廉價方便的調(diào)試工具,但它突出的缺點是運行速度慢,無法保證程序的實時性,因此,軟件模擬器適合于初學(xué)者使用或?qū)λ惴ㄟM行預(yù)調(diào)試,匯編源程序經(jīng)過匯編鏈接之后,就可將其加載到軟件模擬器進行調(diào)試。調(diào)試中所需的I/O數(shù)據(jù)可從文件中取出,輸出到I/O端口的數(shù)據(jù)也可存儲在文件中。新版本的模擬器都采用C和匯編源碼調(diào)用接口,采用C語言、匯編語言或C語言和匯編語言混合的調(diào)試方法。軟件模擬器的主要特點如下:
(1)在計算機上執(zhí)行用戶DSP程序;
(2)可修改和查看寄存器;
(3)可對數(shù)據(jù)和程序存儲器進行修改和顯示,任何時候都可以進行寄存器修改,也可在程序裝入前進行存儲器初始化;
(4)可模擬外設(shè)、高速緩存、流水線及定時等功能;
(5)可在取指令、讀寫存儲器及錯誤條件滿足時設(shè)置斷點;
(6)可進行累加器、程序計數(shù)器、輔助寄存器的跟蹤;
(7)可進行指令的單步執(zhí)行;
(8)用戶可設(shè)定中斷產(chǎn)生間隔;
(9)在遇到非法操作碼和無效數(shù)據(jù)訪問時給出提示信息;
(10)從文件中執(zhí)行命令。5.3.4評價模塊(EVM)
評價模塊是一種低成本的用于器件評估、標(biāo)準(zhǔn)程序檢查以及有限的系統(tǒng)調(diào)試的開發(fā)板。它配置了目標(biāo)處理器、一個小容量的存儲器和其它有限的硬件資源,可用來對DSP芯片性能進行評價,也可用來組成一定規(guī)模的用戶DSP系統(tǒng)。TMS320評價模塊一般均具有以下特性:存儲器和寄存器的顯示與修改;匯編器/鏈接器;軟件單步運行和斷點功能;板上存儲器;主機裝入/卸裝功能;I/O功能;高級語言調(diào)試接口。5.3.5軟件開發(fā)系統(tǒng)(SWDS)
軟件開發(fā)系統(tǒng)是一塊可用于進行性能評估和實時軟件開發(fā)的插入到PC機中的低成本DSP板,用戶程序可以在DSP板上進行實時的軟件調(diào)試,程序在DSP芯片上實時運行。它與軟件模擬器的區(qū)別在于它可對軟件進行實時調(diào)試,而它與硬件仿真器的區(qū)別在于它不提供實時硬件調(diào)試功能,因此涉及目標(biāo)I/O操作時一般用文件I/O來代替。5.3.6硬件仿真器(XDS)
TMS320擴展開發(fā)系統(tǒng)(ExtendedDevelopmentSystem,XDS)是功能強大的高速仿真器,可用來進行系統(tǒng)級的集成調(diào)試,是進行DSP系統(tǒng)開發(fā)的最佳工具。目前仿真器主要有兩種類型:一種是傳統(tǒng)的電路仿真器,這類仿真器對用戶級進行硬件仿真時,仿真器的電纜插頭必須插入到用戶硬件電路中DSP芯片的位置,也就是說,仿真電纜的插頭引腳必須與DSP芯片的引腳一一對應(yīng);另一種是掃描仿真器,它不采用插入仿真的方法,而是通過DSP芯片上提供的幾個仿真引腳實現(xiàn)仿真功能。掃描仿真器解決了電路仿真器仿真電纜過長而引起的信號失真以及仿真插頭引起的可靠性差等問題。使用掃描仿真器,程序可以從片內(nèi)或片外的目標(biāo)存儲器實時執(zhí)行,在任何時鐘速度下都不會引入額外的等待狀態(tài)。另外,由于DSP芯片內(nèi)部是通過移位寄存器掃描鏈實現(xiàn)掃描仿真的,而這個掃描鏈可被外部的串行口訪問,因此采用掃描仿真,即使芯片已經(jīng)焊在電路板上,也可進行仿真調(diào)試,這為在生產(chǎn)過程中調(diào)試DSP系統(tǒng)提供了極大的方便。除了第一代和第二代的TMS320‘C2x外,TI為其TMS320所有系列DSP提供了相應(yīng)的掃描仿真器。除了第三代TMS320’C3x采用12線仿真頭外,TMS320的三大主流及其它系列DSP均采用標(biāo)準(zhǔn)掃描仿真器,仿真信號線采用JTAG標(biāo)準(zhǔn)IEEE?1149.1。掃描仿真器配置的軟件采用的也是?C/匯編源碼的調(diào)試界面,它與軟件模擬器的用戶界面完全相同,目標(biāo)代碼可通過掃描接口從PC機下載到目標(biāo)系統(tǒng)的存儲器中。
最常用的XDS510仿真器以PC機為基礎(chǔ)開發(fā)系統(tǒng),而XDS510WS是以SUN工作站為基礎(chǔ)的開發(fā)系統(tǒng),它們可以對TMS320相應(yīng)系列各種DSP型號的芯片實現(xiàn)高速掃描仿真,屬于串行工作的DSP仿真系統(tǒng)。
XDS510PP并口(打印機接口)DSP仿真器,使用并行接口芯片(PPC/SMC34C60)將SPP/EPP/ECP信號轉(zhuǎn)換成ISA格式,使用ISA←→??JTAG轉(zhuǎn)換接口芯片SN74ACT8990對控制/狀態(tài)信號格式進行轉(zhuǎn)換。通過譯碼和緩沖驅(qū)動電路變成標(biāo)準(zhǔn)JTAG邊界掃描接口信號,通過短線仿真頭與目標(biāo)DSP芯片相連,達到仿真、調(diào)試、下載程序等目的。XDS510PP原理方框圖如圖5.3所示,其外形結(jié)構(gòu)如圖5.4所示,電路板正面(元件面)如圖5.5所示,反面(焊接面)如圖5.6所示。圖5.3XDS510PP硬件仿真器原理圖圖5.4XDS510PP硬件仿真器外形結(jié)構(gòu)圖圖5.5XDS510PP硬件仿真器電路板正面(元件面)圖5.6XDS510PP硬件仿真器電路板反面(焊接面)
TMS320'C2000的JTAG邏輯掃描電路與IEEE標(biāo)準(zhǔn)1149.1兼容。該電路只用于仿真和測試。串行掃描用于測試引腳與引腳之間是否相通,以及執(zhí)行對片內(nèi)外圍的操作測試。內(nèi)部邏輯掃描電路可以訪問所有片內(nèi)的資源,?因此TMS320'C2000器件的掃描引腳和仿真引腳允許在線仿真,在所有的TMS320'C2000器件上,串行掃描不具有邊界掃描邏輯。仿真信號的定義如表5.1所示。仿真器的使用比較簡單,只要安裝好XDS510后,就可建立目標(biāo)系統(tǒng)硬件與PC機的連接。為保證計算機和目標(biāo)系統(tǒng)的可靠連接,必須做到以下幾點:
(1)按照XDS510的說明書進行正確安裝;
(2)將14針JTAG插頭和目標(biāo)板正確連接;
(3)?XDS510仿真器通過適當(dāng)?shù)男问?USB口、并口、ISA卡等)和計算機進行正確連接。完成上述工作后,要對XDS510與計算機相連的端口進行設(shè)置。如果使用的是ISA插槽,XDS510需要占用PC中的32位I/O空間,并把0x0240~0x025f設(shè)置為默認地址。如果這個地址已經(jīng)被占用,則用戶要自行選擇其它的I/O地址。與此相似,采用并口的默認地址是0x0378。如果沒有使用默認地址,則在使用時需要通過設(shè)置必要的參數(shù)來實現(xiàn)仿真器的可執(zhí)行性。在PC機中,可以通過使用EMU2XX命令的P參數(shù)來實現(xiàn)地址的設(shè)置,也可以通過環(huán)境變量來進行地址設(shè)置。I/O地址設(shè)置好后,就可以執(zhí)行EMURST.EXE程序,以對仿真器內(nèi)部仿真調(diào)試邏輯進行復(fù)位、檢查XDS510的I/O端口地址是否正確、檢查測試管腳上是否有電源存在等,保證系統(tǒng)能順利進行下一步的軟件調(diào)試工作。
5.4軟件開發(fā)平臺CodeComposer及應(yīng)用
5.4.1CCS組件及其特點
TI最新推出的代碼設(shè)計工作室CCS(CodeComposerStudio)是一種集成開發(fā)環(huán)境IDE,它是基于Windows操作系統(tǒng)平臺的開發(fā)工具,具有十分友善的人機對話界面,在非常直觀的圖形環(huán)境里提供主機和目標(biāo)的連接。它最大的好處是具有軟件仿真器,這將對DSP應(yīng)用系統(tǒng)的開發(fā)提供十分便利的條件。該仿真器不光具備匯編語言程序的調(diào)試能力,還提供對C/C++?語言程序的調(diào)試功能。CCS和VC++?開發(fā)平臺十分類似,提示能力強大、幫助信息豐富、向?qū)Чδ荦R備,還有經(jīng)過驗證的DSPBIOS及完善的匯編和C的庫函數(shù),只要熟悉VC++編程環(huán)境和DSP芯片硬件結(jié)構(gòu),就可以無須培訓(xùn)而迅速上手,因此可有效地提高軟件開發(fā)的速度和效率。目前已有TMS320'C2000、TMS320'C5000和TMS320'C6000系列三大類CCS,除直接購買途徑外,讀者可向TI公司申請,或在TI網(wǎng)站下載,以獲得1個月的免費使用。
CCS包括以下幾個部分:TMS320系列CCS代碼產(chǎn)生工具;CCS集成開發(fā)環(huán)境(IntegratedDevelopingEnvironment,IDE);DSP/BIOS(BasicInputandOutputSystem)插件及API(ApplicationProgramInterface)函數(shù);RTDX(RealTimeDataeXchange)插件、主機(Host)接口及API函數(shù)。
CCS具有以下特點:
(1)完全基于Windows的集成開發(fā)環(huán)境;
(2)?CCS中提供了最新的、編譯效率更高的C編譯器;
(3)?DSP/BIOS能實現(xiàn)實時分析,觀察數(shù)據(jù)不需要中斷CPU;
(4)?BIOS中提供了DSP芯片內(nèi)基本資源管理函數(shù),用戶可以直接調(diào)用;
(5)先進的數(shù)據(jù)顯示功能,用波形和圖像顯示出?DSP?目標(biāo)板上的信號和數(shù)據(jù),從而得到系統(tǒng)直觀易懂的屬性。5.4.2CC及CCS集成開發(fā)環(huán)境簡介
CCS(CodeComposerStudio)是TI公司推出的DSP集成開發(fā)環(huán)境,集代碼編輯、編譯、調(diào)試等多種功能于一體。最初的CCS1.x只支持TMS320‘C5000和TMS320’C6000系列,對于TMS320‘C2000和TMS320’C3x系列,TI公司推出了CCS1.x的簡化版本CC。在TMS320‘C2000中,目前廣泛使用的是CC4.x版本。
TI公司的CCS2.2版本開始支持TMS320’C2000系列所有型號的DSP,但除了TMS320‘C28xx全面支持以外,對于其它型號,可能缺乏軟件仿真器或XDS510的硬件設(shè)備驅(qū)動程序等。
1.CC
CC的絕大部分功能,用戶只需自己嘗試并點擊,然后看看結(jié)果,自然就可明白。這里只介紹菜單命令。菜單命令在工具欄中都有對應(yīng)的按鈕,將鼠標(biāo)放在這些按鈕上,系統(tǒng)會自動給出按鈕對應(yīng)的菜單命令。實際應(yīng)用中,程序員更喜歡使用工具欄的快捷按鈕、鼠標(biāo)右鍵菜單命令和快捷鍵(鍵盤)。
1)菜單File
(1)?New:新建文本文件,包括?.cmd、.c、.asm等。
(2)?Open:打開已有文件。
(3)?Save:保存正在編輯的文本文件。
(4)??Data→Load:將PC文件中的數(shù)據(jù)下載到DSP中。
(5)?Data→Save:從DSP中保存數(shù)據(jù)到PC文件中。用戶先保存一段數(shù)據(jù)到PC文件中,再打開此文件,自然可明白數(shù)據(jù)格式。
(6)?Workspace→LoadWorkspace:裝載工作空間到CC。
(7)?Workspace→SaveWorkspace:保存當(dāng)前CC工作空間到PC文件中。
工作空間(Workspace)指CC的工作環(huán)境,包括程序設(shè)置的斷點、打開的文件和各種調(diào)試窗口等。工作空間的主要用途是方便調(diào)試,在調(diào)試時保存工作空間,以后重新載入時可直接恢復(fù)到先前調(diào)試的地方。CCS正常關(guān)閉時,會自動保存當(dāng)前工作空間到default.wks文件(默認為C:\tic2xx\CC\bin目錄)。
2)菜單View
(1)?Dis-Assembly:創(chuàng)建反匯編窗口。
(2)?Memory:查看memory。在彈出的對話框page選項中,可選擇三種不同的RAM空間(program、data和I/O)。查錯時,這三種空間都可能會用到。
(3)?CpuRegisters:其中又包括兩個命令,用來查詢內(nèi)核寄存器和一些狀態(tài)位。
(4)?Graph→Time/Frequency:圖形化顯示數(shù)據(jù)變量。
①選項GraphTitle:寫入窗口的名稱標(biāo)題。
②選項StartAdddress:變量起始地址。如果顯示基本變量,寫入“&變量名”;如果是數(shù)組變量,則寫入“數(shù)組名”。③選項AcquisitionBufferSize:獲取DSP內(nèi)若干個連續(xù)數(shù)據(jù)。如果顯示基本變量,則填入1;如果顯示一組數(shù)組變量,比如要顯示大小是20的數(shù)組變量(inta[a]),則填入20。
④選項DisplayDataSize:畫面中能顯示的數(shù)據(jù)個數(shù)。
⑤選項DSPDataType:變量的類型??蛇x擇16位還是32位,有符號還是無符號等。
(5)?WatchWindow:觀察窗口。在彈出的WatchWindow窗口中,按下鍵盤的Insert鍵,敲入變量名后可查看變量值。在變量名后敲入后綴“.x”,變量值以十六進制的形式顯示。
(6)?MixedSource/ASM:C語言和匯編語言混合顯示的切換命令。
3)菜單Project
(1)?New:新建工程。
(2)?Open:打開工程。
(3)?AddFilesToProject:添加文件到工程。一個工程由若干個文件構(gòu)成。
(4)?Close:關(guān)閉工程。
(5)?ComplieFile:編譯當(dāng)前一個文件。
(6)?Build:編譯并鏈接整個工程——只編譯修改的文件,并對所有文件進行鏈接。現(xiàn)代編譯器都支持分別編譯技術(shù),即每個文件都可以獨自編譯生成二進制目標(biāo)文件(.obj),最后鏈接在一起生成可執(zhí)行文件(.out)。這樣的好處顯而易見,如果修改了某個文件,只需編譯這個文件,然后鏈接在一起就可以了,編譯的時間大大縮短。問題是編譯器如何識別哪個文件修改過。CC編譯器采用的方法是:如果源文件的修改時間晚于目標(biāo)文件的修改時間,編譯器就認為此源文件被修改過。若用戶的工程文件曾經(jīng)復(fù)制到別的電腦并做過修改,如果發(fā)現(xiàn)每次執(zhí)行build命令時,都會將所有的文件重新編譯一遍,此時請查看并修改源文件的修改時間。這往往是由兩臺電腦的時間系統(tǒng)不同而導(dǎo)致的,當(dāng)用戶為了某種原因(比如防止某天會發(fā)作的病毒)而調(diào)整時間,也會發(fā)生這種情況。
(7)?RebulidAll:編譯鏈接整個工程——編譯所有文件,并對所有文件進行鏈接。有時候,用戶希望能重新編譯整個工程,而不論文件是否被修改過。當(dāng)工程比較大時,RebuildAll比較費時。
(8)?ShowDependencies:一個源文件常包含有頭文件,此命令用來顯示這種信賴關(guān)系。
(9)?ScanAllDependencies:頭文件是不能添加到工程中的,那么編譯器怎么識別頭文件呢?當(dāng)源文件包含有頭文件時,通過此命令自動掃描頭文件到工程文件中。當(dāng)調(diào)入工程或執(zhí)行Build、RebuildAll命令時,編譯器會自動執(zhí)行這一命令,所以實際上此命令用處不大。
(10)?Options:整個工程編譯時的選項。這大約是最復(fù)雜的設(shè)置選項,包括眾多的優(yōu)化選項。
4)菜單Debug
(1)?Breakpoints:設(shè)置斷點。使用菜單設(shè)置此項比較繁瑣,常用工具欄上的等價按鈕,只需將光標(biāo)停留在某程序行,單擊按鈕即可。
但有兩個例外必須要用菜單才能設(shè)置斷點:條件判斷成立時才進入斷點;當(dāng)程序燒寫入Flash后運行時,必須用菜單命令設(shè)置硬件(H/W)斷點。因為用戶一般都是在RAM中調(diào)試程序并設(shè)置斷點的,所以此處不浪費筆墨了,讀者只需要知道有此功能,真正用到的時候查手冊即可。
(2)?ProbePoints:設(shè)置探測點,可以鏈接到某一特定功能。特定功能包括刷新某一窗口、保存數(shù)據(jù)等。以刷新窗口為例,程序在探測點處停止運行時,僅刷新預(yù)選鏈接的窗口。其與斷點的區(qū)別是,程序在斷點停止運行時,會刷新所有窗口。
(3)?Stepinto:單步執(zhí)行,遇見函數(shù)調(diào)用時,進入函數(shù)體單步執(zhí)行。
(4)?Stepover:單步執(zhí)行,遇見函數(shù)調(diào)用時,除非遇到斷點,否則在完成函數(shù)執(zhí)行前不會停止,這事實上是將整個函數(shù)體做單步執(zhí)行。
(5)?Stepout:當(dāng)執(zhí)行Stepinto進入到函數(shù)體內(nèi)時,Stepout指令執(zhí)行完此函數(shù),并從函數(shù)體退出。
(6)?Run:運行。代碼開始運行,直到遇到斷點時停止DSP內(nèi)核運行,刷新窗口。
(7)?Halt:停止運行。
(8)?Animate:動畫模式運行。與Run命令的區(qū)別是,遇到斷點時先停止DSP內(nèi)核,刷新窗口,然后再接著繼續(xù)啟動運行,它常用來連續(xù)地刷新變量窗口和生成graph圖形等。切記這不是實時仿真,因為它是停止DSP內(nèi)核后才刷新窗口的,其功能相當(dāng)于遇到斷點連續(xù)不停地執(zhí)行Run命令。
(9)?RunFree:自由運行。遇到斷點不停止。
(10)?RunToCursor:運行到光標(biāo)處停止。
(11)ResetDSP:復(fù)位DSP中的所有寄存器狀態(tài)位。復(fù)位DSP后,程序執(zhí)行地址指向0(即運行指針PC?=?0)。
(12)?Restart:程序跳到-c-int0標(biāo)號,這是C語言的入門地址。注意程序是跳至,而不是運行至-c-int0標(biāo)號。
(13)?GoMain:程序運行到-main標(biāo)號,即C語言的主函數(shù)-main()處。
5)菜單Profiler
性能優(yōu)化器,用來測算代碼執(zhí)行時間。這雖然是一個很好的功能,很可惜不支持TMS320'C24xx系列,但在CCS2.2中支持。
6)菜單Option
(1)?Editor-Properties:用戶打開過的工程名會顯示在菜單Project→RecentProjectFiles下,為方便起見,用戶常常會通過此菜單載入工程。在EditorProperties的Recent選項中,可設(shè)置顯示幾個打開過的工程名。如果用戶長時間針對一個工程編寫程序,建議設(shè)置為1。
(2)?Keyboard:此處可對菜單命令定義自己的快捷鍵。一個熟練的用戶一定會使用此功能。
(3)?AnimateSpeed:執(zhí)行Animate命令遇見斷點時,刷新窗口,等待一個可設(shè)置的時間后,才繼續(xù)運行。AnimateSpeed選取項就是用來設(shè)置此等待時間的。0代表不等待,1代表等待1s,依此類推。
(4)?ProgramLoad:包含兩個選頂。
①PerformVerificationAfterProgramLoading:下載程序到DSP的RAM中后,CC會執(zhí)行一個校驗程序來檢查下載后的程序正確與否。此下載一般是選中且不更改的。一個應(yīng)用的例子是,當(dāng)程序下載RAM時出錯,而去掉此選項后則不會出錯,那么十有八九是RAM壞了。接下來用戶可通過View-Memory來查找到底是哪根數(shù)據(jù)線壞了。
②LoadProgramAfterBuilding:選中此選項,編譯工程后,生成的?.out文件自動下載到RAM中。
7)菜單GEL
GEL是通用擴展語言(GeneralExtensionLanguage)的縮寫。GEL是一個大小寫敏感但缺少類型檢查的解釋性語言,在語法上可看做是C語言的一個子集。GEL主要用來擴展CC的功能,方便用戶調(diào)試程序。
8)菜單Tools
CommandWindow:彈出命令窗口,如果用戶喜歡類似DOS的命令行模式調(diào)試,可以使用此窗口,比如敲入“stepn”——單步執(zhí)行n次,“?變量名”——察看變量值,“dir”——顯示目錄等等。雖然有時候能加快調(diào)試速度(如敲入stepn,要比在菜單中設(shè)置快得多),但像所有退出主流的命令行方式一樣,人們似乎更喜歡所見即所得的圖形界面,基本上命令窗口是為早先的CDebugger用戶保留的。
當(dāng)用戶安裝燒寫TMS320'LF240xA系列Flash插件(Plugin)時,也會顯示在菜單Tools下。燒寫Flash插件極其簡單,用戶一看即知。燒寫前用戶需要更改管腳跳線,管腳VCCP?=?5V等。
2.CCS2.2
TI公司新推出的CCS2.2支持TMS320‘C24xx系列,相對于CC4.x,CCS2.2有一些明顯的改進:
(1)?CCS支持同時載入多個工程文件。工程文件以新的后綴?.prj結(jié)尾,原先的工程文件后綴為?.mak。為了方便從?.mak升級到?.prj,CCS2.2提供了從?.prj導(dǎo)入和導(dǎo)出?.mak的功能。
(2)支持流行的版本控制,可為同一個工程設(shè)置不同的版本,如debug、release或自定義等。不同的版本代表設(shè)置不同的工程選項,比如debug版本有符號調(diào)試選項-g,而release版本則沒有(COFF格式中包含全局符號項來方便調(diào)試,符號項稍微占用了一點空間)。
(3)斷點設(shè)置、運行指示等標(biāo)記改為圓點和箭頭,使用起來感覺好些。原先的CC采用代碼行變顏色的方式指示。
(4)增加了一些單步調(diào)試命令,可自動在C語言和匯編語言之間切換。
(5)?WatchWindow做了很大改善,可自動顯示函數(shù)局部變量值,可新建觀察窗口(addtab)。原先的CC只有4個觀察窗口,不支持新建窗口和自動顯示函數(shù)局部變量值。
(6)編輯支持自動嵌入功能(自動彈出符號的提示),支持用戶使用自己喜歡的編輯器來編寫源文件,比如用戶可使用UltraEdit等。
(7)編譯器有所加強。對語法的檢查更加嚴(yán)格,檢查信息除了早先的Errors、warnings外,還添加了remarks。比如,標(biāo)準(zhǔn)的C源文件的書寫應(yīng)該是在結(jié)尾處空一行來代表源文件結(jié)束符的。CC并不對此檢測,而CCS2.2則產(chǎn)生警告。
(8)通過建立庫工程,支持編譯函數(shù)文件生成庫文件。而CC4.x不支持,只能通過命令行方式編譯庫生成文件。
函數(shù)文件經(jīng)過編譯后生成目標(biāo)文件?.obj,庫文件的后綴是?.lib。兩者都屬于可重新定位的二進制代碼,但還是有所不同:目標(biāo)文件?.obj的所有代碼都會被裝入和鏈接到程序中,鏈接函數(shù)庫中鏈接所需要的函數(shù)。以標(biāo)準(zhǔn)C的函數(shù)庫為例,當(dāng)然不希望把所有的函數(shù)都鏈接到自己的程序中去??傮w來說,集成開發(fā)環(huán)境CCS2.2的功能改善很多,增加了很多方便而又強大的功能。
本節(jié)將分別針對CCS2.2的菜單和工具欄進行介紹。
●?CCS菜單
在CCS集成開發(fā)環(huán)境中共有11項菜單,下面就其中較為重要的菜單功能加以介紹。
1)?File菜單
File菜單提供了與文件操作有關(guān)的命令。除Open/Save/Print/Exit等常見的命令外,F(xiàn)ile菜單還列出了其它一些文件操作命令,如表5.2所示。
2)?Edit菜單
Edit菜單提供的是與編輯有關(guān)的命令。除去Undo/Redo/Delete/SelectAll/Find/Replace等常用的文件編輯命令外,CCS還支持其它幾種編輯命令,如表5.3所示。
3)?View菜單
在View菜單中,可以選擇是否顯示Standard工具欄、GEL工具欄、Project工具欄、Debug工具欄、Edit工具欄和狀態(tài)欄(Statusbar)。此外View菜單中還包括如表5.4所示的顯示命令。
在View菜單中,Graph是一個很有用的功能,它可以逼真地顯示信號波形。在Graph窗口中使用了兩個緩沖器,即獲取緩沖器和顯示緩沖器。獲取緩沖器駐留在實際或模擬的目標(biāo)板上,它保存有設(shè)計人員感興趣的數(shù)據(jù)。當(dāng)圖形更新時,獲取緩沖器從實際或模擬的目標(biāo)板中讀取數(shù)據(jù)并更新顯示緩沖器。顯示緩沖器則駐留在主機存儲器中,它記錄了歷史數(shù)據(jù)。波形圖則是根據(jù)顯示緩沖器的數(shù)據(jù)繪制的。
當(dāng)輸入所需參數(shù)并確認后,Graph窗口從獲取緩沖器中接收指定長度(由AcquisitionBufferSize定義)和指定起始地址(由StartAddress定義)的DSP數(shù)據(jù)。
4)?Project菜單
CCS使用工程來管理設(shè)計文檔,CCS不允許直接對匯編或C源文件Build生成DSP應(yīng)用程序,只有在建立工程文件的情況下,Project工具欄上的按鈕才會有效。工程文件被存盤為?.mak文件。在Project菜單中包括一些常見的指令,如New/Open/Close等,此外還包括如表5.5所示的菜單命令。
5)?Debug菜單
Debug菜單中包含常用的調(diào)試命令,具體命令及功能列于表5.6中。
6)?Profiler菜單
剖切(Profiling)是CCS的一個重要功能。它要提供程序代碼特定區(qū)域的執(zhí)行統(tǒng)計,使開發(fā)設(shè)計人員能檢查程序的性能,從而可對源程序進行優(yōu)化設(shè)置。使用剖切功能可以觀察DSP算法占用了多少CPU時間,還可以用它來剖切處理器的其它事件,如分支數(shù)、子程序調(diào)用次數(shù)及中斷發(fā)生次數(shù)等。Profiler菜單命令及功能如表5.7所示。
7)?Option菜單
Option菜單提供CCS的一些設(shè)置選項,如顏色、字體、鍵盤等。Option菜單命令及功能如表5.8所示。在Option菜單中,存儲器映射圖(MemoryMap)是一個重要的概念,有必要對其做詳細說明。
(1)添加一個新的存儲器映射范圍。
選擇Option>MemoryMap,將彈出MemoryMap對話框。
在對話框中選中EnableMemoryMapping,以使能存儲器映射。第一次運行CCS時,存儲器映射即呈禁用狀態(tài)(未選中EnableMemoryMapping),也就是說,CCS調(diào)試器可存儲目標(biāo)板上所有可尋址的存儲器(RAM)。當(dāng)使能存儲器映射后,CCS?調(diào)試器將根據(jù)存儲器映射設(shè)置檢查其可以訪問的存儲器。如果要存取的是未定義或保護區(qū)的數(shù)據(jù),則調(diào)試器將顯示默認值,而不是存取目標(biāo)板上的數(shù)據(jù)。選擇需修改的頁面(Program、Data或IO)。如果程序只使用一個存儲器頁面,則可以跳過這一步。
按照命令文件的存儲器定義,在Starting-address域鍵入起始地址,在Length域鍵入存儲器長度,在Attributes域選擇存儲器的讀/寫屬性,再單擊Add按鈕,即添加一個新的存儲器映射范圍。
CCS?調(diào)試器允許添加一個與已有存儲器范圍有所重疊的新儲存器范圍,此時重疊區(qū)域的讀/寫屬性會做相應(yīng)的修改。當(dāng)定義好一個新的存儲器范圍后,如果想更改其讀/寫屬性,則可以定義一個新的存儲器范圍(與該存儲器具有相同起址和相同范圍),并單擊Add按鈕加入,即將原有存儲器屬性更改為新定義的存儲器屬性。
(2)刪除一個已有的存儲器映射范圍。
將一個已有存儲器映射屬性設(shè)為None-No-Memory/Protected,即可將該存儲器范圍刪除。另一個刪除存儲器范圍的方法是在Memory-Map列表框內(nèi)選中需刪除的存儲器范圍,然后按Delete鍵將其刪除。
(3)存取一個不合法的存儲地址。當(dāng)設(shè)計人員想讀取一個被存儲器映射保護的存儲空間時,調(diào)試器不從目標(biāo)板讀取數(shù)據(jù),而是讀取一個保護數(shù)據(jù),通常為0。因此一個非法的存儲器地址通常顯示為0。也可在Protected-Value域輸入另外一個值,如0XDEAD,這樣當(dāng)試圖讀取一個非法的存儲器地址時,將清楚地給予提示。
在判斷一個存儲地址是否合法時,CCS調(diào)試器并不是根據(jù)硬件結(jié)構(gòu)作出比較結(jié)果,因此,調(diào)試器不能防止程序存取一個不存在的存儲地址。定義一個非法的存儲器映射范圍最好的方法是使用CEL嵌入函數(shù),它在運行CCS時能自動執(zhí)行。
8)?GEL菜單
CCS軟件本身提供使用的DSP系列的GEL函數(shù),它們在Gel文件中定義。用戶還可以將常用的GEL函數(shù)添加到GEL菜單中,此時需要使用menuitem關(guān)鍵詞在GEL菜單下建立一個新的下拉菜單項。此外還可使用dialog和slider關(guān)鍵詞建立對話框和滑動條對象。
9)?Tools菜單
Tools提供常用的工具集。Tools菜單命令和功能如表5.9所示。●?CCS工具欄
CCS集成開發(fā)環(huán)境提供5種工具欄,分別為Standard-Toolbar、GEL-Toolbar、Project-Toolbar、Debug-Toolbar和Edit-Toolbar。這5種工具欄可在View菜單下選擇是否顯示。
1)?Standard-Toolbar
Standard工具欄包括以下常用工具。
(1)?New:新建一個文檔。
(2)?Open:打開一個已存在的文檔。
(3)?Save:保存一個文檔。如尚未命名,則打開Save-As對話框。
(4)?Cut:剪切。
(5)?Copy:復(fù)制。
(6)?Paste:粘貼。
(7)?Undo:取消上一次編輯操作。
(8)?Redo:恢復(fù)上一次編輯操作。
(9)?Find-Next:查找下一個。
(10)?Find-Previous:查找上一個。
(11)?Search-Word:查找指定的文本。
(12)?Find-in-Files:在多個文件中查找。
(13)?Print:打印。
(14)?Help:獲得特定對象的幫助。
2)?GEL-Toolbar
GEL工具欄提供了執(zhí)行GEL函數(shù)的一種快捷方法。在工具欄的左側(cè)文本輸入框中鍵入GEL函數(shù)名,再單擊右側(cè)的執(zhí)行按鈕,即可執(zhí)行相應(yīng)的函數(shù)。如果不使用GEL工具欄,也可以使用Edit菜單下的Edit-Command-Line命令執(zhí)行GEL函數(shù)。
3)?Project-Toolbar
Project工具欄提供了與工程和斷點設(shè)置有關(guān)的命令,如圖5.7所示。圖5.7Project工具欄
Project工具欄提供了以下命令。
(1)?CompileFile:編譯文件。
(2)?IncrementalBuild:對所有修改過的文件重新編譯,再鏈接生成可執(zhí)行程序。
(3)?BuildAll:全部重新編譯鏈接生成可執(zhí)行程序。
(4)?StopBuild:停止Build操作。
(5)?ToggleBreakpoint:設(shè)置斷點。
(6)?RemoveAllBreakpoints:移去所有的斷點。
(7)?ToggleProbePoint:設(shè)置ProbePoint。
(8)?RemoveAllProbePoints:移去所有的ProbePoint。
(9)?ToggleProfilePoint:設(shè)置剖切點。
(10)?RemoveAllProfilePoints:移去所有的剖切點。
4)?DebugToolbar
如圖5.8所示,Debug工具欄提供以下常用的調(diào)試命令。圖5.8Debug工具欄
(1)?SingleStep:與Debug菜單中的StepInto命令一致,單步執(zhí)行。
(2)?StepOver:與Debug菜單中的StepOver命令一致。
(3)?StepOut:與Debug菜單中的StepOut命令一致。
(4)?RuntoCursor:運行到光標(biāo)處。
(5)?Run:運行程序。
(6)?Halt:終止程序運行。
(7)?Animate:與Debug菜單中的Animate命令一致。
(8)?QuickWatch:打開QuickWatch窗口觀察或修改變量,還可方便地將變量加入Watch窗口中。
(9)?WatchWindow:打開Watch窗口觀察或修改變量。
(10)?RegisterWindows:觀察或編輯CPU寄存器或外設(shè)寄存器值。
(11)?ViewMemory:查看指定地址存儲器的值。
(12)?ViewStack:查看堆棧值。
(13)?ViewDisassembly:查看反匯編窗口。
5)?EditToolbar
如圖5.9所示,Edit工具欄提供了一些常用的編輯命令及書簽命令。圖5.9Edit工具欄
(1)?MarkTo:將光標(biāo)放在括號前面,再單擊此命令,則將標(biāo)記此括號對內(nèi)所有文本。
(2)?MarkNext:查找下一個括號對,并標(biāo)記其中文本。
(3)?FindMatch:將光標(biāo)放在括號前,單擊此命令,光標(biāo)跳至與之配對的括號處。
(4)?FindNextOpen:將光標(biāo)跳至下一個括號處。
(5)?OutdentMarkedText:將所選文本向左移一個Tab寬度。
(6)?IndentMarkedText:將所選文本向右移一個Tab寬度。
(7)?Edit→ToggleBookmark:設(shè)置一個標(biāo)簽。
(8)?Edit→NextBookmark:查找下一個標(biāo)簽。
(9)?Edit→PreviousBookmark:查找上一個標(biāo)簽。5.4.3DSP/BIOS和RTDX簡介
DSP/BIOS插件和RTDX是提高軟硬件調(diào)試效率、加快產(chǎn)品開發(fā)步伐的有力工具,下面對這部分內(nèi)容做一簡介。
1.DSP/BIOS插件
在軟件開發(fā)的分析階段,傳統(tǒng)的調(diào)試手段對診斷實時系統(tǒng)中錯綜復(fù)雜的問題無能為力。CCS提供支持實時分析的DSP/BIOS插件,可以使用它來實時跟蹤和監(jiān)視一個DSP應(yīng)用程序,同時對實時性能的影響達到最小。在CCS中,線程是一個通用概念,它可指任何執(zhí)行的任務(wù),如硬件中斷服務(wù)子程序(ISR)、軟件中斷、任務(wù)及周期函數(shù)等。
DSP/BIOSAPI提供以下實時硬件仿真特性:
第一,程序跟蹤。顯示寫入目標(biāo)日志的事件,并在程序執(zhí)行過程中反映動態(tài)控制流程。
第二,性能監(jiān)控。跟蹤統(tǒng)計目標(biāo)板資源的使用情況,如處理器負載和線程時序等。
第三,文件流。將目標(biāo)板上的I/O對象與主機上的文件聯(lián)系在一起。
DSP/BIOS同時提供基于優(yōu)先級的調(diào)試方案,支持函數(shù)的周期性執(zhí)行和多優(yōu)先級線程。
1)?DSP/BIOS配置
在CCS環(huán)境下,可創(chuàng)建配置文件,用于定義DSP/BIOSAPI使用的對象,此文件同時還可以簡化存儲器映射和硬件向量映射。因此,即使不調(diào)用DSP/BIOSAPI,也可以用此配置文件。
通用的API函數(shù)調(diào)用是在程序運行時創(chuàng)建對象的,這將導(dǎo)致在目標(biāo)DSP中占用額外的代碼空間。與通用API函數(shù)調(diào)用不同的是,所有DSP/BIOS對象都是靜態(tài)配置,且在執(zhí)行程序中占用固定的代碼空間。這種靜態(tài)配置特性還可以在程序執(zhí)行之前通過驗證對象屬性的合法性來提前檢測錯誤。由于配置文件簡化了程序的ISR矢量和存儲器段尋址,因此它既可在調(diào)用DSP/BIOSAPI的程序中使用,也可在不調(diào)用DSP/BIOSAPI的程序中使用。
存儲配置文件將同時產(chǎn)生鏈接命令文件(Programcfg.cmd)、頭文件(Programcfg.h)和匯編源文件(Programcfg.sam),并自動加入到工程文件中。
2)?DSP/BIOSAPI模塊
在傳統(tǒng)手段的調(diào)試中,調(diào)試處于執(zhí)行程序之外。與傳統(tǒng)調(diào)試不同的是,DSP/BIOS應(yīng)用程序要求目標(biāo)程序與特定的DSP/BIOSAPI模塊鏈接起來。通過在配置文件中定義DSP/BIOS對象,一個程序可以使用一個或多個DSP/BIOS模塊。定義這些對象為外部函數(shù),在源文件中就可調(diào)用DSP/BIOS函數(shù)。每個模塊有自己獨立的C頭文件或匯編宏文件,這樣在使用某個DSP/BIOS模塊時不會將其它的DSP/BIOS模塊包含進來,從而減小程序代碼量。
DSP/BIOSAPI調(diào)用(用C語言或匯編語言)時被優(yōu)化,這樣會在目標(biāo)DSP上使用最少的資源。DSP/BIOSAPI包含以下模塊。
(1)?ATM:提供原子函數(shù),生成共享數(shù)據(jù)。
(2)?C54:提供專用的DSP函數(shù)來管理中斷。
(3)?CLK:片內(nèi)定時器模塊,控制片內(nèi)定時器并提供邏輯32位的實時時鐘,其中斷最高速率與片內(nèi)定時器寄存器一樣(1個指定周期),最低速率可長達幾毫秒甚至更長。
(4)?DEV:設(shè)備驅(qū)動模塊,允許開發(fā)設(shè)計人員創(chuàng)建并使用自己的設(shè)備驅(qū)動。
(5)?HST:主機輸入/輸出模塊,管理主機通道對象,使程序能在目標(biāo)板和主機之間傳輸數(shù)據(jù)。主機通道被靜態(tài)配置為輸入或輸出。
(6)?HWI:硬件中斷模塊,為硬件中斷例程提供支持,在配置文件中可指定硬件中斷發(fā)生時要運行的函數(shù)。
(7)?IDL:空閑函數(shù)模塊,管理空閑狀態(tài)函數(shù),當(dāng)目標(biāo)程序沒有更高優(yōu)先級的程序執(zhí)行時,DSP處于空閑狀態(tài)。
(8)?LCK:鎖定模塊,管理共享的全局資源,當(dāng)有多個任務(wù)競爭資源時仲裁資源的使用權(quán)。
(9)?LOG:日志模塊,管理LOG對象,在目標(biāo)程序執(zhí)行時實時捕獲各種事件??墒褂孟到y(tǒng)日志或定義自己的日志,可在CCS中實時觀察這些日志。
(10)?MBX:信箱模塊,管理在任務(wù)間傳遞信息的對象。當(dāng)?shù)却畔湫畔r,任務(wù)被阻塞。
(11)?MEM:存儲器模塊,為目標(biāo)程序的不同代碼或數(shù)據(jù)區(qū)指定存儲段。
(12)?PIP:數(shù)據(jù)管道模塊,管理用來緩沖輸入/輸出數(shù)據(jù)流的數(shù)據(jù)通道。這些數(shù)據(jù)管道提供一個一致的軟件數(shù)據(jù)結(jié)構(gòu),用來驅(qū)動DSP器件和其它實時外設(shè)器件之間的輸入/輸出。
(13)?PRD:周期函數(shù)模塊,管理觸發(fā)程序中函數(shù)執(zhí)行的周期對象。這些對象的執(zhí)行速率可以由CLK模塊的時鐘速率控制,也可通過周期性調(diào)用PRD-tick來控制。
(14)?QUE:隊列模塊,管理數(shù)據(jù)隊列結(jié)構(gòu)。
(15)?RTDX:實時數(shù)據(jù)交換模塊,使數(shù)據(jù)能在主機與目標(biāo)板之間實時交換,然后在主機端分析與顯示。
(16)?SEM:信號量模塊,管理任務(wù)之間同步與互斥操作的信號量。
(17)?SIO:流模塊管理,能提供高效、實時且與設(shè)備無關(guān)的輸入/輸出對象。
(18)?STS:統(tǒng)計模塊,管理當(dāng)程序運行時存儲關(guān)鍵統(tǒng)計數(shù)據(jù)的統(tǒng)計累加器??稍贑CS環(huán)境下實時觀察這些統(tǒng)計數(shù)字。
(19)?SWI:軟件中斷模塊,管理軟件中斷,當(dāng)一個目標(biāo)程序用API調(diào)用發(fā)送一個SWI對象時,SWI模塊調(diào)度相關(guān)函數(shù)的執(zhí)行。軟件中斷共有15個優(yōu)先級,但所有優(yōu)先級都比硬件ISR優(yōu)先級要低。
(20)?SYS:系統(tǒng)服務(wù)模塊,提供執(zhí)行基本系統(tǒng)服務(wù)的通用函數(shù),如中止程序執(zhí)行和打印格式文本等。
(21)?TRC:跟蹤模塊,管理一組跟蹤控制位,通過事件日志和統(tǒng)計累加器實時捕獲程序信息。由于不存在TRC對象,因此在配置文件中沒有列出TRC模塊。
2.RTDX原理
實時數(shù)據(jù)交換(Real-TimeDataExchange,RTDX)提供一個實時和連續(xù)的可視環(huán)境,使開發(fā)者能看到DSP應(yīng)用程序工作的真實過程。RTDX允許系統(tǒng)開發(fā)者在不停止運行目標(biāo)應(yīng)用程序的情況下在計算機和DSP芯片之間傳輸數(shù)據(jù),同時還可在主機上利用對象鏈接嵌入(OLE)技術(shù)分析和觀察數(shù)據(jù),這樣可以提供給開發(fā)者一個真實的系統(tǒng)工作過程,從而縮短開發(fā)時間。
RTDX可以在DSP/BIOS中使用,也可以脫離DSP/BIOS使用。值得注意的是,目前CCSSimulator不支持RTDX,也就是說RTDX必須在Emulator下使用,這就要求有硬件仿真器和DSP目標(biāo)板。
RTDX的工作原理如圖5.10所示,它由主機(Host)PC和目標(biāo)(Target)DSP兩部分構(gòu)成,CCS則控制了主機與DSP之間的數(shù)據(jù)流動。在目標(biāo)DSP上運行有一個小的RTDX庫(RTDXTargetLibrary),RTDX庫使用一個基于掃描的仿真器,通過增強型JTAG接口在主機和DSP之間傳遞數(shù)據(jù)。DSP應(yīng)用程序則通過調(diào)用RTDX庫的API函數(shù)來完成主機與DSP之間的通信。主機方則運行有CCS軟件。CCS軟件同樣帶有一個RTDX庫(RTDXHostLibrary),再通過一個OLE接口將實時數(shù)據(jù)在主機上顯示和分析。圖5.10RTDX工作原理
1)目標(biāo)板至主機數(shù)據(jù)流
為錄制目標(biāo)板上的數(shù)據(jù),必須聲明一個輸出通道,通過用戶接口中定義的例程將數(shù)據(jù)寫至輸出通道。數(shù)據(jù)將立即被錄制到一個在RTDX目標(biāo)庫中定義的緩沖器中,之后,緩沖器的數(shù)據(jù)通過一個JTAG接口送往主機。
RTDX主機庫從JTAG接口接收并錄制數(shù)據(jù),根據(jù)指定的RTDX主機錄制模式,錄制的數(shù)據(jù)可存放在存儲緩沖器中,也可存至RTDX日志(log)文件中。
錄制的數(shù)據(jù)可通過主機應(yīng)用程序存取。主機應(yīng)用程序是一個OLE(對象鏈接嵌入)自動化客戶程序(automationclient),如VisualBasic應(yīng)用程序、VisualC++應(yīng)用程序、LabView及MicrosoftExcel等。典型情況下,RTDXOLE自動化客戶程序是一個顯示程序,通過一種有意義的方式將數(shù)據(jù)顯示出來。
2)主機至目標(biāo)板數(shù)據(jù)流
對一個從主機接收數(shù)據(jù)的目標(biāo)板而言,必須聲明一個輸入通道,使用在用戶接口中定義的例程向其請求數(shù)據(jù)。請求的數(shù)據(jù)被錄制到RTDX目標(biāo)緩沖器中,再通過JTAG接口送往目標(biāo)板。
OLE自動化客戶程序可通過OLE接口將數(shù)據(jù)送往目標(biāo)板。所有送往目標(biāo)板的數(shù)據(jù)被寫至RTDX主機庫的存儲緩沖器中。當(dāng)RTDX主機庫接收到一個來自目標(biāo)DSP程序的讀請求時,主機緩沖器中的數(shù)據(jù)就通過JTAG接口送往目標(biāo)板,同時將數(shù)據(jù)的地址實時寫至目標(biāo)板。當(dāng)操作完成時,主機將通知RTDX目標(biāo)庫。
3)?RTDX目標(biāo)庫用戶接口
RTDX目標(biāo)庫用戶接口提供最為安全的方法,在目標(biāo)應(yīng)用程序與RTDX目標(biāo)庫之間交換數(shù)據(jù)。
用戶接口中定義的數(shù)據(jù)類型和功能如下:
(1)使能目標(biāo)應(yīng)用程序?qū)?shù)據(jù)送到RTDX主機庫。
(2)使能目標(biāo)應(yīng)用程序向RTDX主機庫請求數(shù)據(jù)。
(3)在目標(biāo)板上提供數(shù)據(jù)緩沖。數(shù)據(jù)在送往主機之前,先復(fù)制一份存儲在目標(biāo)板緩沖器中,這樣可以保證數(shù)據(jù)的完整性,減小實時干擾。
(4)提供安全的中斷??梢栽谥袛嗵幚沓绦蛑姓{(diào)用用戶接口定義的例程。
4)?RTDX主機OLE接口
OLE接口提供了OLE自動化客戶程序與RTDX主機庫之間通信的能力,其功能如下:
(1)使OLE自動化客戶程序能存取錄制在RTDX日志文件或緩存在RTDX主機庫中的數(shù)據(jù)。
(2)使OLE自動化客戶程序能通過RTDX主機庫將數(shù)據(jù)發(fā)送到目標(biāo)板。
5)使用RTDX窗
從RTDX狀態(tài)欄的下拉菜單中,可以選擇以下3種RTDX狀態(tài)之一:
(1)?RTDXDisable:在運行不需要RTDX的應(yīng)用程序時禁止RTDX功能。在默認情況下,RTDX是被禁止的。在配置RTDX時也必須禁止RTDX功能。
(2)?RTDXEnable:使能CCS處理來自目標(biāo)應(yīng)用程序或OLE自動化客戶程序的實時交換數(shù)據(jù)。
(3)?RTDXPlayBack:允許CCS處理預(yù)錄制好的文件中的數(shù)據(jù)。當(dāng)選中RTDXPlayBack時,將自動彈出選擇文件的對話框。在對話框中選擇一個存在的RTDX日志文件即可。5.4.4集成開發(fā)環(huán)境使用
1.CCS的系統(tǒng)配置
在運行CCS之前,該系統(tǒng)必須正確地進行硬件配置,即正確地加載適用于TMS320‘C2000DSP的驅(qū)動程序,以及硬件仿真器的端口設(shè)置等。
從Windows的開始菜單中運行SetupCodeComposer命令,或者從桌面運行SetupCCC2000程序,系統(tǒng)將進入如圖5.11所示的環(huán)境,此時可以對TMS320'C2000的CCS系統(tǒng)進行配置。圖5.11CCS配置界面
(1)在Family選擇框中選擇c2xx選項,即用于c2xx的系統(tǒng)配置。
(2)在Platform選擇框中選擇emu或sim選項,前者用于仿真,后者用于模擬。這兩個選項存在很大的區(qū)別,其中,emu主要用于對已經(jīng)連接的目標(biāo)板進行仿真和調(diào)試,選擇這一項,必須將仿真器和目標(biāo)板連接起來,并且將仿真器與運行CCS的PC機連接起來,要注意正確連接,可參考目標(biāo)板廠商的資料;sim主要用來模擬操作,選擇該選項時,不要求有目標(biāo)板存在,系統(tǒng)會模擬TMS320'C2000的硬件系統(tǒng),對程序進行模擬調(diào)試。
(3)完成上面兩步操作后,單擊“Addtosystemcomfiguration”按鈕,系統(tǒng)就會自動將c2xx的驅(qū)動程序配置到當(dāng)前系統(tǒng)。
(4)單擊“Close”按鈕,關(guān)閉當(dāng)前的界面,然后就可以看到配置了系統(tǒng)后的CodeComposerSetup(代碼編輯器系統(tǒng)設(shè)置)界面。此時選擇File→Save命令,將當(dāng)前的配置保存起來,然后執(zhí)行File→Exit命令,退出配置環(huán)境。
2.運行CCS
完成了系統(tǒng)配置后,從Windows的開始菜單中運行CodeComposer命令,或者從桌面執(zhí)行CC'C2000程序,系統(tǒng)將進入如圖5.12所示的開發(fā)環(huán)境。圖5.12CCS主窗口
3.建立工程文件
在CCS環(huán)境下開發(fā)匯編應(yīng)用程序,首先要建立一個工程項目文件,然后向工程項目文件中添加匯編程序文件(?.asm)和鏈接命令文件(?.cmd),并設(shè)置工程項目的選項,下面分別進行介紹。
1)建立一個新的工程項目文件
執(zhí)行Projec→New命令,系統(tǒng)彈出如圖5.13所示的對話框,在該對話框中輸入項目文件名,如contral.mak文件,然后單擊“保存”按鈕,系統(tǒng)就會創(chuàng)建一個名為contral.mak的工程項目文件。圖5.13“建立新工程”對話框
2)向項目中添加文件
執(zhí)行Project→AddFilestoProject命令,或者在項目管理器中選中contral.mak文件,單擊鼠標(biāo)右鍵,從快捷菜單中選擇AddFiles命令。此時可以分別為項目文件添加匯編程序文件和鏈接命令文件。
在文件類型下拉列表中選擇AsmSourceFiles選項,并選擇需要添加的匯編程序所在的目錄,如圖中的contral.asm文件。當(dāng)然用戶可以編寫一個空文件保存為自己需要的以?.asm為擴展名的文件,不必事先完全編寫好匯編程序,添加到工程項目后,再對匯編程序進行編寫。最后單擊“打開”按鈕即完成匯編程序的添加。同樣,在文件類型下拉列表中選擇“LinkerCommandFiles”選項,然后選擇需要添加的?.cmd文件,如本實例的contral.cmd文件,最后單擊“打開”按鈕,即完成鏈接命令的添加。
此時,完成了匯編程序文件和鏈接命令的添加,開發(fā)者就可以進行匯編程序的編輯、編譯和目標(biāo)文件的創(chuàng)建了。不過在編譯文件和創(chuàng)建目標(biāo)文件之前,還需要對工程項目文件的選項進行設(shè)置,以符合匯編的要求。
4.設(shè)立工程項目
執(zhí)行Project→Options命令,系統(tǒng)彈出如圖5.14所示的“BuildOptions”(項目選項設(shè)置)對話框,其中有三個選項卡,分別為“Compiler”(編譯器)、“Assembler”(匯編器)和“Linker”(鏈接器),選擇這三者,可以分別進行編譯、匯編和鏈接參數(shù)的設(shè)置。圖5.14“項目選項設(shè)置”對話框
1)編譯器環(huán)境參數(shù)設(shè)置
在如圖5.14所示的選項卡中,可以設(shè)置編譯器環(huán)境參數(shù)。具體設(shè)置方式如下:
(1)最上方的信息顯示框中為設(shè)置的編譯器環(huán)境參數(shù)。
(2)?SuppressBanner(抑制標(biāo)題)選項用于抑制所有信息,相當(dāng)于(-qq)選項。
(3)?TargetProessor(目標(biāo)處理器)選項對應(yīng)于匯編參數(shù)-v,用以設(shè)置當(dāng)前的目標(biāo)處理器。
(4)?IncludeSearchPath(包含搜索路徑)選項對應(yīng)于匯編參數(shù)-i。
(5)?GenerateSymbolicDebugInfomation(產(chǎn)生符號調(diào)試信息)相當(dāng)于匯編參數(shù)-g,這是CCS系統(tǒng)新增加的參數(shù),選中該選項則使能符號調(diào)試。
(6)?OptimizationLevel(優(yōu)先級)用于C/C++語言的應(yīng)用程序開發(fā)。對于匯編程序開發(fā),一般選為Disable(禁止)。
(7)?InlineOptions(直接插入選項),用來設(shè)置是否使用內(nèi)部操作函數(shù)和直接插入關(guān)鍵詞控制定義的擴展。
(8)?WarnningLevel(警告級別)用來設(shè)置是否顯示警告,或顯示哪類警告。一般可選默認的設(shè)置,即顯示所有警告。
(9)?DefineSymbols(定義符號)選項對應(yīng)于匯編參數(shù)-d。
(10)?Category(類別)框中可以分別選擇需要設(shè)置的對象。選擇一種對象,則右邊顯示的設(shè)置項目不同,軟件開發(fā)者可以根據(jù)需要進行設(shè)置,這里不詳細闡述。因為對于匯編程序開發(fā)來說,這些設(shè)置都可以取默認項。
2)匯編器環(huán)境參數(shù)設(shè)置
在如圖5.15所示的選項卡中,可以設(shè)置匯編器環(huán)境參數(shù)。圖5.15匯編器環(huán)境參數(shù)設(shè)置匯編器環(huán)境參數(shù)具體設(shè)置方式如下:
(1)?SuppressBanner(抑制標(biāo)題)選項對應(yīng)于匯編參數(shù)-q,用以抑制所有處理信息。
(2)?TargetProcessor選項對應(yīng)于匯編參數(shù)-v,用以設(shè)置當(dāng)前的目標(biāo)處理器,這里為c2xx。
(3)?IncludeSearchPath(包含搜索路徑)選項對應(yīng)于匯編參數(shù)-i。
(4)?EnablesSourceLcvelDebugging選項用來向目標(biāo)文件增加行號調(diào)試信息,相當(dāng)于匯編參數(shù)-g。
(5)?DefineSymbels選項對應(yīng)于匯編參數(shù)-d。
(6)?Insert.copyFile選項對應(yīng)于匯編參數(shù)-h(huán)c,設(shè)置該選項,可以為匯編模塊復(fù)制指定的文件。該文件會插到源文件的前面。
(7)?GenerateListingFiles選項對應(yīng)于匯編參數(shù)-l,選中該選項,可以產(chǎn)生一個與輸入文件同名的列表文件,擴展名為?.lst。
(8)?GenerateCro
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年美容院設(shè)備購買合同
- 二零二五年度地質(zhì)勘探與水資源開發(fā)合同3篇
- 供應(yīng)商選擇流程
- 二零二五年度家庭護工合同用心呵護家人健康3篇
- 二零二五年度廣告發(fā)布合同with廣告內(nèi)容與投放策略3篇
- 二零二五年度合伙人制度創(chuàng)始股東合作協(xié)議范本3篇
- 2024年裝修工程墻面刷漆班組合作合同版B版
- 二零二五年度天然氣站場設(shè)備檢修勞務(wù)分包合同2篇
- 2024年簡易勞務(wù)分包協(xié)議標(biāo)準(zhǔn)格式版
- 2025年度托運車輛合同:托運車輛租賃與運營管理合同3篇
- 開題報告金融
- 心肺復(fù)蘇知識培訓(xùn)總結(jié)與反思
- 楚雄師范學(xué)院-18級-葡萄酒專業(yè)-葡萄酒工藝學(xué)復(fù)習(xí)題及答案
- 高速公路機電工程標(biāo)準(zhǔn)化施工管理質(zhì)量控制
- 助產(chǎn)士的述職報告
- 醫(yī)保繳費問題排查整改報告
- 維護社會穩(wěn)定規(guī)定
- 2024年黑龍江高中學(xué)業(yè)水平合格性考試數(shù)學(xué)試卷試題(含答案詳解)
- 2024年度醫(yī)院財務(wù)部述職報告課件
- 《牙髓血運重建術(shù)》課件
- 浙江省杭州市余杭區(qū)2023-2024學(xué)年五年級上學(xué)期1月期末道德與法治試題
評論
0/150
提交評論