第四章 驗證平台設計與控制器驗證
4.2 驗證平台程式開發
DSP在程式的發展上,可使用的程式語言可分為組合語言及高階C語言。一般以組合 語言來撰寫DSP 程式,執行的速度與效率較高,但對剛入門想學習的人常造成困擾。現 在許多廠商都有推出C 語言的編譯器,可以讓使用者以C 語言去設計DSP 程式。因此,
本論文以C 語言來達成主程式設計,並以簡單的組合語言設計做為輔助,所使用的程式 軟體為Code Composer Studio(CCS),利用CCS 的編譯器、組譯器及連結器來完成程式 的設計、除錯及下載的工作。[19][20][21]
4.2.1 Code Composer Studio簡介
Code Composer Studio(CCS),為一個具有強大功能的整合發展軟體,除了可以整合、
編譯使用者的專案程式(包含C語言及組合語言)外,更可以利用DSP/BIOS的設定來加速整 個專案程式的發展。CCS功能綜整如下:
1. 整合發展環境(Code Composer)包括了編輯器、除錯器、檔案管理、剖面圖 (profile)、探查點及其他。
2. C編譯器、組譯最佳化及鏈結器(程式產生工具)。
3. 指令集模擬器。
4. 即時軟體(DSP/BIOSTM)。
5. 在Host端與目標端的資料即時交換(RTDXTM)。
6. 即時分析及資料視覺化。
下圖顯示在Code Composer Studio 的程式產生和除錯環境:
24
圖 4-2:CCS 整合環境示意圖
吾人可在PC端使用DSP/BIOS API來寫程式(以 C, C++ 或者是組合語言)。藉由結構 化工具(Configuration Tool)在程式中定義物件,然後編譯或組譯而後鏈結程式。DSP/BIOS 分析工具可以從Code Composer Studio偵測目標裝置,如CPU負載、時間、紀錄、執行緒 和其它。(執行緒可以使用來參考執行,諸如:硬體中斷、軟體中斷、工作(task)、idle函 式或者是週期函式)。
4.2.2 DSP/BIOS簡介
DSP/BIOS為一可調整式的即時核心,可藉由將本核心內嵌於TI系列之DSP晶片中,
提供該晶片即時排程、同步控制、終端通訊以及建立即時監控介面等相關功能。
[22]DSP/BIOS也支援多執行緒的岔斷(preemptive)能力,DSP晶片相關參數的視覺化的物 件參數設定等工具。其特性簡述如下:
1、所有DSP/BIOS 物件可藉由結構化工具(Configuration Tool)來建立且整合於程式 執行影像檔中,有效降低程式的大小和最佳化內部資料結構。
2、模組化的API也可融入程式執行檔中。
3、將程式重新組譯成組合語言以實現最佳化的函式庫。
25
4、DSP/BIOS 分析工具在背景工作下執行,並不會影響主要程式的排程。
由上述的特性可知,DSP/BIOS為一整合DSP晶片硬體特性之即時控制核心,不僅提 供了同步控制、終端通訊以及建立即時監控介面等功能,更有多執行緒即時排程及岔斷 的能力,可視其為DSP專屬之即時作業系統(Real-Time O.S.)。DSP/BIOS之結構化工具調 整介面如下圖4-3所示。
26
圖 4-3:DSP/BIOS 之結構化工具調整介面 4.2.3 測試系統架構
本論文測試對照系統採用SMJ320C6701 DSP為其核心,配合Code Composer Studio軟 體開發平台,程式內容以C語言撰寫,並使用DSP/BIOS之多執行緒架構設計出一組飛行 控制平台。其中的控制律則採用本論文之穩定姿態保持比例加積分控制運算,最後以 J_TAG介面於Code Composer Studio平台上將參數各輸入及輸出值顯示出來,平台系統軟 體流程架構如圖4-3,4-4。
開機
程式下載
DSP/BIOS
中斷設定
External interface External interface
Power On
Clock
SENSOR IO
記憶體檢查
1
Multi-thread process
WatchDog BOOT
main
2 3
圖 4-4:軟體流程架構圖
27
1 1
感應器處理
姿態控制
命令輸出
End
2
資料鍊處理
3
酬載處理
End End
感應器值 輸入
姿態控制值 讀出
圖 4-5:軟體流程架構圖(續)
一組完整的飛行器控制要有幾個必要模組,感測器、控制器、命令輸出以及資料鍊 處理,而大多數的飛行器亦會外加些許的酬載物(Payload)。因此採用多工方式來實現飛 控系統是不可避免的,吾人採用三組執行緒多工方式來實現整個飛行器控制架構,配合 DSP內建之TIMER提供觸發時脈,各執行緒間以分享記憶體(Share memory)來作為資料傳 輸的方式。然而由於DSP/BIOS並無提供臨界區間(Critical Section)的同步化控管,因此採 用mailbox同步控管機制,藉由mailbox的同步化來保持各執行緒的即時執行。配合賦予各 執行緒高低不同的優先權,以避免在共享記憶體時發生資料危障的情形。
28