CCSDSP開發(fā)環(huán)境經(jīng)典教程_第1頁
CCSDSP開發(fā)環(huán)境經(jīng)典教程_第2頁
CCSDSP開發(fā)環(huán)境經(jīng)典教程_第3頁
CCSDSP開發(fā)環(huán)境經(jīng)典教程_第4頁
CCSDSP開發(fā)環(huán)境經(jīng)典教程_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

PAGEXXIX/NUMPAGES68第一章CCS概述本章概述CCS(CodeComposerStudio)軟件開發(fā)過程、CCS組件及CCS使用的文件和變量。CCS提供了配置、建立、調(diào)試、跟蹤和分析程序的工具,它便于實(shí)時(shí)、嵌入式信號(hào)處理程序的編制和測試,它能夠加速開發(fā)進(jìn)程,提高工作效率。1.1CCS概述CCS提供了基本的代碼生成工具,它們具有一系列的調(diào)試、分析能力。CCS支持如下所示的開發(fā)周期的所有階段。在使用本教程之前,必須完成下述工作:安裝目標(biāo)板和驅(qū)動(dòng)軟件。按照隨目標(biāo)板所提供的說明書安裝。如果你正在用仿真器或目標(biāo)板,其驅(qū)動(dòng)軟件已隨目標(biāo)板提供,你可以按產(chǎn)品的安裝指南逐步安裝。安裝CCS.遵循安裝說明書安裝。運(yùn)行CCS安裝程序SETUP.SETUP程序允許CCS使用為目標(biāo)板所安裝的驅(qū)動(dòng)程序。CCS構(gòu)成及接口見圖1-1。圖1-1CCS構(gòu)成及接口

1.2代碼生成工具代碼生成工具奠定了CCS所提供的開發(fā)環(huán)境的基礎(chǔ)。圖1-2是一個(gè)典型的軟件開發(fā)流程圖,圖中陰影部分表示通常的C語言開發(fā)途徑,其它部分是為了強(qiáng)化開發(fā)過程而設(shè)置的附加功能。圖1-2軟件開發(fā)流程圖1-2描述的工具如下:C編譯器(Ccompiler)產(chǎn)生匯編語言源代碼,其細(xì)節(jié)參見TMS320C54x最優(yōu)化C編譯器用戶指南。匯編器(assembler)把匯編語言源文件翻譯成機(jī)器語言目標(biāo)文件,機(jī)器語言格式為公用目標(biāo)格式(COFF),其細(xì)節(jié)參見TMS320C54x匯編語言工具用戶指南。連接器(linker)把多個(gè)目標(biāo)文件組合成單個(gè)可執(zhí)行目標(biāo)模塊。它一邊創(chuàng)建可執(zhí)行模塊,一邊完成重定位以及決定外部參考。連接器的輸入是可重定位的目標(biāo)文件和目標(biāo)庫文件,有關(guān)連接器的細(xì)節(jié)參見TMS320C54x最優(yōu)化C編譯器用戶指南和匯編語言工具用戶指南。歸檔器(archiver)允許你把一組文件收集到一個(gè)歸檔文件中。歸檔器也允許你通過刪除、替換、提取或添加文件來調(diào)整庫,其細(xì)節(jié)參見TMS320C54x匯編語言工具用戶指南。助記符到代數(shù)匯編語言轉(zhuǎn)換公用程序(mnimonic_to_algebricassemblytranslatorutility)把含有助記符指令的匯編語言源文件轉(zhuǎn)換成含有代數(shù)指令的匯編語言源文件,其細(xì)節(jié)參見TMS320C54x匯編語言工具用戶指南。你可以利用建庫程序(library_buildutility)建立滿足你自己要求的“運(yùn)行支持庫”,其細(xì)節(jié)參見TMS320C54x最優(yōu)化C編譯器用戶指南。運(yùn)行支持庫(run_time_supportlibraries)它包括C編譯器所支持的ANSI標(biāo)準(zhǔn)運(yùn)行支持函數(shù)、編譯器公用程序函數(shù)、浮點(diǎn)運(yùn)算函數(shù)和C編譯器支持的I/O函數(shù),其細(xì)節(jié)參見TMS320C54x最優(yōu)化C編譯器用戶指南。十六進(jìn)制轉(zhuǎn)換公用程序(hexconversionutility)它把COFF目標(biāo)文件轉(zhuǎn)換成TI-Tagged、ASCII-hex、Intel、Motorola-S、或Tektronix等目標(biāo)格式,可以把轉(zhuǎn)換好的文件下載到EPROM編程器中,其細(xì)節(jié)參見TMS320C54x匯編語言工具用戶指南。交叉引用列表器(cross_referencelister)它用目標(biāo)文件產(chǎn)生參照列表文件,可顯示符號(hào)及其定義,以及符號(hào)所在的源文件,其細(xì)節(jié)參見TMS320C54x匯編語言工具用戶指南。絕對列表器(absolutelister)它輸入目標(biāo)文件,輸出.abs文件,通過匯編.abs文件可產(chǎn)生含有絕對地址的列表文件。如果沒有絕對列表器,這些操作將需要冗長乏味的手工操作才能完成。

