“今天開始,我們就要真正開始2812的學(xué)習(xí)了。我們今天的內(nèi)容比較簡單,主要是讓沒有基礎(chǔ)的朋友來了解一下DSP開發(fā)需要哪些工具,一個完整的2812的工程(Project)是由哪些文件組成的,各個文件的主要作用是什么,以及如何在CCS里創(chuàng)建一個新的工程。
1.DSP開發(fā)所需要的工具
咱要進行DSP的學(xué)習(xí)和開發(fā)了,可能從沒接觸過DSP的朋友就要問了,我們做DSP開發(fā)首先要哪些開發(fā)工具呢?DSP開發(fā)通常需要軟件開發(fā)環(huán)境和硬件平臺。軟件開發(fā)環(huán)境為CCS(Code Composer Studio),是TI公司為方便開發(fā)人員而設(shè)計的軟件環(huán)境。硬件平臺由仿真器和目標板組成。仿真器的作用是將目標板和PC機連起來,使得您可以在CCS里對目標板上的DSP進行編程,燒寫和調(diào)試等工作,而目標板是指具有DSP芯片,上電后能保證DSP獨立運行電路板,通常為各個公司設(shè)計的開發(fā)板或者您自己設(shè)計的電路板。
2..安裝并配置CCS
首先,讓我們來了解一下CCS的版本。目前,CCS常用的版本有CCS2.2,CCS3.1以及CCS3.3
CCS2.2是一個分立版本,也就是每一個系列的DSP都有一個CCS2.2的開發(fā)軟件,分CCS2.2 for C2000,CCS2.2 for C5000,CCS2.2 for C6000。而CCS3.1和CCS3.3是一個集成版本,支持全系列的DSP開發(fā)。我們推薦使用CCS2.2,因為這是目前最穩(wěn)定的版本。但是使用最多的是CCS3.3,因此我們這次學(xué)習(xí)也以CCS3.3為軟件開發(fā)環(huán)境,和大家一起探討2812的軟件開發(fā)。如果您還沒有安裝CCS,請訪問下面的地址進行下載。如果您購買了我們HELLODSP的相關(guān)產(chǎn)品,我們會為您免費提供含有CCS開發(fā)環(huán)境的資料光盤。
CCS下載地址:http://www.hellodsp.com/bbs/view?
? ?CCS的安裝和普通應(yīng)用軟件的安裝沒有多大區(qū)別,在這里就不贅述了。建議大家默認安裝路徑就行了,如果需要修改安裝路徑,請確保將CCS安裝到不含中文字符的路徑。
? ?CCS安裝完成之后,桌面上會出現(xiàn)兩個圖標,一個是CCS,另外一個是CCS Setup。在使用CCS之前,需要對CCS進行一些配置操作,以保證CCS支持我們所要開發(fā)的DSP,在這里就是2812了。
雙擊,打開CCS Setup。如果您具有硬件開發(fā)平臺,即具有仿真器,那么請您根據(jù)仿真器的生產(chǎn)廠家提供的配置說明進行相應(yīng)的操作。如果您不具有硬件開發(fā)的條件,目前只能軟件仿真,那么請您通過中間的篩選框,找到“F2812 Device Simulator”,將其拖入左邊的“System Configuration”欄,然后點擊“Save and Quit”退出CCS Setup的設(shè)置,可以進入CCS啦。
3.一個完整的工程由哪些文件構(gòu)成
請下載附件中的例程gpio,我們將以這個程序為例為您講解一個完整的工程是由哪些文件構(gòu)成的,以即這些文件大致的作用。
下載完程序后,請解壓縮,然后將其拷貝到CCS安裝路徑下面的myprojects文件夾,如果您剛才是默認安裝的,那就是C:\CCStudio_v3.3\myprojects。可能又會有朋友要問了,我只能放到myprojects文件夾嗎?當(dāng)然不是的,您可以將工程文件夾放在您喜歡的位置,但是和安裝路徑一樣,請確保訪問到這個文件夾的路徑里不要出現(xiàn)中文字符。
OK,將gpio文件夾放好了嗎?放好之后,我們打開CCS,添加工程。添加工程的方法有兩種,一種是點擊菜單欄的Project—》Open,另一種方法是左側(cè)Files窗口內(nèi),點擊“Projects”然后右鍵,點擊“Open Project”。
打開gpio工程之后,gpio.pjt工程會顯示在左側(cè)Files窗口內(nèi)。
點擊gpio.pjt左邊的加號,工程內(nèi)部的文件就展現(xiàn)在我們面前了,下面我們來分析一下構(gòu)成該工程的文件。
首先我們看到的是Include文件夾下面有很多后綴是.h的文件,這就是2812的頭文件了,頭文件的作用是定義了2812內(nèi)部寄存器的數(shù)據(jù)結(jié)構(gòu)。頭文件一般情況下不需要修改,如果你需要定義一些在整個工程內(nèi)都具有作用域的全局變量的時候,可以在頭文件中定義這些變量,具體的方法我們以后在例程或項目實踐中應(yīng)該會有介紹。
?
?
然后是libraries下面擴展名為.lib的庫文件,它是C語言系統(tǒng)的庫文件。
庫文件下面是source文件夾,里面的文件都是以.c為擴展名的,顧名思義,就是源文件,也就是我們開發(fā)時編寫的軟件代碼都是保存在這些文件中的。
?
?
?最后是以.CMD為擴展名的文件,這個文件的作用是用來分配存儲空間的。由于DSP編譯器的編譯結(jié)果是未定位的,DSP也沒有操作系統(tǒng)來定位執(zhí)行代碼,DSP系統(tǒng)的配置需求也不盡相同,因此我們根據(jù)實際的需求,自己定義代碼的存儲位置。打個通俗的比喻,就是我們有一個倉庫,現(xiàn)在需要把貨物存放到倉庫里面去,為了便于日后取用貨物,我們將貨物分門別類,然后把它們存放到指定的位置去。把哪些貨物放到哪個位置的規(guī)則,就是我們的CMD文件的內(nèi)容。
CMD文件又分成兩種。一種是分配RAM空間的,用來將程序load到RAM內(nèi)進行調(diào)試,因為我們大部分時間都是在調(diào)試程序,所以多用這類CMD,gpio工程中的sram.cmd就是用于分配RAM空間的,另一種是分配FLASH空間的,當(dāng)程序調(diào)試完畢后,需要將其燒寫到FLASH內(nèi)部進行固化,這個時侯我們就需要使用這類CMD文件了。
從上面的分析我們可以看出,一個完整的工程需要由庫文件(.lib),頭文件(.h),源文件(.c)和CMD文件組成,缺一不可。
4.如何創(chuàng)建新的工程
下面,跟著我一起來建立個簡單的工程吧,主要通過這些步驟來了解一下如何創(chuàng)建新工程,方法有多種多樣,我介紹自己常用的,需要用到的文件請下載附件中的newprojects文件夾,此文件夾內(nèi)的文件推薦為建立新工程的素材,請妥善保存。
1.打開CCS,點擊菜單欄里的Projects,點擊New,會跳出新工程設(shè)置的對話框,如下圖所示。
?
?
在Projects欄內(nèi)我們填寫工程的名字:hellodsp。檢查Location,如果您都是按照默認路徑來的,那沒有問題,如果不是默認路徑,您得手工指定一下文件路徑,確認沒有問題后點擊Finish。我們發(fā)現(xiàn)在myprojects文件夾下多了hellodsp文件夾,hellodsp文件夾下生成了hellodsp.pjt文件,而且在CCS左側(cè)的Files欄內(nèi),出現(xiàn)了我們剛剛創(chuàng)建的hellodsp.pjt。
2. 根據(jù)前面一個完整工程的組成情況的分析,我們首先來準備頭文件。由于頭文件多數(shù)情況下是
不需改動的,也就是說大家用的頭文件都是一樣的,因為是定義2812的內(nèi)部資源,所以可以將newproject文件夾內(nèi)的頭文件全部復(fù)制到hellodsp文件夾。
3. 將newproject文件夾內(nèi)的.lib文件和.cmd文件同樣復(fù)制到hellodsp文件夾。
4. 下面就剩下源文件了。我比較喜歡例程中的文件結(jié)構(gòu),所以建議還沒有形成編程風(fēng)格的朋友也采用這種文件結(jié)構(gòu)。我們先來分析一下newproject文件夾下各個源文件的內(nèi)容,以便于我們更好的理解和采用這種文件結(jié)構(gòu)。
DSP28_ADC.C ——外設(shè)AD的初始化函數(shù),與外設(shè)AD相關(guān)
DSP28_CpuTimers.C——CPU定時器的初始化和配置函數(shù),與CPU的定時器相關(guān),
DSP28_DefaultIsr.C——這個文件很重要,包含了2812所有的中斷函數(shù),寫中斷時,只要將程序?qū)懺趯?yīng)的函數(shù)內(nèi)就可以,大大保證了中斷的成功率。
DSP28_ECan.C——外設(shè)CAN的初始化函數(shù),與外設(shè)CAN相關(guān)。
DSP28_Ev.C——外設(shè)EV的初始化函數(shù),與外設(shè)EV相關(guān)。
DSP28_GlobalVariableDefs.C——全局變量的定義,這個文件也很重要,定義了2812的寄存器,中斷向量表等內(nèi)容。
DSP28_Gpio.C——GPIO的初始化函數(shù),只和GPIO相關(guān)。
DSP28_InitPeripherals.C——所有外設(shè)的初始化函數(shù),函數(shù)的內(nèi)容是調(diào)用了2812各個外設(shè)的初始化函數(shù)。 DSP28_Mcbsp.C——Mcbsp的初始化函數(shù),只和Mcbsp相關(guān)。
DSP28_PieCtrl.C——PIE初始化函數(shù),和中斷相關(guān),很重要。
DSP28_PieVect.C——PIE中斷向量表定義以及初始化,很重要。
DSP28_Sci.C——外設(shè)SCI的初始化函數(shù),只和外設(shè)SCI相關(guān)。
DSP28_Spi.C——外設(shè)SPI的初始化函數(shù),只和外設(shè)SPI相關(guān)。
DSP28_SysCtrl.C——系統(tǒng)初始化,主要對開門狗,時鐘等模塊進行初始化,以保證2812正常工作,非常重要。
DSP28_Xintf.C——外部接口的初始化函數(shù)。
DSP28_XIntrupt.C——外部中斷的初始化函數(shù)。
Example_28xGpio.C——main函數(shù)所在的文件,但是各個工程的Main函數(shù)一般都是不一樣的。!
通過上面的分析我們可以看到幾個文件非常重要,DSP28_DefaultIsr.C,DSP28_GlobalVariableDefs.C,DSP28_PieCtrl.C,DSP28_PieVect.C,DSP28_SysCtrl.C,因此我建議大家每次新建工程的時候,就把這些未編輯過的文件復(fù)制過來。其他的外設(shè)相關(guān)的文件,您這個工程中涉及到哪個外設(shè),您就把這個外設(shè)相關(guān)的源文件復(fù)制過來,一起加入工程。由于Main函數(shù)所在的文件內(nèi)容各個工程都不一樣,所以建議大家自己創(chuàng)建,順便來學(xué)習(xí)一下如何在CCS里創(chuàng)建一個.c的源文件。
此時我們的新工程hellodsp.pjt還是空的,里面啥都沒有,接下來就是往工程內(nèi)添加文件了。首先我們來添加庫文件。點擊“hellodsp.pjt”,右鍵,點擊“Add Files to Project”,跳出了添加文件的對話框。
?
?
在篩選框欄內(nèi)選擇“Object and Library Files”,就會看到RTS2800N.lib,點擊并打開,便將庫文件添加到工程中來了。
接下來,用同樣的方法,來添加sources文件夾下的源文件和CMD文件。只是添加源文件時,篩選框的條件是“C++ Source File(*.cpp;*.cc;*.cxx)”添加CMD文件時,篩選框的條件應(yīng)當(dāng)選擇”Linker Command File(*.cmd;*.lcf)”。
文件添加完成了,是否hellodsp這個工程就建好了呢?可能您想起來了,我們還沒有添加頭文件,也沒有主函數(shù)呢。對了,我們還缺少主函數(shù),頭文件這里先不管,到最后看看是怎么回事。
我們點擊菜單欄中的’File’,”New”,”Source File”,在編輯區(qū)域內(nèi)出現(xiàn)了一個新的Untitled1文件。
然后,點擊“File”,“Save”,會出現(xiàn)保存文件的對話框。文件名填寫“hellodsp”,關(guān)鍵要注意的是保存類型,因為我們現(xiàn)在要建立的是源文件,所以選擇“C/C++ Source Flies(*.c*)”,點擊保存。
這時,我們看到原來的“Untitled1”變成了“hellodsp”了。我們在hellodsp文件內(nèi)輸入以下內(nèi)容:
1.?#include "DSP28_Device.h"
2.?
3.?Void main(void)
4. {
5.
6. }
然后點擊保存,并關(guān)閉hellodsp.c文件。
然后用我們剛才添加文件的方法將hellodsp.c添加到工程中來。
接下來,我們就要編譯啦,是不是有些激動?終于把一個新的工程搭建完成啦。點擊工具欄上的“Rebuild All”,開始編譯咯。
?
可惜的是,我編譯完成時,提示了一個”warning”,內(nèi)容如下:
1. [hellodsp.c] “C:\CCStudio_v3.3\C2000\cgtools\bin\cl2000” -g -pdsw225 -fr“C:/CCStudio_v3.3/MyProjects/hellodsp/Debug” -d“_DEBUG” -d“LARGE_MODEL” -ml -v28 -@“Debug.lkf” “hellodsp.c”
2.
3. [Linking.。.] “C:\CCStudio_v3.3\C2000\cgtools\bin\cl2000” -@“Debug.lkf”
4. 《Linking》
5. 》》 warning: creating .stack section with default size of 1024 bytes.
?
6. Use
7. -stack option to change the default size.
8.
9. Build Complete,
10. 0 Errors, 1 Warnings, 0 Remarks.
很糟糕啊,呵呵,不過,靜下心來先大概分析一下提示warning的原因,提示是用默認的1024bytes來創(chuàng)建.stack section,就是堆棧段。我在站上搜了一下,發(fā)現(xiàn)有朋友也遇到過這樣的問題。怎么解決呢?點擊菜單欄的”Project”,”build options”,彈出編譯選項的對話框。選擇“Linker”標簽,在Stack Size(-stack)欄填寫“800”,點擊確定。
重新編譯,哇,通過了。“0 errors ,0 warnings ,0 remarkings”!
不過我想為什么剛才要將stack section段改成800呢,改成其他的可以嗎?我回頭又將剛才的800改成了1000,編譯也完全正確。所以我覺得,可能改成小于1024的值,只要讓它不要是默認的1024就不會有warning了。雖然,有時候Waring其實并不會影響程序,但是總會覺得不安,所以還是想辦法將其解決吧。
怎么樣,心動了嗎?趕緊下載附件開始自己搭建新的工程吧。
通過本課時的學(xué)習(xí),您應(yīng)該弄清楚了一個完整的2812工程由哪些文件構(gòu)成了,也應(yīng)該會搭建屬于自己的工程了,但是有些問題我們還沒有闡述,留給大家討論和思考:
1. 什么是GEL文件?GEL文件的作用是什么呢?
2. Lib文件內(nèi)部究竟是什么內(nèi)容,我們自己能編輯LIB文件嗎?
?
?
?
?
評論