• 沒有找到結果。

第二章 相關知識及背景介紹

2.7 開發環境

首 先 必 須 了 解 開 發 嵌 入 式 系 統 所 用 到 的 兩 種 系 統 , 一 種 是 電 腦 主 機(Host Computer),我們在上面撰寫並偵錯程式,因為許多開發用的軟硬體工具支援通用型處 理器,此處理器是桌上型電腦的一部份;另一種為目標系統(Target System),此系統為 開發中的嵌入式目標平台,我們在這個平台的處理器上執行我們撰寫的程式。

z 電腦主機(Host Computer):標準(x86)平台用來開發目標系統的程式和軟體,並且 透過JTAG 線連結目標系統除錯。

z 目標系統(Target System):開發中的嵌入式系統。

z 交叉開發(Cross-development):建立在 host computer 的開發環境,利用交叉編譯 器編譯目標系統的程式。

撰寫嵌入式系統的程式與撰寫在桌上型電腦執行的程式非常類似。一般而言,桌上 型電腦上的應用程式設計流程首要步驟為撰寫原始碼,原始碼可能分成數個檔案。原始 碼以編輯程式撰寫,再以編譯器(compiler)或組譯器(assembler)將各檔案的程式碼加以編 譯或組譯,產生對應的二元程式碼檔案,再利用連結器(linker)將二元程式碼結合為執行 檔,此為實作階段。透過偵錯程式測試該執行檔,為驗證階段。如果在驗證階段程式出 現錯誤或是效能低落,回到實作階段改進原始碼,再編譯組譯。如此反覆,直到達到預 期成效。

圖2-12. 軟體開發流程

圖 2-12 為嵌入式系統軟體的開發流程,開發嵌入式系統的程式包括編輯、編譯、

組譯和連結。我們在開發用的電腦主機上使用交叉開發(cross-development)工具,包含交 叉編譯器(cross complier)和交叉組譯器(cross assembler)來進行編譯和組譯工作。完成的

目標執行檔,我們透過 JTAG、RS-232c 或是網路傳到目標系統上執行。驗證階段的工

作會和開發桌上型電腦的程式有許多的不同。

偵錯和除錯需要透過額外的硬體電路或是連接器,將開發用的電腦主機和目標系統 連接起來。如此在偵錯程式可以透過單步執行,觀察目標系統的處理器的記憶體位置和 暫存器的值。這樣可以方便程式設計者加以除錯和改進程式。

2.7.1 硬體連接

Host Computer

Target System

JTAG

RS-232

Ethernet

圖2-13. 開發環境硬體連接

圖 2-13 為開發的時侯電腦主機和目標系統的硬體連接,透過這些連接線可以操控

或是上傳檔案到目標系統。

z JTAG:用來偵錯或除錯,也可以用來燒寫目標系統的 Flash,一般是用來燒寫 Bootloader。

z RS-232:在超級終端機操作目標系統。開機後,bootloader 就會透過 RS-232 傳送

文字選單,並且可以由使用者下達指令。進入Linux 後將會顯示開機訊息,輸入

登入帳號密碼就可以用命令模式操作整個目標系統。

z Ethernet:在 bootloader 的選單時,更新 Linux kernel 或是 Root Filesystem 都是透 過ethernet 傳送。

2.7.2 軟體架構

圖2-14. 開發環境軟體架構

圖2-14 為開發環境的軟體架構,目標系統通常含有三個部份,分別為 Bootloader、

Kernel 和 Root Filesystem。

z Bootloader:

Bootloader 是在作業系統執行之前的一段小程式。透過這段小程式,我們可以 初始化硬體設備、建立記憶體空間的映射表,從而建立適當的系統軟硬體環境,為 最終呼叫作業系統做好準備

對於嵌入式系統,Bootloader 是建立在特定硬體平台來實現的。因此,不可能 為所有的嵌入式系統建立一個通用的Bootloader。Bootloader 依賴 CPU 的架構和嵌 入式平台的周邊設備,所以每當開發新的平台,Bootloader 需要做適當的修改和移 植。

z Kernel:

Kernel 是作業系統的核心,主要是進行硬體和軟體之間的溝通和資源的管理。

程式對硬體操作的時間。直接操作硬體是非常複雜的,所以核心提供一個抽象介 面,可以讓程式更簡潔的方式操控硬體。

z Root Filesystem:

除了 kernel 之外,filesystem 是讓作業系統能順利運作的重要元素,它儲存作 業系統在運作過程中所需要的程式和資料。

Root filesystem 是構成 filesystem 的最小集合,它包含所有 Linux 開機時需 要的檔案及資料夾,如initrd、init.d 裡的各項服務,/etc、/proc、/lib 等。Filesystem 的源頭為根目錄(/),所有檔案和目錄都是從根目錄延伸。在嵌入式系統中, root filesystem 包含了一些基本使用工具,如查詢檔案的 ls、掛載裝置的 mount 等。若 是內建的儲存空間不足,可以透過CF 卡或是 SD/MMC 卡擴充儲存空間。