1.3CCS集成開發(fā)環(huán)境CCS集成開發(fā)環(huán)境允許編輯、編譯和調(diào)試DSP目標(biāo)程序。1.3.1編輯源程序CCS允許編輯C源程序和匯編語言源程序,你還可以在C語句后面顯示匯編指令的方式來查看C源程序。集成編輯環(huán)境支持下述功能:用彩色加亮關(guān)鍵字、注釋和字符串。以圓括弧或大括弧標(biāo)記C程序塊,查找匹配塊或下一個(gè)圓括弧或大括弧。在一個(gè)或多個(gè)文件中查找和替代字符串,能夠?qū)崿F(xiàn)快速搜索。取消和重復(fù)多個(gè)動(dòng)作。獲得“上下文相關(guān)”的幫助。用戶定制的鍵盤命令分配。

1.3.2創(chuàng)建應(yīng)用程序應(yīng)用程序通過工程文件來創(chuàng)建。工程文件中包括C源程序、匯編源程序、目標(biāo)文件、庫文件、連接命令文件和包含文件。編譯、匯編和連接文件時(shí),可以分別指定它們的選項(xiàng)。在CCS中,可以選擇完全編譯或增量編譯,可以編譯單個(gè)文件,也可以掃描出工程文件的全部包含文件從屬樹,也可以利用傳統(tǒng)的makefiles文件編譯。1.3.3調(diào)試應(yīng)用程序CCS提供下列調(diào)試功能:設(shè)置可選擇步數(shù)的斷點(diǎn)在斷點(diǎn)處自動(dòng)更新窗口查看變量觀察和編輯存儲(chǔ)器和寄存器觀察調(diào)用堆棧對流向目標(biāo)系統(tǒng)或從目標(biāo)系統(tǒng)流出的數(shù)據(jù)采用探針工具觀察,并收集存儲(chǔ)器映象繪制選定對象的信號(hào)曲線估算執(zhí)行統(tǒng)計(jì)數(shù)據(jù)觀察反匯編指令和C指令CCS提供GEL語言,它允許開發(fā)者向CCS菜單中添加功能。

1.4硬件仿真和實(shí)時(shí)數(shù)據(jù)交換TIDSPDSP供在片仿真支持,它使得CCS能夠控制程序的執(zhí)行,實(shí)時(shí)監(jiān)視程序運(yùn)行。增強(qiáng)型JTAG連接提供了對在片仿真的支持,它是一種可與任意DSP系統(tǒng)相連的低侵?jǐn)_式的連接。仿真接口提供主機(jī)一側(cè)的JTAG連接,如TIXDS510XDS510仿真器。為方便起見,評估板提供在板JTAG仿真接口。DSPXDS510仿真器在片仿真硬件提供多種功能:DSP的啟動(dòng)、停止或復(fù)位功能向DSP下載代碼或數(shù)據(jù)檢查DSP的寄存器或存儲(chǔ)器硬件指令或依賴于數(shù)據(jù)的斷點(diǎn)包括周期的精確計(jì)算在內(nèi)的多種記數(shù)能力主機(jī)和DSP之間的實(shí)時(shí)數(shù)據(jù)交換(RTDX)CCS提供在片能力的嵌入式支持;另外,RTDX通過主機(jī)和DSPAPIAPI:ApplicationProgrammingInterface,應(yīng)用程序編程接口提供主機(jī)和DSP之間的雙向?qū)崟r(shí)數(shù)據(jù)交換,它能夠使開發(fā)者實(shí)時(shí)連續(xù)地觀察到DSP應(yīng)用的實(shí)際工作方式。在目標(biāo)系統(tǒng)應(yīng)用程序運(yùn)行時(shí),RTDX也允許開發(fā)者在主機(jī)和DSP設(shè)備之間傳送數(shù)據(jù),而且這些數(shù)據(jù)可以在使用自動(dòng)OLE的客戶機(jī)上實(shí)時(shí)顯示和分析,從而縮短研發(fā)時(shí)間。API:ApplicationProgrammingInterface,應(yīng)用程序編程接口RTDX由目標(biāo)系統(tǒng)和主機(jī)兩部分組成。小的RTDX庫函數(shù)在目標(biāo)系統(tǒng)DSP上運(yùn)行。開發(fā)者通過調(diào)用RTDX軟件庫的API函數(shù)將數(shù)據(jù)輸入或輸出目標(biāo)系統(tǒng)的DSP,庫函數(shù)通過在片仿真硬件和增強(qiáng)型JTAG接口將數(shù)據(jù)輸入或輸出主機(jī)平臺(tái),數(shù)據(jù)在DSP應(yīng)用程序運(yùn)行時(shí)實(shí)時(shí)傳送給主機(jī)。圖1-4RTDX系統(tǒng)組成在主機(jī)平臺(tái)上,RTDX庫函數(shù)與CCS一道協(xié)同工作。顯示和分析工具可以通過COMAPI與RTDX通信,從而獲取目標(biāo)系統(tǒng)數(shù)據(jù),或?qū)?shù)據(jù)發(fā)送給DSP應(yīng)用例程。開發(fā)者可以使用標(biāo)準(zhǔn)的顯示軟件包,諸如NationalInstruments’LabVIEW,Quinn-Curtis’Real-TimeGraphicsTools,或MicrosoftExcel。同時(shí),開發(fā)者也可研制他們自己的VisualBasic或VisualC++應(yīng)用程序。圖1-5RTDX實(shí)例RTDX能夠記錄實(shí)時(shí)數(shù)據(jù),并可將其回放用于非實(shí)時(shí)分析。下述樣本由NationalInstruments’LabVIEW軟件產(chǎn)生。在目標(biāo)系統(tǒng)上,一個(gè)原始信號(hào)通過FIR濾波器,然后與原始信號(hào)一起通過RTDX發(fā)送給主機(jī)。在主機(jī)上,LabVIEW顯示屏通過RTDXCOMAPI獲取數(shù)據(jù),并將它們顯示在顯示屏的左邊。利用信號(hào)的功率譜可以檢驗(yàn)?zāi)繕?biāo)系統(tǒng)中FIR濾波器是否正常工作。處理后的信號(hào)通過LabVIEW,將其功率譜顯示在右上部分;目標(biāo)系統(tǒng)的原始信號(hào)通過LabVIEW的FIR濾波器,再將其功率譜顯示在右下部分。比較這兩個(gè)功率譜便可確認(rèn)目標(biāo)系統(tǒng)的濾波器是否正常工作。RTDX適合于各種控制、伺服和音頻應(yīng)用。例如,無線電通信產(chǎn)品可以通過RTDX捕捉語音合成算法的輸出以檢驗(yàn)語音應(yīng)用程序的執(zhí)行情況;嵌入式系統(tǒng)也可從RTDX獲益;硬磁盤驅(qū)動(dòng)設(shè)計(jì)者可以利用RTDX測試他們的應(yīng)用軟件,不會(huì)因不正確的信號(hào)加到伺服馬達(dá)上而與驅(qū)動(dòng)發(fā)生沖突;引擎控制器設(shè)計(jì)者可以利用RTDX在控制程序運(yùn)行的同時(shí)分析隨環(huán)境條件而變化的系數(shù)。對于這些應(yīng)用,用戶都可以使用可視化工具,而且可以根據(jù)需要選擇信息顯示方式。

