關於DSP的CCS6.0平臺下的工程搭建(完全可移植)
本工程以CCS6.0下新建TMS320F28335工程為例,其他系列處理器工程搭建類似,參考本例即可。
所建工程能夠實現完全可移植,即任意拷貝到其他位置或電腦都能直接編譯(需匯入工程)。之後就可以延續使用此工程,只需更改Project工程名,按自己的需要新增部分檔案或庫。(具體參考下面的詳細說明)
1. 首先點選project->New CCS Project
2. 選擇器件和建立工程名(路徑為預設工作空間,可根據自己的實際情況更改)
點選finish,得到工程列表如下:
工程資料夾下的檔案如下:
3. 接下來,在工程資料夾下建立幾個資料夾(給各檔案分類儲存,便於管理)
Cmd資料夾:用來儲存所必須的cmd的檔案,cmd檔案是編譯完成之後連結各個目標檔案時,用來指
示各個資料、符號等是如何劃分到各個段,以及每個段所使用的儲存空間的。
FWlib資料夾: 韌體庫資料夾,再在其中建立兩個子資料夾:Include資料夾和Source資料夾
Include資料夾: 用於存放TI官方的寫好的標頭檔案
Source資料夾: 用於存放TI官方寫好的原始檔
Libraries資料夾:用於存放處理器所用到的庫檔案
USER 資料夾: 用於存放使用者自己寫的標頭檔案,原始檔以及main.c檔案
完成後如下:
4. 新增檔案到工程:
接下來,我們需要拷貝以下檔案或資料夾備用:(為了以後方便使用,我們把它都放在自己新建的一個資料夾“TI官方庫檔案”中備用)
注:首先確保自己的電腦上安裝了ControlSUTE軟體或C2000Ware(這兩個軟體TI官網都可免費下載,其中C2000Ware較新,更新到2017,我們一下工程的搭建所需的檔案都來自C2000Ware軟體中所帶的庫)
首先我們按照以下路徑標註路徑(具體根據自己軟體的安裝路徑,標註路徑是相同的),找到下面兩個資料夾拷貝到“TI官方庫檔案”資料夾中備用:
然後按下面路徑,拷貝下面兩個檔案到“TI官方庫檔案/lib資料夾下”
其中:
rts2800_ml.lib庫檔案:C/C++大記憶體模式執行支援庫,中有大量浮點運算處理的函式而rts2800.lib沒有,rts2800_ml.lib和rts2800.lib對應,rts2800_ml.lib用的是大儲存模式,在需要燒寫FLASH時必須用這個庫.
rts2800_fpu32.lib庫檔案:用於FPU目標的C / C ++執行時物件庫,(F28335中支援FPU浮點運算)
如果程式中有三角函式或開根號等運算,推薦用fastRTS庫或者IQmath庫來計算,所以我們把FPUfastRTS資料夾和IQmath資料夾也拷貝過來備用。(注:此工程暫時用不到,故沒有新增進工程,如以後需要,從“TI官方庫檔案”資料夾中新增進工程即可,新增方式和和上面兩個庫rts2800_ml.lib和rts2800_fpu32.lib一樣,下面將會介紹)
接下來新增檔案到工程,首先我們把“TI官方庫檔案/(common和headers)/include”資料夾下所有檔案都拷貝到我們所搭建工程的“Fwlib/Include”資料夾下,然後把庫檔案rts2800_ml.lib和rts2800_fpu32.lib拷貝到Libraries資料夾下。最後再把搭建工程下的28335_RAM_lnk.cmd檔案和“TI官方庫檔案/(common和headers)/cmd”資料夾中的F28335.cmd和DSP2833x_Headers_nonBIOS.cmd檔案拷貝到工程Cmd資料夾下。完成之後CCS6.0會自動將新新增的檔案加到專案瀏覽器中,效果如下圖:
檔案功能說明:
cmd檔案的選擇則根據執行模式選擇:
線上模擬模式:使用28335_RAM_lnk.cmd檔案
Flsah燒寫模式:使用F28335.cmd檔案
DSP2833x_Headers_nonBIOS.cmd:無作業系統時使用
DSP2833x_Headers_BIOS.cmd :有作業系統時使用
到此,基本檔案的新增就完成了。
5. 完成工程檔案的新增,先不要編譯。此時編譯的話會出現很多錯誤,因為我們工程下的Include資料夾下的標頭檔案,以及Libraries資料夾下庫檔案還需要新增索引路徑。
首先右鍵點選專案瀏覽器中的專案名,開啟Properties(屬性)
上述第(4)步Workspace選項是相對路徑,File sysem..是絕對路徑,如果選擇File sysem..來確定路徑,當工程移植到非此時預設的workplace工作空間,就又會提示錯誤,故此最好選擇Workspace選項。然後選中Include資料夾,點選確定,效果如下:
然後可以看到工程瀏覽器中工程Includes下多出了剛才新增的路徑:
接下來我們新增庫檔案的路徑,同樣右鍵點選專案瀏覽器中的專案名,開啟Properties(屬性)
第(3)步新增我們工程“Libraries”資料夾下的庫檔案,第(4)步把“Libraries”資料夾路徑也新增進來,同樣選擇Workspace相對路徑。
6. 配置模擬器:
右鍵點選工程名,選擇New—>TargetConfiguration File,File name取名任意,這裡取為F28335.ccxml,點選Finish。
然後我們選擇自己配套所使用的模擬器,這裡使用的是TIDSP-XDS100V2型號模擬器,
板子及裝置選擇:TMS320F28335,完成後點選Save儲存。
7. 為了是工程層次更清晰以及便於管理,我們對一些檔案的位置進行調整:
以程式模組化的思想,我們把使用者自己寫的原始檔,標頭檔案以及main.c檔案放在我們事先建立的“USER”資料夾裡,首先是main.c檔案,直接在工程瀏覽器下,拖動main.c檔案到“USER”資料夾,然後右鍵點選工程下的“USER”資料夾新建LED.c和LED.h檔案到“USER”資料夾中。
接下來,我們把模擬資料夾直接拖動到“TargeConfigs”資料夾下
到此,我們的工程搭建就基本完成了。
8. 完成最後調整與配置:
現在讓我們編譯一下工程,在工程瀏覽器下右鍵點選工程名,選中Build Project,編譯工程
(說明:工程第一次編譯時,可以用Build Project,等同於工具欄上的“小錘子圖示”,但只能在工程進行了實際更改的情況下才能編譯,也就是隻編譯更改的部分檔案,否則不會編譯成功。Clean Project主要作用就是把編譯好的Output等檔案刪除,啟用eclipse的自動編譯。Rebuild Project作用,重新編譯整個工程)
工程編譯完成後,“Console”以及“Problems”視窗提示很多錯誤
在上圖中看到幾乎提示的都是重定義錯誤,找到重定義檔案,分別為:
DSP2833x_SWPrioritizedPieVect.c :軟體中斷優先順序設定
DSP2833x_SWPrioritizedDefaultIsr.c :軟體中斷優先順序預設值(即設定失效)
這些我們暫時也用不到,刪除這兩個檔案即可。
還有F28335.cmd檔案中的提示:記憶體已經被指定。
我們在前面也已經提到28335_RAM_lnk.cmd檔案用於線上模擬,F28335.cmd檔案用於Flsah燒寫,兩個檔案功能不同,同時只能存在一個,但我們還是放在Cmd資料夾下,因為程式進行燒錄固化時必須要用,但留著又提示錯誤,怎麼辦呢?此時我們可以暫時在編譯時忽略此檔案,在工程瀏覽器Cmd資料夾下選中F28335.cmd檔案右鍵點選,選擇“Exclude for Build”(即忽略編譯此檔案)操作
然後重新進行編譯,0錯誤,0警告,工程搭建完成。
9. 最後說明:
搭建可移植工程的目的是什麼,一是增強我們對工程框架以及各個檔案功能的理解,二就是方便以後我們使用——不用以後每次都要重新建立工程。著實節約開發時間。在CSS3.3中我們把工程拷貝到“MyProjects”資料夾下改個資料夾名就行了,可是CCS6.0中工程與檔案都與路徑有關,而且CCS6.0識別的不是工程資料夾的名字,而是具體的工程檔案.Project,而這個檔名是不可以直接重新命名的。這下我們怎麼辦呢?其實,CCS6.0工程下,移植建立新工程更加方便,不止資料夾的名字可以更改回來,連工程名也可以更改。想要實現你的要求,你可以在CCS工程瀏覽器下選擇你的工程,右鍵—>copy,然後再工程瀏覽器空白處點選—>Paste(貼上)在彈出的Copy Project對話方塊中填寫你的新工程名和儲存路徑就可以了。
而如果你要移植到別的電腦或工作空間,就必須要匯入工程了,然後又可以按上一個方法方便的建立新的工程了。點選工具欄—>Project—>Import CCS Project..,選擇好要匯入的工程,點選確定即可。