版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
會(huì)計(jì)學(xué)1DSP如何構(gòu)建一個(gè)完整的工程解析目錄1、一個(gè)完整的工程有哪些文件構(gòu)成及其作用2、怎樣創(chuàng)建一個(gè)新的DSP工程3、通用擴(kuò)展語(yǔ)言GEL第1頁(yè)/共41頁(yè)4.1DSP開(kāi)發(fā)環(huán)境、硬件平臺(tái)DSP開(kāi)發(fā)通常需要軟件開(kāi)發(fā)環(huán)境和硬件平臺(tái)。軟件開(kāi)發(fā)環(huán)境:CCS(Code
Composer
Studio),是TI公司為方便開(kāi)發(fā)人員而設(shè)計(jì)的軟件環(huán)境。硬件平臺(tái):由仿真器和目標(biāo)板組成。仿真器的作用是將目標(biāo)板和PC機(jī)連起來(lái),使得您可以在CCS里對(duì)目標(biāo)板上的DSP進(jìn)行編程,燒寫(xiě)和調(diào)試等工作,而目標(biāo)板是指具有DSP芯片,上電后能保證DSP獨(dú)立運(yùn)行電路板,第2頁(yè)/共41頁(yè)一個(gè)完整的工程由哪些文件構(gòu)成打開(kāi)CCS3.3軟件前的準(zhǔn)備工作1.要確定訪問(wèn)的文件中不含中文字符,因?yàn)镃CS3.3是英文字符的軟件;2.將TMS320F2812例程文件夾中的Gpio文件夾復(fù)制到CCS3.3安裝路徑下MyProjects文件夾里第3頁(yè)/共41頁(yè)打開(kāi)CCS軟件后,打開(kāi)工程的方式有以下兩種:一種是點(diǎn)擊菜單欄的Project—>Open,另一種方法是左側(cè)Files窗口內(nèi),點(diǎn)擊“Projects”然后右鍵,點(diǎn)擊“Open
Project”。第4頁(yè)/共41頁(yè)打開(kāi)gpio工程之后,gpio.pjt工程會(huì)顯示在左側(cè)Files窗口內(nèi)。點(diǎn)擊gpio.pjt左邊的加號(hào),工程內(nèi)部的文件就展現(xiàn)在我們面前了,下面我們來(lái)分析一下構(gòu)成該工程的文件。
首先我們看到的是Include文件夾下面有很多后綴是.h的文件,這就是2812的頭文件了,頭文件的作用是定義了2812內(nèi)部寄存器的數(shù)據(jù)結(jié)構(gòu)。頭文件一般情況下不需要修改,如果你需要定義一些在整個(gè)工程內(nèi)都具有作用域的全局變量的時(shí)候,可以在頭文件中定義這些變量,具體的方法我們以后在例程或項(xiàng)目實(shí)踐中應(yīng)該會(huì)有介紹。第5頁(yè)/共41頁(yè)
然后是libraries下面擴(kuò)展名為.lib的庫(kù)文件,它是C語(yǔ)言系統(tǒng)的庫(kù)文件。第6頁(yè)/共41頁(yè)庫(kù)文件下面是source文件夾,里面的文件都是以.c為擴(kuò)展名的,顧名思義,就是源文件,也就是我們開(kāi)發(fā)時(shí)編寫(xiě)的軟件代碼都是保存在這些文件中的。第7頁(yè)/共41頁(yè)最后是以.CMD為擴(kuò)展名的文件,這個(gè)文件的作用是用來(lái)分配存儲(chǔ)空間的。由于DSP編譯器的編譯結(jié)果是未定位的,DSP也沒(méi)有操作系統(tǒng)來(lái)定位執(zhí)行代碼,DSP系統(tǒng)的配置需求也不盡相同,因此我們根據(jù)實(shí)際的需求,自己定義代碼的存儲(chǔ)位置。打個(gè)通俗的比喻,就是我們有一個(gè)倉(cāng)庫(kù),現(xiàn)在需要把貨物存放到倉(cāng)庫(kù)里面去,為了便于日后取用貨物,我們將貨物分門(mén)別類(lèi),然后把它們存放到指定的位置去。把哪些貨物放到哪個(gè)位置的規(guī)則,就是我們的CMD文件的內(nèi)容。CMD文件又分成兩種。一種是分配RAM空間的,用來(lái)將程序load到RAM內(nèi)進(jìn)行調(diào)試,因?yàn)槲覀兇蟛糠謺r(shí)間都是在調(diào)試程序,所以多用這類(lèi)CMD,gpio工程中的sram.cmd就是用于分配RAM空間的,另一種是分配FLASH空間的,當(dāng)程序調(diào)試完畢后,需要將其燒寫(xiě)到FLASH內(nèi)部進(jìn)行固化,這個(gè)時(shí)侯我們就需要使用這類(lèi)CMD文件了。第8頁(yè)/共41頁(yè)總結(jié)1、頭文件:以.h為后綴的文件,主要定義了芯片內(nèi)部寄存器結(jié)構(gòu)、中斷服務(wù)程序等內(nèi)容。2、庫(kù)文件:以.lib為后綴的文件,包含了寄存器的地址和對(duì)應(yīng)標(biāo)示符的定義,還包含標(biāo)準(zhǔn)C/C++運(yùn)行支持的庫(kù)函數(shù)。3、源文件:所編寫(xiě)的代碼都寫(xiě)在各個(gè)源文件中;包含了所有要實(shí)現(xiàn)功能的代碼,是工程的核心。4、CMD文件:分配RAM空間,用來(lái)將下載到RAM中的程序進(jìn)行調(diào)試,是因?yàn)镈SP編譯器編譯結(jié)果是未定位的,DSP也沒(méi)有相應(yīng)系統(tǒng)來(lái)執(zhí)行代碼,DSP系統(tǒng)的配置需求也不盡相同,因此需要定義代碼的存儲(chǔ)位置。第9頁(yè)/共41頁(yè)4.2怎樣創(chuàng)建一個(gè)新的DSP工程
1.打開(kāi)CCS,點(diǎn)擊菜單欄里的Projects,點(diǎn)擊New,會(huì)跳出新工程設(shè)置的對(duì)話框,如下圖所示。第10頁(yè)/共41頁(yè)2、在Projects欄內(nèi)我們填寫(xiě)工程的名字:hellodsp。檢查L(zhǎng)ocation,如果您都是按照默認(rèn)路徑來(lái)的,那沒(méi)有問(wèn)題,如果不是默認(rèn)路徑,您得手工指定一下文件路徑,確認(rèn)沒(méi)有問(wèn)題后點(diǎn)擊Finish。我們發(fā)現(xiàn)在myprojects文件夾下多了hellodsp文件夾,hellodsp文件夾下生成了hellodsp.pjt文件,而且在CCS左側(cè)的Files欄內(nèi),出現(xiàn)了我們剛剛創(chuàng)建的hellodsp.pjt。第11頁(yè)/共41頁(yè)
3.根據(jù)前面一個(gè)完整工程的組成情況的分析,我們首先來(lái)準(zhǔn)備頭文件。由于頭文件多數(shù)情況下是不需改動(dòng)的,也就是說(shuō)大家用的頭文件都是一樣的,因?yàn)槭嵌x2812的內(nèi)部資源,所以可以將newproject文件夾內(nèi)的頭文件全部復(fù)制到hellodsp文件夾。4.將newproject文件夾內(nèi)的.lib文件和.cmd文件同樣復(fù)制到hellodsp文件夾。5.下面就剩下源文件了。我們先來(lái)分析一下newproject文件夾下各個(gè)源文件的內(nèi)容,以便于我們更好的理解和采用這種文件結(jié)構(gòu)。第12頁(yè)/共41頁(yè)F2812常用的源文件序號(hào)文件名主要內(nèi)容1DSP28_Adc.cAD初始化函數(shù)2DSP28_CpuTimers.cCPU定時(shí)器初始化函數(shù)3DSP28_ECan.c增強(qiáng)型Can初始化函數(shù)4DSP28_Ev.c事件管理器Ev初始化函數(shù)5DSP28_Gpio.c通用I/O模塊初始化函數(shù)6DSP28_Mcbsp.c多通道緩沖串行口初始化函數(shù)7DSP28_Sci.c串行通信接口初始化函數(shù)8DSP28_Spi.c串行外圍接口初始化函數(shù)9DSP28_SysCtrl.c系統(tǒng)控制模塊初始化函數(shù)10DSP28_Xintf.c外部接口初始化函數(shù)11DSP28_XIntrupt外部中斷初始化函數(shù)12DSP28_InitPeripherals.c包含了其他的外設(shè)初始化函數(shù)13DSP28_PieCtrl.cPIE控制模塊初始化函數(shù)14DSP28_PieVect.c對(duì)PIE中斷向量進(jìn)行初始化15DSP28_DefaultIsr.c包含了F2812所有外設(shè)中斷函數(shù)16DSP28_GlobalVariableDefs.c定義了F2812的全局變量和數(shù)據(jù)段程序第13頁(yè)/共41頁(yè)
通過(guò)上面的分析我們可以看到幾個(gè)文件非常重要,DSP28_DefaultIsr.C,DSP28_GlobalVariableDefs.C,DSP28_PieCtrl.C,DSP28_PieVect.C,DSP28_SysCtrl.C,把這些未編輯過(guò)的文件復(fù)制過(guò)來(lái)。其他的外設(shè)相關(guān)的文件,這個(gè)工程中涉及到哪個(gè)外設(shè),就把這個(gè)外設(shè)相關(guān)的源文件復(fù)制過(guò)來(lái),一起加入工程。接下來(lái)就是往工程內(nèi)添加文件了。首先我們來(lái)添加庫(kù)文件。點(diǎn)擊“hellodsp.pjt”,右鍵,點(diǎn)擊“Add
Files
to
Project”,跳出了添加文件的對(duì)話框第14頁(yè)/共41頁(yè)
在篩選框欄內(nèi)選擇“Object
and
Library
Files”,就會(huì)看到RTS2800N.lib,點(diǎn)擊并打開(kāi),便將庫(kù)文件添加到工程中來(lái)了。第15頁(yè)/共41頁(yè)用同樣的方法,來(lái)添加sources文件夾下的源文件和CMD文件。只是添加源文件時(shí),篩選框的條件是“C++
Source
File(*.cpp;*.cc;*.cxx)”添加CMD文件時(shí),篩選框的條件應(yīng)當(dāng)選擇”Linker
Command
File(*.cmd;*.lcf)”。創(chuàng)建main函數(shù):點(diǎn)擊菜單欄中的’File’,”New”,”SourceFile”,在編輯區(qū)域內(nèi)出現(xiàn)了一個(gè)新的Untitled1文件第16頁(yè)/共41頁(yè)點(diǎn)擊“File”,“Save”,會(huì)出現(xiàn)保存文件的對(duì)話框。文件名填寫(xiě)“hellodsp”,關(guān)鍵要注意的是保存類(lèi)型,因?yàn)槲覀儸F(xiàn)在要建立的是源文件,所以選擇“C/C++SourceFlies(*.c*)”,點(diǎn)擊保存。第17頁(yè)/共41頁(yè)這時(shí),我們看到原來(lái)的“Untitled1”變成了“hellodsp”了。我們?cè)趆ellodsp文件內(nèi)輸入以下內(nèi)容:然后點(diǎn)擊保存,并關(guān)閉hellodsp.c文件。再用我們剛才添加文件的方法將hellodsp.c添加到工程中來(lái)。第18頁(yè)/共41頁(yè)點(diǎn)擊工具欄上的“RebuildAll”,對(duì)hellodsp.pjt進(jìn)行編譯:編譯結(jié)果如圖所示,出現(xiàn)了一個(gè)warning:根據(jù)warning的提示是用默認(rèn)的1024bytes來(lái)創(chuàng)建.stacksection,就是堆棧段。點(diǎn)擊菜單欄的”P(pán)roject”,”buildoptions”,彈出編譯選項(xiàng)的對(duì)話框。選擇“Linker”標(biāo)簽,在StackSize(-stack)欄填寫(xiě)“800”,點(diǎn)擊確定。第19頁(yè)/共41頁(yè)重新編譯:第20頁(yè)/共41頁(yè)4.3通用擴(kuò)展語(yǔ)言GEL
GEL是GeneralExtendedLanguage的縮寫(xiě),即通用擴(kuò)展語(yǔ)言,是一種類(lèi)似于C的解釋性語(yǔ)言。用戶可以通過(guò)在文件中使用GEL語(yǔ)言來(lái)創(chuàng)建函數(shù),從而擴(kuò)展CCS的功能。通過(guò)GEL,可以訪問(wèn)目標(biāo)板的存儲(chǔ)器,并為CCS的GEL菜單添加選項(xiàng)。第21頁(yè)/共41頁(yè)4.3.1GEL語(yǔ)法
GEL語(yǔ)法支持的語(yǔ)句類(lèi)型序號(hào)GEL語(yǔ)法支持的語(yǔ)句1GEL函數(shù),包括函數(shù)的定義、參數(shù)、調(diào)用2Return語(yǔ)句3If-else語(yǔ)句4While語(yǔ)句5GEL注釋語(yǔ)句6預(yù)處理語(yǔ)句
GEL是C語(yǔ)言的一個(gè)子集第22頁(yè)/共41頁(yè)GEL函數(shù)的定義GEL函數(shù)定義如下,斜體字表示變量:
funcName([parameter1[,parameter2
…[,parametern]]]){statements}funcNameGEL函數(shù)名
parameters有效的GEL參數(shù)
statements有效的GEL語(yǔ)句注:GEL函數(shù)定義在文本文件中,其擴(kuò)展名是.gel。一個(gè)GEL文件可以包含多個(gè)GEL函數(shù)的定義,但是一個(gè)GEL函數(shù)定義不能嵌套在另一個(gè)GEL函數(shù)的定義中。第23頁(yè)/共41頁(yè)例4-1定義平方函數(shù)square(a){returna*a;}square(1.5)=2.25;square(3)=9。在GEL函數(shù)square中,并沒(méi)有指定返回值的類(lèi)型,也沒(méi)有說(shuō)明參數(shù)a的類(lèi)型,這是GEL語(yǔ)言和C語(yǔ)言的區(qū)別第24頁(yè)/共41頁(yè)例4-2定義初始化對(duì)話框函數(shù)dialogInit(filename“FiletobeLoaded”,CPUname“CPUName”,initValue“InitializationValue”){GEL_Load(filename,CPUname);a=initValue;}首先,dialog不是指返回值的類(lèi)型,這個(gè)函數(shù)里也沒(méi)有返回值。dialog是關(guān)鍵字,意思是對(duì)話框,也就是說(shuō)當(dāng)調(diào)用函數(shù)Init的時(shí)候,會(huì)彈出一個(gè)對(duì)話框,該對(duì)話框會(huì)有3個(gè)項(xiàng),分別是函數(shù)的3個(gè)參數(shù):filename、CPUName和initValue。每個(gè)參數(shù)后面緊跟的字符串是對(duì)參數(shù)的描述。第25頁(yè)/共41頁(yè)4.3.2GEL函數(shù)的參數(shù)GEL參數(shù)可以是以下任意一種:一個(gè)實(shí)際的/仿真的DSP目標(biāo)板符號(hào)值。一個(gè)數(shù)字常量,如果傳遞的是表達(dá)式或者常數(shù)值。一個(gè)字符串常量。第26頁(yè)/共41頁(yè)例4-3分析GEL函數(shù)參數(shù)Initialize(a,filename,b){targVar=b;a=0;GEL_Load(filename);returnb*b;}下面是對(duì)函數(shù)Initialize的正確調(diào)用:Initialize(targetSymbol,“C:\\CCStudio_v3.3\\MyProjects\\gpio\\Debug\\gpio.out”,28*4+2.52)。當(dāng)執(zhí)行函數(shù)Initialize時(shí),參數(shù)a被定義為DSP的標(biāo)示符targetSymbol,參數(shù)filename初始化為字符串常量“C:\\CCStudio_v3.3\\MyProjects\\gpio\\Debug\\gpio.out”,參數(shù)b通過(guò)計(jì)算成為常數(shù)114.52。這些值在函數(shù)中對(duì)應(yīng)參數(shù)的地方使用。第27頁(yè)/共41頁(yè)GEL函數(shù)的調(diào)用
通??梢栽诳梢暂斎隒表達(dá)式的任何地方調(diào)用一個(gè)GEL函數(shù);可以從任何能接受有效C表達(dá)式的對(duì)話框中調(diào)用一個(gè)GEL函數(shù);還可以在一個(gè)GEL函數(shù)中調(diào)用另一個(gè)GEL函數(shù)。
第28頁(yè)/共41頁(yè)4.3.3GEL語(yǔ)句返回語(yǔ)句If-else語(yǔ)句While語(yǔ)句注釋語(yǔ)句預(yù)處理語(yǔ)句第29頁(yè)/共41頁(yè)GEL返回語(yǔ)句GEL在一個(gè)函數(shù)里支持標(biāo)準(zhǔn)C的返回語(yǔ)句,其一般形式為:returnexpression;
一個(gè)返回語(yǔ)句并不是需要返回一個(gè)值,一個(gè)沒(méi)有表達(dá)式的返回語(yǔ)句將控制返回到調(diào)用處,但并不返回有用的值。這和當(dāng)函數(shù)執(zhí)行到終點(diǎn)時(shí)仍沒(méi)有遇到返回語(yǔ)句的結(jié)果是一樣的,與標(biāo)準(zhǔn)C語(yǔ)言不同的是,GEL函數(shù)的定義并不需要指定返回值的類(lèi)型,返回值的類(lèi)型在程序運(yùn)行時(shí)決定。第30頁(yè)/共41頁(yè)GELif-else語(yǔ)句GEL支持標(biāo)準(zhǔn)C的if-else語(yǔ)句。通用格式為:if(expression)statement1elsestatement2
執(zhí)行if-else語(yǔ)句時(shí),兩個(gè)語(yǔ)句中只有一個(gè)才會(huì)執(zhí)行。statement1和statement2可以是一個(gè)單語(yǔ)句,也可以是用括號(hào)括起來(lái)的多個(gè)語(yǔ)句。第31頁(yè)/共41頁(yè)GELwhile語(yǔ)句GEL的while語(yǔ)句類(lèi)似于標(biāo)準(zhǔn)C的while語(yǔ)句,但是GEL不支持標(biāo)準(zhǔn)C的continue和break語(yǔ)句。通用格式為:while(expression)
statement
執(zhí)行while語(yǔ)句時(shí),先計(jì)算表達(dá)式expression的值。如果expression的值為真,語(yǔ)句執(zhí)行,表達(dá)式被從新計(jì)算。這里的statement可以是單語(yǔ)句,也可以是括號(hào)里的多個(gè)語(yǔ)句。第32頁(yè)/共41頁(yè)GEL注釋GEL支持標(biāo)準(zhǔn)C語(yǔ)言的注釋。GEL的注釋?zhuān)抻米址?*和*/,可以跨越若干行。
第33頁(yè)/共41頁(yè)GEL預(yù)處理語(yǔ)句GEL支持標(biāo)準(zhǔn)C的#define預(yù)處理關(guān)鍵字,這也是唯一可用的預(yù)處理關(guān)鍵字。下面的語(yǔ)句,使預(yù)處理器用給定的字符序列取代標(biāo)識(shí)符,其中字符序列前后的空格都不要:
#defineidentifiertoken-sequence下面的語(yǔ)句(第一個(gè)標(biāo)識(shí)符和括號(hào)之間沒(méi)有空格)是一個(gè)宏定義,其參數(shù)是標(biāo)識(shí)符列表:
#defineidentifier(identifier-list)token-sequence第
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職酒店管理(前廳運(yùn)營(yíng)管理)試題及答案
- 2025年中職導(dǎo)游服務(wù)(應(yīng)急處理)試題及答案
- 2025年高職抗菌藥物合理應(yīng)用(用藥指導(dǎo)規(guī)范)試題及答案
- 2025年高職(護(hù)理)護(hù)理操作試題及答案
- 2026年物流配送(時(shí)效保障)試題及答案
- 2025年中職體育保健與康復(fù)(運(yùn)動(dòng)損傷防護(hù))試題及答案
- 上海市寶山區(qū)2026屆初三一模物理試題(含答案)
- 2025輕定制趨勢(shì)白皮書(shū)
- 上海市金山區(qū)2026屆初三一模英語(yǔ)試題(含答案)
- 2026河南新鄉(xiāng)市長(zhǎng)垣市懷德小學(xué)教師招聘?jìng)淇碱}庫(kù)含答案詳解
- 汽車(chē)充電站安全知識(shí)培訓(xùn)課件
- 世說(shuō)新語(yǔ)課件
- 全體教師大會(huì)上副校長(zhǎng)講話:點(diǎn)醒了全校200多名教師!毀掉教學(xué)質(zhì)量的不是學(xué)生是這7個(gè)環(huán)節(jié)
- 民航招飛pat測(cè)試題目及答案
- T-CDLDSA 09-2025 健身龍舞彩帶龍 龍舞華夏推廣套路技術(shù)規(guī)范
- DB35-T 2278-2025 醫(yī)療保障監(jiān)測(cè)統(tǒng)計(jì)指標(biāo)規(guī)范
- GB/T 46561-2025能源管理體系能源管理體系審核及認(rèn)證機(jī)構(gòu)要求
- GB/T 19566-2025旱地糖料甘蔗高產(chǎn)栽培技術(shù)規(guī)程
- 2025年浙江輔警協(xié)警招聘考試真題含答案詳解(新)
- 節(jié)能技術(shù)咨詢合同范本
- 去極端化條例解讀課件
評(píng)論
0/150
提交評(píng)論