1.5CCS文件和變量本節(jié)簡述CCS文件夾、CCS的文件類型及CCS環(huán)境變量。1.5.1安裝文件夾安裝進(jìn)程將在安裝CCS的文件夾(典型情況為:c:\ti)中建立子文件夾。此外,子文件夾又建立在Windows目錄下(c:\windowsorc:\winnt)。C:\ti包含以下目錄:bin.各種應(yīng)用程序C2800\bios。DSP/BIOSAPI的程序編譯時(shí)使用的文件C2800\cgtools.Texasinstruments源代碼生成工具C2800\examples.源程序?qū)嵗鼵2800\rtdx.RTDX文件C2800\tutorial.本手冊中使用的實(shí)例文件cc\bin.關(guān)于CCS環(huán)境的文件cc\gel.與CCS一起使用的GEL文件docs.PDS格式的文件和指南myprojects.用戶文件夾1.5.2文件擴(kuò)展名以下目錄結(jié)構(gòu)被添加到Windows目錄:ti\drivers.各種DSP板驅(qū)動(dòng)文件ti\plugins.和CCS一起使用的插件程序ti\uninstall.支持卸載CCS軟件的文件當(dāng)使用CCS時(shí),你將經(jīng)常遇見下述擴(kuò)展名文件:project.mak.CCS使用的工程文件program.c.C程序源文件program.asm.匯編程序源文件filename.h.C程序的頭文件,包含DSP/BIOSAPI模塊的頭文件filename.lib.庫文件project.cmd.連接命令文件program.obj.由源文件編譯或匯編而得的目標(biāo)文件program.out.(經(jīng)完整的編譯、匯編以及連接的)可執(zhí)行文件project.wks.存儲(chǔ)環(huán)境設(shè)置信息的工作區(qū)文件,program.cdb.配置數(shù)據(jù)庫文件。采用DSP/BIOSAPI的應(yīng)用程序需要這類文件,對于其它應(yīng)用程序則是可選的。保存配置文件時(shí)將產(chǎn)生下列文件:programcfg.cmd.連接器命令文件programcfg.h28.頭文件programcfg.s28.匯編源文件第二章開發(fā)一個(gè)簡單的應(yīng)用程序本章使用helloworld實(shí)例介紹在CCS中創(chuàng)建、調(diào)試和測試應(yīng)用程序的基本步驟;介紹CCS的主要特點(diǎn),為在CCS中深入開發(fā)DSP軟件奠定基礎(chǔ)。在使用本實(shí)例之前,你應(yīng)該已經(jīng)根據(jù)安裝說明書完成了CCS安裝。建議在使用CCS時(shí)利用目標(biāo)板而不是仿真器。如果沒有CCS而只有代碼生成工具和CodeComposer或者是利用仿真器在進(jìn)行開發(fā),你只要按第二章和第四章中的步驟執(zhí)行即可。2.1創(chuàng)建工程文件在本章中,將建立一個(gè)新的應(yīng)用程序,它采用標(biāo)準(zhǔn)庫函數(shù)來顯示一條helloworld消息。如果CCS安裝在c:\ti中,則可在c:\ti\myprojects建立文件夾adcshujucaijihello1。(若將CCS安裝在其它位置,則在相應(yīng)位置創(chuàng)建文件夾hello1。)hello1將c:\ti\c2800\tutorial\hello1中的所有文件拷貝到上述新文件夾。從WindowsStart菜單中選擇Programs→CodeComposerStudio‘C5400→CCStudio。(或者在桌面上雙擊CodeComposerStudio圖標(biāo)。)注:CCS設(shè)置如果第一次啟動(dòng)CCS時(shí)出現(xiàn)錯(cuò)誤信息,首先確認(rèn)是否已經(jīng)安裝了CCS。如果利用目標(biāo)板進(jìn)行開發(fā),而不是帶有CD-ROM的仿真器,則可參看與目標(biāo)板一起提供的文檔以設(shè)置正確的I/O端口地址。選擇菜單項(xiàng)Project→New。在SaveNewProjectAs窗口中選擇你所建立的工作文件夾并點(diǎn)擊Open。鍵入adcshujucaiji作為文件名并點(diǎn)擊Save,CCS就創(chuàng)建了adcshujucaiji.mak的工程文件,它存儲(chǔ)你的工程設(shè)置,并且提供對工程所使用的各種文件的引用。

