二、 OMAP 處理器硬體及軟體開發環境
2.3 OMAP 程式開發環境
在前面將 OMAP 微處理器硬體和環境選擇簡單的說明之後,接下來要進入軟體應 用的開發環境部分。因為 OMAP 是由 ARM 和 DSP 兩種架構所組成的,如果只有一種 程式發展平台是不夠的,必需要兩種發展平台,對於這一點,本論文的規劃是:
(1) ARM code 使用 Linux 跨平台程式編譯 arm-linux-gcc(Cross Compiler)。
(2) DSP code 使用 TI 的 CCS(TI proprietary Integrated Development Environment)來發展。
在本節將會針對 ARM 和 DSP 的程式開發環境做個說明。
2.3.1 程式開發環境於 ARM 架構
在一般 PC 的 Linux 的環境下開發程式,最常使用到的編譯器,莫過於 gcc(GNU Compiler Collection) , 然 而 嵌 入 式 系 統 開 發 也 需 要 用 到 編 譯 器 (Compiler) 、 連 結 器 (Linker)、組譯器(Assembler),整合開發環境。以 ARM 而言,不同於 x86 架構,在 x86 環境下的產生的執行檔,並不能用於 ARM 架構的環境中,若想要在 x86 環境下開發 ARM 程式需要建立一個跨平台開發的工具(cross-platform development tool,或稱為 cross development tool)。對於 ARM 程式的開發,採用 GNU 的工具鏈(toolchain),對 ARM 平台的 cross-compiler(交叉編譯)—arm-linux-gcc 來進行程式的編譯。arm-linux-gcc 將程 式碼針對 ARM 的架構進行編譯,產生出來的執行檔便可以於 ARM 的架構上執行。
2.3.2 程式開發環境於 DSP 架構
CCS (Code Composer Studio)是德州儀器所提供用開發 DSP 程式的軟體,包含了跨 平台的開發工具,CCS 提供一個完善的整合發展環境(IDE,Integrated Development Environment),對於多種處理器、多使用專案,並且是第一個提供 DSP(TMS320C2000、
TMS320C5000、 TMS320C6000) 與 OMAP 應用程式開發的環境。CCS 包含了程式編 譯器、模擬器以及程式除錯器,藉由這些工具可以很輕易地開發 OMAP 的應用程式,
尤其在撰寫 DSP 的應用元件時,透過 CCS 可以很容易在 DSP/BIOS 上整合支援影像及 音訊資料處理的套件。
CCS 以一致的環境來整合所有 host 與 target 工具,包括 TI 的 DSP/BIOS kernel、
code-generation tools、fast simulators、debugger、與 Real-Time Data Exchange (RTDX) 技 術,簡化應用程式的開發。
2.3.3 CCS 程式開發
在使用 CCS 做為 DSP 程式開發之前,先了解程式開發流程,將有助於使用 CCS 的 元件。在一個程式設計前,對於要設計的程式先有個概念,再開始程式碼的編寫,在過 程中遇到錯誤時需要除錯時,CCS 具有相當大的功能,可以對程式編碼做除錯,以及即 時的分析,程式執行過程,都可以追蹤。CCS 的程式發展流程如圖 2-3:
圖 2-3 CCS 程式發展設計流程
資料來源:Code Composer Studio Getting Started Guide Rev. C[6]
在使用 CCS 開發程式時,要先根據開發的系統 ARM 和 DSP 做好系統的配置,如 此才能跨平台開發程式,而且 CCS 具有在不同硬體或模擬目標(target)上開發的環境。
DSP 程式碼的編寫前,需要先設定 CCS 編程的環境,包括環境記憶體的配置等。CCS 的 Code Generation Tool 包含能將程式碼做最佳化的 C/C++編譯器(Compiler)、組譯器 (Assembler)、連結器(Linker),和功能安排,最後產生一個 DSP 的可執行二元檔(binary code),整個程式編譯的流程,可以圖 2-4表示:
圖 2-4 DSP 程式編譯流程圖
圖 2-4表示,在產生 DSP 的執行檔中,由 C/C++的原始碼經過 C/C++的編譯器(C/C++
compiler)可產生組合語言原碼,再經過組譯器(Assembler)產生物件(Object)檔,經由連結 器(Linker),產生最後的 Executable COFF(Common Object File Format)檔(以.out 為副檔 名)。在後面的章節,將會說明有關於 DSP 的動作,都是先將原始碼,經 CCS 編譯之後,
產生 COFF 檔,再將 COFF 檔在 Linux 的環境下載入,便具有此 DSP 碼裡面所寫的功能,
也就是後面第三章將會說明的 DSP 工作(DSP task)。
CCS IDE 提供圖形化的操作介面。開發一個 DSP 應用程式時,大致上的流程是,
首先建立一個專案(Project),當專案建立時,系統會自動產生 Make 檔。使用都只需要寫 C/C++或組合語言原始檔,加入專案裡面,裡面包含的資料有:
原始檔和函式庫的名字
編譯器、組譯器和連結器的設定
所有相關的檔案(例如:自訂的標頭檔、DSP 的配置檔) 經過圖 2-4的編譯過程,就可以產生所要的 COFF 檔。
2.3.4 CCS 除錯工具
在上一小節中 曾經提到程式開發中,程式除錯的過程,CCS IDE 提供數種不同的 除錯工具,讓程式開發人員能對發展的程式除錯,CCS 並非所有的硬體都支援,表 2-4,
表示 CCS 所支援的硬體以及除錯工具所提供的功能。其中 OMAP 微處理器是屬於 ARM9 和 C55x(OMAP DSP Core)兩種硬體。
表 2-4 CCS 除錯工具以及支援硬體
Debug Tools C62x C64x C67x C54x C55x C28x 470R1x (ARM7)
(Call Advanced Features for ARM)
Event Trigging ˇ ˇ ˇ ˇ
資料來源:Code Composer Studio Getting Started Guide Rev. C[6]