版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
會計(jì)學(xué)1DSP如何構(gòu)建一個完整的工程解析目錄1、一個完整的工程有哪些文件構(gòu)成及其作用2、怎樣創(chuàng)建一個新的DSP工程3、通用擴(kuò)展語言GEL第1頁/共41頁4.1DSP開發(fā)環(huán)境、硬件平臺DSP開發(fā)通常需要軟件開發(fā)環(huán)境和硬件平臺。軟件開發(fā)環(huán)境:CCS(Code
Composer
Studio),是TI公司為方便開發(fā)人員而設(shè)計(jì)的軟件環(huán)境。硬件平臺:由仿真器和目標(biāo)板組成。仿真器的作用是將目標(biāo)板和PC機(jī)連起來,使得您可以在CCS里對目標(biāo)板上的DSP進(jìn)行編程,燒寫和調(diào)試等工作,而目標(biāo)板是指具有DSP芯片,上電后能保證DSP獨(dú)立運(yùn)行電路板,第2頁/共41頁一個完整的工程由哪些文件構(gòu)成打開CCS3.3軟件前的準(zhǔn)備工作1.要確定訪問的文件中不含中文字符,因?yàn)镃CS3.3是英文字符的軟件;2.將TMS320F2812例程文件夾中的Gpio文件夾復(fù)制到CCS3.3安裝路徑下MyProjects文件夾里第3頁/共41頁打開CCS軟件后,打開工程的方式有以下兩種:一種是點(diǎn)擊菜單欄的Project—>Open,另一種方法是左側(cè)Files窗口內(nèi),點(diǎn)擊“Projects”然后右鍵,點(diǎn)擊“Open
Project”。第4頁/共41頁打開gpio工程之后,gpio.pjt工程會顯示在左側(cè)Files窗口內(nèi)。點(diǎn)擊gpio.pjt左邊的加號,工程內(nèi)部的文件就展現(xiàn)在我們面前了,下面我們來分析一下構(gòu)成該工程的文件。
首先我們看到的是Include文件夾下面有很多后綴是.h的文件,這就是2812的頭文件了,頭文件的作用是定義了2812內(nèi)部寄存器的數(shù)據(jù)結(jié)構(gòu)。頭文件一般情況下不需要修改,如果你需要定義一些在整個工程內(nèi)都具有作用域的全局變量的時候,可以在頭文件中定義這些變量,具體的方法我們以后在例程或項(xiàng)目實(shí)踐中應(yīng)該會有介紹。第5頁/共41頁
然后是libraries下面擴(kuò)展名為.lib的庫文件,它是C語言系統(tǒng)的庫文件。第6頁/共41頁庫文件下面是source文件夾,里面的文件都是以.c為擴(kuò)展名的,顧名思義,就是源文件,也就是我們開發(fā)時編寫的軟件代碼都是保存在這些文件中的。第7頁/共41頁最后是以.CMD為擴(kuò)展名的文件,這個文件的作用是用來分配存儲空間的。由于DSP編譯器的編譯結(jié)果是未定位的,DSP也沒有操作系統(tǒng)來定位執(zhí)行代碼,DSP系統(tǒng)的配置需求也不盡相同,因此我們根據(jù)實(shí)際的需求,自己定義代碼的存儲位置。打個通俗的比喻,就是我們有一個倉庫,現(xiàn)在需要把貨物存放到倉庫里面去,為了便于日后取用貨物,我們將貨物分門別類,然后把它們存放到指定的位置去。把哪些貨物放到哪個位置的規(guī)則,就是我們的CMD文件的內(nèi)容。CMD文件又分成兩種。一種是分配RAM空間的,用來將程序load到RAM內(nèi)進(jìn)行調(diào)試,因?yàn)槲覀兇蟛糠謺r間都是在調(diào)試程序,所以多用這類CMD,gpio工程中的sram.cmd就是用于分配RAM空間的,另一種是分配FLASH空間的,當(dāng)程序調(diào)試完畢后,需要將其燒寫到FLASH內(nèi)部進(jìn)行固化,這個時侯我們就需要使用這類CMD文件了。第8頁/共41頁總結(jié)1、頭文件:以.h為后綴的文件,主要定義了芯片內(nèi)部寄存器結(jié)構(gòu)、中斷服務(wù)程序等內(nèi)容。2、庫文件:以.lib為后綴的文件,包含了寄存器的地址和對應(yīng)標(biāo)示符的定義,還包含標(biāo)準(zhǔn)C/C++運(yùn)行支持的庫函數(shù)。3、源文件:所編寫的代碼都寫在各個源文件中;包含了所有要實(shí)現(xiàn)功能的代碼,是工程的核心。4、CMD文件:分配RAM空間,用來將下載到RAM中的程序進(jìn)行調(diào)試,是因?yàn)镈SP編譯器編譯結(jié)果是未定位的,DSP也沒有相應(yīng)系統(tǒng)來執(zhí)行代碼,DSP系統(tǒng)的配置需求也不盡相同,因此需要定義代碼的存儲位置。第9頁/共41頁4.2怎樣創(chuàng)建一個新的DSP工程
1.打開CCS,點(diǎn)擊菜單欄里的Projects,點(diǎn)擊New,會跳出新工程設(shè)置的對話框,如下圖所示。第10頁/共41頁2、在Projects欄內(nèi)我們填寫工程的名字:hellodsp。檢查Location,如果您都是按照默認(rèn)路徑來的,那沒有問題,如果不是默認(rèn)路徑,您得手工指定一下文件路徑,確認(rèn)沒有問題后點(diǎn)擊Finish。我們發(fā)現(xiàn)在myprojects文件夾下多了hellodsp文件夾,hellodsp文件夾下生成了hellodsp.pjt文件,而且在CCS左側(cè)的Files欄內(nèi),出現(xiàn)了我們剛剛創(chuàng)建的hellodsp.pjt。第11頁/共41頁
3.根據(jù)前面一個完整工程的組成情況的分析,我們首先來準(zhǔn)備頭文件。由于頭文件多數(shù)情況下是不需改動的,也就是說大家用的頭文件都是一樣的,因?yàn)槭嵌x2812的內(nèi)部資源,所以可以將newproject文件夾內(nèi)的頭文件全部復(fù)制到hellodsp文件夾。4.將newproject文件夾內(nèi)的.lib文件和.cmd文件同樣復(fù)制到hellodsp文件夾。5.下面就剩下源文件了。我們先來分析一下newproject文件夾下各個源文件的內(nèi)容,以便于我們更好的理解和采用這種文件結(jié)構(gòu)。第12頁/共41頁F2812常用的源文件序號文件名主要內(nèi)容1DSP28_Adc.cAD初始化函數(shù)2DSP28_CpuTimers.cCPU定時器初始化函數(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對PIE中斷向量進(jìn)行初始化15DSP28_DefaultIsr.c包含了F2812所有外設(shè)中斷函數(shù)16DSP28_GlobalVariableDefs.c定義了F2812的全局變量和數(shù)據(jù)段程序第13頁/共41頁
通過上面的分析我們可以看到幾個文件非常重要,DSP28_DefaultIsr.C,DSP28_GlobalVariableDefs.C,DSP28_PieCtrl.C,DSP28_PieVect.C,DSP28_SysCtrl.C,把這些未編輯過的文件復(fù)制過來。其他的外設(shè)相關(guān)的文件,這個工程中涉及到哪個外設(shè),就把這個外設(shè)相關(guān)的源文件復(fù)制過來,一起加入工程。接下來就是往工程內(nèi)添加文件了。首先我們來添加庫文件。點(diǎn)擊“hellodsp.pjt”,右鍵,點(diǎn)擊“Add
Files
to
Project”,跳出了添加文件的對話框第14頁/共41頁
在篩選框欄內(nèi)選擇“Object
and
Library
Files”,就會看到RTS2800N.lib,點(diǎn)擊并打開,便將庫文件添加到工程中來了。第15頁/共41頁用同樣的方法,來添加sources文件夾下的源文件和CMD文件。只是添加源文件時,篩選框的條件是“C++
Source
File(*.cpp;*.cc;*.cxx)”添加CMD文件時,篩選框的條件應(yīng)當(dāng)選擇”Linker
Command
File(*.cmd;*.lcf)”。創(chuàng)建main函數(shù):點(diǎn)擊菜單欄中的’File’,”New”,”SourceFile”,在編輯區(qū)域內(nèi)出現(xiàn)了一個新的Untitled1文件第16頁/共41頁點(diǎn)擊“File”,“Save”,會出現(xiàn)保存文件的對話框。文件名填寫“hellodsp”,關(guān)鍵要注意的是保存類型,因?yàn)槲覀儸F(xiàn)在要建立的是源文件,所以選擇“C/C++SourceFlies(*.c*)”,點(diǎn)擊保存。第17頁/共41頁這時,我們看到原來的“Untitled1”變成了“hellodsp”了。我們在hellodsp文件內(nèi)輸入以下內(nèi)容:然后點(diǎn)擊保存,并關(guān)閉hellodsp.c文件。再用我們剛才添加文件的方法將hellodsp.c添加到工程中來。第18頁/共41頁點(diǎn)擊工具欄上的“RebuildAll”,對hellodsp.pjt進(jìn)行編譯:編譯結(jié)果如圖所示,出現(xiàn)了一個warning:根據(jù)warning的提示是用默認(rèn)的1024bytes來創(chuàng)建.stacksection,就是堆棧段。點(diǎn)擊菜單欄的”Project”,”buildoptions”,彈出編譯選項(xiàng)的對話框。選擇“Linker”標(biāo)簽,在StackSize(-stack)欄填寫“800”,點(diǎn)擊確定。第19頁/共41頁重新編譯:第20頁/共41頁4.3通用擴(kuò)展語言GEL
GEL是GeneralExtendedLanguage的縮寫,即通用擴(kuò)展語言,是一種類似于C的解釋性語言。用戶可以通過在文件中使用GEL語言來創(chuàng)建函數(shù),從而擴(kuò)展CCS的功能。通過GEL,可以訪問目標(biāo)板的存儲器,并為CCS的GEL菜單添加選項(xiàng)。第21頁/共41頁4.3.1GEL語法
GEL語法支持的語句類型序號GEL語法支持的語句1GEL函數(shù),包括函數(shù)的定義、參數(shù)、調(diào)用2Return語句3If-else語句4While語句5GEL注釋語句6預(yù)處理語句
GEL是C語言的一個子集第22頁/共41頁GEL函數(shù)的定義GEL函數(shù)定義如下,斜體字表示變量:
funcName([parameter1[,parameter2
…[,parametern]]]){statements}funcNameGEL函數(shù)名
parameters有效的GEL參數(shù)
statements有效的GEL語句注:GEL函數(shù)定義在文本文件中,其擴(kuò)展名是.gel。一個GEL文件可以包含多個GEL函數(shù)的定義,但是一個GEL函數(shù)定義不能嵌套在另一個GEL函數(shù)的定義中。第23頁/共41頁例4-1定義平方函數(shù)square(a){returna*a;}square(1.5)=2.25;square(3)=9。在GEL函數(shù)square中,并沒有指定返回值的類型,也沒有說明參數(shù)a的類型,這是GEL語言和C語言的區(qū)別第24頁/共41頁例4-2定義初始化對話框函數(shù)dialogInit(filename“FiletobeLoaded”,CPUname“CPUName”,initValue“InitializationValue”){GEL_Load(filename,CPUname);a=initValue;}首先,dialog不是指返回值的類型,這個函數(shù)里也沒有返回值。dialog是關(guān)鍵字,意思是對話框,也就是說當(dāng)調(diào)用函數(shù)Init的時候,會彈出一個對話框,該對話框會有3個項(xiàng),分別是函數(shù)的3個參數(shù):filename、CPUName和initValue。每個參數(shù)后面緊跟的字符串是對參數(shù)的描述。第25頁/共41頁4.3.2GEL函數(shù)的參數(shù)GEL參數(shù)可以是以下任意一種:一個實(shí)際的/仿真的DSP目標(biāo)板符號值。一個數(shù)字常量,如果傳遞的是表達(dá)式或者常數(shù)值。一個字符串常量。第26頁/共41頁例4-3分析GEL函數(shù)參數(shù)Initialize(a,filename,b){targVar=b;a=0;GEL_Load(filename);returnb*b;}下面是對函數(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ù)a被定義為DSP的標(biāo)示符targetSymbol,參數(shù)filename初始化為字符串常量“C:\\CCStudio_v3.3\\MyProjects\\gpio\\Debug\\gpio.out”,參數(shù)b通過計(jì)算成為常數(shù)114.52。這些值在函數(shù)中對應(yīng)參數(shù)的地方使用。第27頁/共41頁GEL函數(shù)的調(diào)用
通常可以在可以輸入C表達(dá)式的任何地方調(diào)用一個GEL函數(shù);可以從任何能接受有效C表達(dá)式的對話框中調(diào)用一個GEL函數(shù);還可以在一個GEL函數(shù)中調(diào)用另一個GEL函數(shù)。
第28頁/共41頁4.3.3GEL語句返回語句If-else語句While語句注釋語句預(yù)處理語句第29頁/共41頁GEL返回語句GEL在一個函數(shù)里支持標(biāo)準(zhǔn)C的返回語句,其一般形式為:returnexpression;
一個返回語句并不是需要返回一個值,一個沒有表達(dá)式的返回語句將控制返回到調(diào)用處,但并不返回有用的值。這和當(dāng)函數(shù)執(zhí)行到終點(diǎn)時仍沒有遇到返回語句的結(jié)果是一樣的,與標(biāo)準(zhǔn)C語言不同的是,GEL函數(shù)的定義并不需要指定返回值的類型,返回值的類型在程序運(yùn)行時決定。第30頁/共41頁GELif-else語句GEL支持標(biāo)準(zhǔn)C的if-else語句。通用格式為:if(expression)statement1elsestatement2
執(zhí)行if-else語句時,兩個語句中只有一個才會執(zhí)行。statement1和statement2可以是一個單語句,也可以是用括號括起來的多個語句。第31頁/共41頁GELwhile語句GEL的while語句類似于標(biāo)準(zhǔn)C的while語句,但是GEL不支持標(biāo)準(zhǔn)C的continue和break語句。通用格式為:while(expression)
statement
執(zhí)行while語句時,先計(jì)算表達(dá)式expression的值。如果expression的值為真,語句執(zhí)行,表達(dá)式被從新計(jì)算。這里的statement可以是單語句,也可以是括號里的多個語句。第32頁/共41頁GEL注釋GEL支持標(biāo)準(zhǔn)C語言的注釋。GEL的注釋,限用字符/*和*/,可以跨越若干行。
第33頁/共41頁GEL預(yù)處理語句GEL支持標(biāo)準(zhǔn)C的#define預(yù)處理關(guān)鍵字,這也是唯一可用的預(yù)處理關(guān)鍵字。下面的語句,使預(yù)處理器用給定的字符序列取代標(biāo)識符,其中字符序列前后的空格都不要:
#defineidentifiertoken-sequence下面的語句(第一個標(biāo)識符和括號之間沒有空格)是一個宏定義,其參數(shù)是標(biāo)識符列表:
#defineidentifier(identifier-list)token-sequence第
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 財(cái)務(wù)部年度預(yù)算執(zhí)行總結(jié)與下年度計(jì)劃
- 稅收法規(guī)工作總結(jié)
- 建材行業(yè)質(zhì)量管理培訓(xùn)反思
- 營銷策劃公司前臺業(yè)務(wù)總結(jié)
- 【八年級下冊歷史】單元測試 第一、二單元綜合測試卷
- 金融行業(yè)客服工作總結(jié)
- 2024年秋葉的舞會大班教案
- 《性心理的調(diào)節(jié)方法》課件
- 2024年觀察綠豆日記300字
- 農(nóng)民甲乙承包合同(2篇)
- 山東省濟(jì)南市2022年中考英語情景運(yùn)用拔高練習(xí)(Word版含答案)
- 中學(xué)校本課程教材《生活中的化學(xué)》
- 污水處理站運(yùn)行維護(hù)管理方案
- 農(nóng)村公路養(yǎng)護(hù)工程施工組織設(shè)計(jì)
- 個人如何開辦婚介公司,婚介公司經(jīng)營和管理
- 公司物流倉儲規(guī)劃方案及建議書
- 天津市歷年社會保險繳費(fèi)基數(shù)、比例
- 2024國家開放大學(xué)電大??啤秾W(xué)前兒童發(fā)展心理學(xué)》期末試題及答案
- 汽車座椅面套縫紉工時定額的研究
- 立體幾何??级ɡ砜偨Y(jié)(八大定理)
- 噴嘴壓力計(jì)算表及選型
評論
0/150
提交評論