2.2向工程添加文件選擇Project→AddFilestoProject,選擇hello.c并點(diǎn)擊Open。選擇Project→AddFilestoProject,在文件類型框中選擇*.asm。選擇vector.asm并點(diǎn)擊Open。該文件包含了設(shè)置跳轉(zhuǎn)到該程序的C入口點(diǎn)的RESET中斷(c_int00)所需的匯編指令。(對于更復(fù)雜的程序,可在vector.asm定義附加的中斷矢量,或者,可用3.1節(jié)上所說明的DSP/BIOS來自動(dòng)定義所有的中斷矢量)選擇Project→AddFilestoProject,在文件類型框中選擇*.cmd。選擇hello.cmd并點(diǎn)擊Open,hello.cmd包含程序段到存儲(chǔ)器的映射。選擇Project→AddFilestoProject,進(jìn)入編譯庫文件夾(C:\ti\c2800\cgtools\lib)。在文件類型框中選擇*.o*,*.lib。選擇rts.lib并點(diǎn)擊Open,該庫文件對目標(biāo)系統(tǒng)DSP提供運(yùn)行支持。點(diǎn)擊緊挨著Project、Myhello.mak、Library和Source旁邊的符號(hào)+展開Project表,它稱之為ProjectView。注:打開ProjectView如果看不到ProjectView,則選擇View→Project。如果這時(shí)選擇過Bookmarks圖標(biāo),仍看不到ProjectView,則只須再點(diǎn)擊ProjectView底部的文件圖標(biāo)即可。注意包含文件還沒有在ProjectView中出現(xiàn)。在工程的創(chuàng)建過程中,CCS掃描文件間的依賴關(guān)系時(shí)將自動(dòng)找出包含文件,因此不必人工地向工程中添加包含文件。在工程建立之后,包含文件自動(dòng)出現(xiàn)在ProjectView中。如果需要從工程中刪除文件,則只需在ProjectView中的相應(yīng)文件上點(diǎn)擊鼠標(biāo)右鍵,并從彈出菜單中選擇Removefromproject即可。在編譯工程文件時(shí),CCS按下述路徑順序搜索文件:包含源文件的目錄編譯器和匯編器選項(xiàng)的IncludeSearchPath中列出的目錄(從左到右)

2.3查看源代碼雙擊ProjectView中的文件hello.c,可在窗口的右半部看到源代碼。如想使窗口更大一些,以便能夠即時(shí)地看到更多的源代碼,你可以選擇Option→Font使窗口具有更小的字型。/*========hello.c========*/#include<stdio.h>#include"hello.h"#defineBUFSIZE30structPARMSstr={2934,9432,213,9432,&str};/**========main========**/voidmain(){#ifdefFILEIOinti;charscanStr[BUFSIZE];charfileStr[BUFSIZE];size_treadSize;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}當(dāng)沒有定義FILEIO時(shí),采用標(biāo)準(zhǔn)puts()函數(shù)顯示一條helloworld消息,它只是一個(gè)簡單程序。當(dāng)定義了FILEIO后(見2.5節(jié)),該程序給出一個(gè)輸入提示,并將輸入字符串存放到一個(gè)文件中,然后從文件中讀出該字符串,并把它輸出到標(biāo)準(zhǔn)輸出設(shè)備上。

2.4編譯和運(yùn)行程序CCS會(huì)自動(dòng)將你所作的改變保存到工程設(shè)置中。在完成上節(jié)之后,如果你退出了CCS,則通過重新啟動(dòng)CCS和點(diǎn)擊Project→Open,即可返回到你剛才停止工作處。注:重新設(shè)置目標(biāo)系統(tǒng)DSP如果第一次能夠啟動(dòng)CCS,但接下來得到CCS不能初始化目標(biāo)系統(tǒng)DSP的出錯(cuò)信息則可選擇Debug→ResetDSP菜單項(xiàng)。若還不能解決上述問題,你可能需要運(yùn)行你的目標(biāo)板所提供的復(fù)位程序。為了編譯和運(yùn)行程序,要按照以下步驟進(jìn)行操作:點(diǎn)擊工具欄按鈕或選擇Project→RebuildAll,CCS重新編譯、匯編和連接工程中的所有文件,有關(guān)此過程的信息顯示在窗口底部的信息框中。選擇File→LoadProgram,選擇剛重新編譯過的程序adshujucaiji.out(它應(yīng)該在c:\ti\myprojects\adshujucaiji文件夾中,除非你把CCS安裝在別的地方)并點(diǎn)擊Open。CCS把程序加載到目標(biāo)系統(tǒng)DSP上,并打開Dis_Assembly窗口,該窗口顯示反匯編指令。(注意,CCS還會(huì)自動(dòng)打開窗口底部一個(gè)標(biāo)有Stdout的區(qū)域,該區(qū)域用以顯示程序送往Stdout的輸出。)點(diǎn)擊Dis_Assembly窗口中一條匯編指令(點(diǎn)擊指令,而不是點(diǎn)擊指令的地址或空白區(qū)域)。按F1鍵。CCS將搜索有關(guān)那條指令的幫助信息。這是一種獲得關(guān)于不熟悉的匯編指令的幫助信息的好方法。點(diǎn)擊工具欄按鈕或選擇Debug→Run。注:屏幕尺寸和設(shè)置工具欄有些部分可能被Build窗口隱藏起來,這取決于屏幕尺寸和設(shè)置。為了看到整個(gè)工具欄,請?jiān)贐uild窗口中點(diǎn)擊右鍵并取消AllowDocking選擇。當(dāng)運(yùn)行程序時(shí),可在Stdout窗口中看到helloworld消息。

2.5修改程序選項(xiàng)和糾正語法錯(cuò)誤在前一節(jié)中,由于沒有定義FILEIO,預(yù)處理器命令(#ifdef和#endif)之間的程序沒有運(yùn)行。在本節(jié)中,使用CCS設(shè)置一個(gè)預(yù)處理器選項(xiàng),并找出和糾正語法錯(cuò)誤。選擇Project→Options。從BuildOption窗口的Compiler欄的Category列表中選擇Symbles。在DefineSymbles框中鍵入FILEIO并按Tab鍵。注意,現(xiàn)在窗口頂部的編譯命令包含-d選項(xiàng),當(dāng)你重新編譯該程序時(shí),程序中#ifdefFILEIO語句后的源代碼就包含在內(nèi)了。(其它選項(xiàng)可以是變化的,這取決于正在使用的DSP板。)點(diǎn)擊OK保存新的選項(xiàng)設(shè)置。點(diǎn)擊(RebuildAll)工具欄按鈕或選擇Project→RebuildAll。無論何時(shí),只要工程選項(xiàng)改變,就必須重新編譯所有文件。出現(xiàn)一條說明程序含有編譯錯(cuò)誤的消息,點(diǎn)擊Cancel。在Buildtab區(qū)域移動(dòng)滾動(dòng)條,就可看到一條語法出錯(cuò)信息。雙擊描述語法錯(cuò)誤位置的紅色文字。注意到hello.c源文件是打開的,光標(biāo)會(huì)落在該行上:fileStr[i]=0修改語法錯(cuò)誤(缺少分號(hào))。注意,緊挨著編輯窗口題目欄的文件名旁出現(xiàn)一個(gè)星號(hào)(*),表明源代碼已被修改過。當(dāng)文件被保存時(shí),星號(hào)隨之消失。選擇File→Save或按Ctrl+S可將所作的改變存入hello.c。點(diǎn)擊(IncrementalBuild)工具欄按鈕或選擇Project→Build,CCS重新編譯已被更新的文件。

2.6使用斷點(diǎn)和觀察窗口當(dāng)開發(fā)和測試程序時(shí),常常需要在程序執(zhí)行過程中檢查變量的值。在本節(jié)中,可用斷點(diǎn)和觀察窗口來觀察這些值。程序執(zhí)行到斷點(diǎn)后,還可以使用單步執(zhí)行命令。選擇File→ReloadProgram.雙擊ProjectView中的文件hello.c。可以加大窗口,以便能看到更多的源代碼。把光標(biāo)放到以下行上:fprintf(fptr,“%S”,scacStr);點(diǎn)擊工具欄按鈕或按F9,該行顯示為高亮紫紅色。(如果愿意的話,可通過Option→Color改變顏色。)選擇View→WatchWindow。CCS窗口的右下角會(huì)出現(xiàn)一個(gè)獨(dú)立區(qū)域,在程序運(yùn)行時(shí),該區(qū)域?qū)@示被觀察變量的值。在WatchWindow區(qū)域中點(diǎn)擊鼠標(biāo)右鍵,從彈出的表中選擇InsertNewExpression。鍵入表達(dá)式*scanStr并點(diǎn)擊OK。注意局部變量*scanStr被列在Watchwindow中,但由于程序當(dāng)前并未執(zhí)行到該變量的main()函數(shù),因此沒有定義。選擇Debug→Run或按F5。在相應(yīng)提示下,鍵入goodbye并點(diǎn)擊OK。注意,Stdout框以藍(lán)色顯示輸入的文字。還應(yīng)注意,WatchWindow中顯示出*scanStr的值。在鍵入一個(gè)輸入字符串之后,程序運(yùn)行并在斷點(diǎn)處停止。程序中將要執(zhí)行的下一行以黃色加亮。點(diǎn)擊(StepOver)工具欄按鈕或按F10以便執(zhí)行到所調(diào)用的函數(shù)fprintf()之后。用CCS提供的step命令試驗(yàn):■StepInto(F2)Stepover(F10)StepOut(ShiftF7)RuntoCursor(CtrlF10)點(diǎn)擊工具欄按鈕或按F5運(yùn)行程序到結(jié)束。3基于DSP的數(shù)據(jù)采集設(shè)計(jì)實(shí)例3.1安裝驅(qū)動(dòng)程序(1)安裝仿真器驅(qū)動(dòng)程序連接接仿真器、DSP開發(fā)板,將仿真器經(jīng)USB接口臉上電腦之后系統(tǒng)提示“使用找到新硬件向?qū)А?,選擇驅(qū)動(dòng)文件“XDS510USBDriver”,完成之后系統(tǒng)提示新硬件可用。如下圖所示。(2)安裝仿真器的CCS驅(qū)動(dòng)找到驅(qū)動(dòng)文件“XDS510CCSDriver”,運(yùn)行,安裝到CCS3.3軟件所在的文件夾里面,具體如下圖所示。3.2啟動(dòng)CCS前的設(shè)置(1).打開“SetupCCStudioV3.3”,在“AvailableFactoryBoards”下選擇“F2812XDS510Emulator”(2).在“systemconfiguration”下的“F2812XDS510Emulator”右鍵選擇“properties”,對其進(jìn)項(xiàng)設(shè)置,具體設(shè)置如下圖。(3).點(diǎn)擊“SaveandQuit”完成芯片設(shè)置,系統(tǒng)自動(dòng)啟動(dòng)CCS3.3操作界面。3.3創(chuàng)建AD數(shù)據(jù)采集工程(1)選擇“Project→New(工程→新建)”,彈出工程建立對話框。(2)在Project欄輸入文件名adshujucaiji。工作目錄是D:\ccstudio_v3.3\myprojects\,其他兩項(xiàng)也選默認(rèn)即可。(3)單擊完成按鈕,將在工程窗口的Project下面創(chuàng)建adshujucaiji工程。3.4項(xiàng)工程中添加源文件(1)將從ti官方網(wǎng)站上下載的源文件復(fù)制到D:\ccstudio_v3.3\myprojects\adshujucaiji文件夾內(nèi)。(2)在“projects”下右鍵點(diǎn)擊工程名“adshujucaiji”選擇“addFiletoproject…”,將復(fù)制到文件夾“adshujucaiji”中的源文件全部加載進(jìn)來。如下圖所示。3.5程序的編寫3.5.1程序編寫思路(1).一個(gè)DSP程序的構(gòu)成。一個(gè)完整的DSP程序主要由庫文件,.c源文件,.h頭文件以及.cmd連接命令文件組成。(2).DSP程序的編寫思路一個(gè)DSP程序要完成設(shè)想的功能,需要完成系統(tǒng)初始化,所使用的外設(shè)的初始化,中斷初始化,已經(jīng)終端服務(wù)程序的編寫。其中系統(tǒng),外設(shè)初始化只需要對相應(yīng)的寄存器進(jìn)行設(shè)置即可以完成。中斷服務(wù)程序根據(jù)我們所需要的處理算法進(jìn)行編寫。(3).現(xiàn)在總結(jié)起來DSP2812其實(shí)可以分為以下幾個(gè)部分:時(shí)鐘(DSP工作的動(dòng)力)、外設(shè)(DSP實(shí)現(xiàn)相應(yīng)的功能都是有對應(yīng)的外設(shè)來實(shí)現(xiàn)的)、中斷和中斷服務(wù)程序。只要把這四個(gè)部分弄懂了,DSP的使用應(yīng)該就沒多大問題。DSP的不同功能主要有對應(yīng)的外設(shè)實(shí)現(xiàn),實(shí)際上只要掌握了一種外設(shè)的使用方(寄存器、中斷、時(shí)鐘的設(shè)置)其他的都可以用同樣的步驟使用。首先將程序分成:系統(tǒng)初始化、所使用的外設(shè)的初始化、三級(jí)中斷設(shè)置、中斷服務(wù)程序、鏈接命令文件(.cmd文件)和頭文件幾個(gè)部分。在系統(tǒng)初始化程序中了解系統(tǒng)時(shí)鐘、外設(shè)端口、看門狗的設(shè)置方法以及相關(guān)寄存器的使用,在外設(shè)初始化程序中,對應(yīng)該外設(shè)的使用原理,了解“這個(gè)寄存器起什么作用,這樣設(shè)置起什么作用”,掌握該外設(shè)設(shè)備(聯(lián)想到所有的外設(shè))初始化時(shí)必須設(shè)置的內(nèi)容有哪些,需要特殊設(shè)施的寄存器有哪些。之后了解外設(shè)級(jí)、PIE級(jí)和CPU級(jí)中斷初始化、開中斷、關(guān)中斷的設(shè)置方法、順序和原因。中斷服務(wù)程序完成特殊的數(shù)據(jù)處理,按照自己的算法編寫就可以,但要注意在所有的中斷服務(wù)程序中都要對三級(jí)中斷進(jìn)行相應(yīng)的設(shè)置,以保證中斷服務(wù)程序能夠連續(xù)不斷地運(yùn)行下去。在.CMD文件中完成對內(nèi)部存儲(chǔ)器外擴(kuò)存儲(chǔ)器的分配,了解相關(guān)指令的作用和使用方法。3.5.2程序工作流程在進(jìn)行軟件設(shè)計(jì)之前,首先明確系統(tǒng)的工作流程,簡單介紹如下:(1)DSP上電,等待采集開始命令。(2)使用事件管理器EVA的通用定時(shí)器周期中斷來觸發(fā)ADC的采集動(dòng)作。(3)進(jìn)行數(shù)據(jù)的校正和融合處理。(4)將融合后的數(shù)據(jù)經(jīng)eCAN總線傳送到上位機(jī)。本系統(tǒng)使用EVA的通用定時(shí)器1的周期中斷來觸發(fā)AD的轉(zhuǎn)換,當(dāng)ADC完成SEQ1中定義的端口的數(shù)據(jù)采集轉(zhuǎn)換時(shí),觸發(fā)中斷,進(jìn)入中斷服務(wù)程序。DSPF2812的AD為12位精度,由于各種因素的影響,測量值存在誤差,需進(jìn)行校正。校正完成之后對該次測量獲得的兩個(gè)數(shù)值進(jìn)行聯(lián)合kalman濾波器數(shù)據(jù)融合,完成融合操作后將得到的數(shù)據(jù)存入eCAN總線的發(fā)送郵箱,將數(shù)據(jù)發(fā)送到上位機(jī),一次操作完成。之后退出中斷程序,等待下一次中斷觸發(fā)信號(hào)的到來。本系統(tǒng)就按照怎樣的順序完成真空度的數(shù)據(jù)采集、校正、融合和傳輸操作。整個(gè)軟件系統(tǒng)可以分為如下幾個(gè)部分:系統(tǒng)初始化,用來完成DSP寄存器的設(shè)置,各級(jí)中斷的清零,系統(tǒng)時(shí)鐘、外設(shè)時(shí)鐘的設(shè)置,踢除看門狗、初始化AD、EVA等操作;終端服務(wù)程序的設(shè)置,用來完成采樣結(jié)果的移位操作、校正,聯(lián)合kalman濾波器數(shù)據(jù)融合以及eCAN總線的數(shù)據(jù)傳輸;鏈接命令文件的編寫,由于使用了外擴(kuò)存儲(chǔ)器,為保證程序執(zhí)行的速度,將程序空間分配到片內(nèi)存儲(chǔ)器,程序執(zhí)行過程中產(chǎn)生的數(shù)據(jù)存儲(chǔ)到片外存儲(chǔ)器中。3.5.3系統(tǒng)初始化sysctrl()(1)系統(tǒng)時(shí)鐘設(shè)置,通過高速時(shí)鐘預(yù)訂標(biāo)寄存器標(biāo)志寄存器簡稱標(biāo)寄存器或標(biāo)器(HISPCP)、低速時(shí)鐘預(yù)訂標(biāo)寄存器(LOSPCP)和鎖相環(huán)寄存器設(shè)置,獲得高、第速時(shí)鐘,使能相關(guān)外設(shè)時(shí)鐘。如下圖所示標(biāo)志寄存器簡稱標(biāo)寄存器或標(biāo)器(2)中斷初始化首先關(guān)閉全局中斷,關(guān)閉外設(shè)中斷,并清除所左右的中斷標(biāo)志位。DINT; //關(guān)閉總中斷IER=0x0000; //關(guān)閉外設(shè)中斷IFR=0x0000; //清中斷標(biāo)志 其次初始化PIE控制寄存器,由函數(shù)InitPiectrl()實(shí)現(xiàn)。將所有的PIE級(jí)中斷標(biāo)志位和中斷使能位清零。并將AD中斷所在組對應(yīng)的中斷應(yīng)答寄存器中的相應(yīng)位置零。最后使能PIE向量表,由函數(shù)InitPieVectable()實(shí)現(xiàn)。3.5.4端口設(shè)置數(shù)據(jù)采集使用同步轉(zhuǎn)換模式,對通道ADCINA0和ADCINB0同時(shí)采樣8次。所以將這兩個(gè)端口設(shè)置成普通輸入輸出端口且為輸入模式。voidInitGpio(void){EALLOW;GpioMuxRegs.GPAMUX.bit.PWM3_GPIOA2=0;GpioMuxRegs.GPADIR.bit.GPIOA0=0;GpioMuxRegs.GPBMUX.bit.PWM7_GPIOB0=0;GpioMuxRegs.GPBDIR.bit.GPIOB0=0;GpioMuxRegs.GPFMUX.bit.SCITXDA_GPIOF4=1;GpioMuxRegs.GPFMUX.bit.CANTXA_GPIOF6=1;GpioMuxRegs.GPFMUX.bit.CANRXA_GPIOF7=1;GpioMuxRegs.GPFMUX.bit.CANRXA_GPIOF7=1;GpioMuxRegs.GPFMUX.bit.CANTXA_GPIOF6=1;EDIS;}3.5.5數(shù)據(jù)采集外設(shè)AD的設(shè)置F2812的ADC模塊有16個(gè)通道,排序器SEQ1和SEQ2可以作為兩個(gè)獨(dú)立的8通道模塊,也可以級(jí)聯(lián)成一個(gè)16通道的模塊。AD模塊的內(nèi)部結(jié)構(gòu)如圖3.5所示。雖然有兩組輸入通道和兩個(gè)排序器,但是ADC模塊中只有一個(gè)轉(zhuǎn)換器,同一時(shí)刻只能對1路輸入信號(hào)進(jìn)行轉(zhuǎn)換,當(dāng)有多路信號(hào)需要進(jìn)行轉(zhuǎn)換時(shí),ADC模塊通過前端模擬多路復(fù)用器的控制,在同一時(shí)刻,只允許1路信號(hào)輸入到ADC的轉(zhuǎn)換器中。在這兩種工作方式下,AD能夠通過對相關(guān)寄存器的設(shè)置對需要轉(zhuǎn)換的通道進(jìn)行排序,通過模擬多路轉(zhuǎn)換器每次轉(zhuǎn)換的通道。每個(gè)排序器轉(zhuǎn)換完成,將所轉(zhuǎn)換通道的值存儲(chǔ)在其各自的轉(zhuǎn)換結(jié)果寄存器中。我們可以通過設(shè)置排序寄存器,達(dá)到對一個(gè)通道進(jìn)行多次轉(zhuǎn)換的目的,這就是所說的過采樣算法,對比單次采樣轉(zhuǎn)換,能夠有效提高結(jié)果的精度2812的ADC可以工作在順序采樣和同步采樣兩種工作模式。順序采樣也就是按照順序?qū)γ總€(gè)通道依次進(jìn)行采樣。而同步采樣,是同時(shí)采樣一對通道,即ADCINA0和ADCINB0同時(shí)采樣,ADCINA1和ADCINB1同時(shí)采樣。我們使用級(jí)聯(lián)排序器的同時(shí)采樣模式。此時(shí)排序器SEQ1和SEQ2級(jí)聯(lián)成最多16個(gè)通道的排序器。ADC模塊只有接收到轉(zhuǎn)換觸發(fā)信號(hào)才可開始轉(zhuǎn)換,如下表所示,我們采用事件管理器A的周期中斷觸發(fā)AD。SEQ1SEQ2級(jí)聯(lián)SEQ軟件觸發(fā)(軟件SOC)軟件觸發(fā)(軟件SOC)軟件觸發(fā)(軟件SOC)事件管理器A(EVASOC)事件管理器B(EVBSOC)事件管理器A(EVASOC)事件管理器B(EVBSOC)外部SOC引腳外部SOC引腳2812AD的16個(gè)通道是可以通過編程來進(jìn)行選擇在某一時(shí)刻究竟是哪一個(gè)通道被選通進(jìn)行采樣的。這個(gè)功能就需要通過ADC輸入通道選擇序列控制寄存器ADCCHSELSEQx(x=1,2,3,4)來實(shí)現(xiàn)。每一個(gè)輸入通道選擇序列控制寄存器都是16位的,被分成了4個(gè)功能位CONVxx,每一個(gè)功能位占據(jù)寄存器的4位,在AD轉(zhuǎn)換的過程中,當(dāng)前CONVxx位定義了要進(jìn)行采樣和轉(zhuǎn)換的引腳。為了能夠?qū)Χ丝谶M(jìn)行連續(xù)不斷的采樣,通用定時(shí)器1產(chǎn)生的AD采集觸發(fā)信號(hào)頻率應(yīng)高于AD采集頻率。我們采用的ADCLK為1.875M,每次觸發(fā)共采集16次,加上采樣窗口時(shí)間為6個(gè)ADCLK,轉(zhuǎn)換頻率約為13K。EVA使用低速時(shí)鐘HISPCP,它的的通用定時(shí)器1的時(shí)鐘為60M,周期為300,為連續(xù)增計(jì)數(shù)模式,它的周期匹配頻率為0.2M,能夠使ADC連續(xù)不斷地采集數(shù)據(jù)。輸入到AD的時(shí)鐘如下圖所示3.5.6EVA的初始化使用EVA通用定時(shí)器1的周期中斷觸發(fā)信號(hào),EVA使用低速時(shí)鐘HISPCP,它的的通用定時(shí)器1的時(shí)鐘為60M,周期為300,為連續(xù)增計(jì)數(shù)模式,它的周期匹配頻率為0.2M,能夠使ADC連續(xù)不斷地采集數(shù)據(jù)。EVA的初始化程序如下voidInitEVA(void){EALLOW;EvaRegs.T1CMPR=0x0080;EvaRegs.T1PR=0x012C;EvaRegs.GPTCONA.bit.T1TOADC=1;EvaRegs.T1CON.all=0x1042;EvaRegs.T1CNT=0x0000;EDIS;} 3.5.7中斷設(shè)置(1)DSP的中斷分為外設(shè)級(jí)、PIE級(jí)和CPU級(jí),為了是CPU能夠響應(yīng)有中斷出發(fā)時(shí)間引發(fā)的中斷,需要將三級(jí)中斷全部打開。(2)我們使用的是ADC采集完成中斷,當(dāng)AD模塊完成8次同步采集之后觸發(fā)外設(shè)計(jì)中斷,對應(yīng)的中斷標(biāo)志位ADCIFR自動(dòng)置位,如果此時(shí)ADC中斷使能位ADCIER為1.并且ADC中斷所在的中斷組對應(yīng)的中斷應(yīng)答寄存器PIEACK的相應(yīng)位為0,則將外

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論