嵌入式開發模式和流程

1   嵌入式系統的結構
 
1.1   嵌入式系統的硬件架構
 
如圖 5-1 所示,爲嵌入式系統硬件模型結構,此係統主要由微處理器 MPU、外圍電路,
以及外設組成,微處理器爲 ARM 嵌入式處理芯片,如 ARM7TMDI系列及 ARM9 系列微處
理器,MPU 爲整個嵌入式系統硬件的核心,決定了整個系統功能和應用領域。外圍電路根
據微處理器不同而略有不同,主要由電源管理模型、時鐘模塊、閃存 FIASH、隨機存儲器 R
AM,以及只讀存儲器 ROM 組成。這些設備是一個微處理器正常工作所必須的設備。外部
設備將根據需要而各不相同,如通用通信接口 USB、RS-232、RJ-45 等,輸入輸出設備,如
鍵盤、LCD等。外部設備將根據需要定製。
 
 
 
嵌入式處理系統主要包括嵌入式微處理器、存儲設備、模擬電路及電源電路、通信接
口,以及外設電路。
 
1.2嵌入式系統的軟件結構
 
嵌入式系統與傳統的單片機在軟件方面最大的不同就是可以移植操作系統,從而使軟
件設計層次化,傳統的單片機在軟件設計時將應用程序與系統、驅動等全部混在一起編譯,
系統的可擴展性,可維護性不高,上升到操作系統後,這一切變得很簡單可行。
 
嵌入式操作系統在軟件上呈現明顯的層次化,從與硬件相關的 BSP 到實時操作系統內
核 RTOS,到上層文件系統、GUI 界面,以及用戶層的應用軟件。各部分可以清晰地劃分開
來,如圖 5-2所示。當然,在某些時候這種劃分也不完全符合應用要求。需要程序設計人員
根據特定的需要來設計自己的軟件。
 
 
板級支持包(Board Support Packet)主要用來完成底層硬件相關的信息,如驅動程序,加
載實時操作系統等功能;  
 
實時操作系統層主要就是常見的嵌入式操作系統,設計者根據自己特定的需要來設計
移植自己的操作系統,即添加刪除部分組件,添加相應的硬件驅動程序,爲上層應用提供系
統調用;
 
文件系統、GUI,以及系統管理主要應對需要,即如果需要文件系統及圖形界面支持才
需要設計,主要是爲了應用程序員開發應用程序提供更多更便捷更豐富的 API 接口;
 
應用軟件層即用戶設計的針對特定應用的應用軟件,在開發該應用軟件時,可以用到
底層提供的大量函數。
 
採用分層結構的軟件設計使系統清晰明瞭,各個部分設計工作分工明確,從而避免整
個系統過分龐大。
 
2   嵌入式開發的模式及流程
 
2.1   嵌入式系統開發模式
 
嵌入式系統開發分爲軟件開發部分和硬件開發部分。嵌入式系統在開發過程一般都採用如圖5-3 所示
的“宿主機/目標板”開發模式,即利用宿主機(PC機)上豐富的軟硬件資源及良好的開發環境和調試工具來
開發目標板上的軟件,然後通過交叉編譯環境生成目標代碼和可執行文件,通過串口/USB/以太網等方式下
載到目標板上,利用交叉調試器在監控程序運行,實時分析,最後,將程序下載固化到目標機上,完成整
個開發過程。
 
 
 
 
在軟件設計上,如圖 5-4 所示爲結合 ARM 硬件環境及 ADS 軟件開發環境所設計的嵌
入式系統開發流程圖。整個開發過程基本包括以下幾個步驟。
 
  (1)源代碼編寫:編寫源 C/C++及彙編程序;
 
  (2)程序編譯:通過專用編譯器編譯程序;
 
  (3)軟件仿真調試:在 SDK中仿真軟件運行情況;
 
  (4)程序下載:通過 JTAG、USB、UART 方式下載到目標板上;
 
  (5)軟硬件測試、調試:通過 JTAG等方式聯合調試程序;
 
  (6)下載固化:程序無誤,下載到產品上生產。
 
 
 
2.2嵌入式系統開發流程
 
當前,嵌入式開發已經逐步規範化,在遵循一般工程開發流程的基礎上,嵌入式開發有其自身的一些特點,如圖 5-5 所示爲嵌入式系統開發的一般流程。主要包括系統需求分析
(要求有嚴格規範的技術要求)、體系結構設計、軟硬件及機械系統設計、系統集成、系統測
試,最終得到最終產品。
 
 
 
(1)系統需求分析。確定設計任務和設計目標,並提煉出設計規格說明書,作爲正式設
計指導和驗收的標準。系統的需求一般分功能性需求和非功能性需求兩方面。功能性需求是
系統的基本功能,如輸入輸出信號、操作方式等;非功能需求包括系統性能、成本、功耗、
體積、重量等因素。
 
(2)體系結構設計。描述系統如何實現所述的功能和非功能需求,包括對硬件、軟件和
執行裝置的功能劃分,以及系統的軟件、硬件選型等。一個好的體系結構是設計成功與否的
關鍵。
 
(3)硬件/軟件協同設計。基於體系結構,對系統的軟件、硬件進行詳細設計。爲了縮短
產品開發週期,設計往往是並行的。嵌入式系統設計的工作大部分都集中在軟件設計上,採
用面向對象技術、軟件組件技術、模塊化設計是現代軟件工程經常採用的方法。
(4)系統集成。把系統的軟件、硬件和執行裝置集成在一起,進行調試,發現並改進單
元設計過程中的錯誤。
 
(5)系統測試。對設計好的系統進行測試,看其是否滿足規格說明書中給定的功能要求。
 
嵌入式系統開發模式最大特點是軟件、硬件綜合開發。這是因爲嵌入式產品是軟硬件
的結合體,軟件針對硬件開發、固化、不可修改。
 
如果在一個嵌入式系統中使用 Linux 技術開發, 根據應用需求的不同有不同的配置開發
方法,但是,一般情況下都需要經過如下的過程。  
(1)建立開發環境,操作系統一般使用 Redhat Linux,選擇定製安裝或全部安裝,通過
網絡下載相應的 GCC 交叉編譯器進行安裝(比如,arm-1inux-gcc、arnl-uclibc-gcc),或者安
裝產品廠家提供的相關交叉編譯器;
 
(2)配置開發主機,配置 MINICOM,一般的參數爲波特率 115200 Baud/s,數據位 8 位,
停止位爲 1,9,無奇偶校驗,軟件硬件流控設爲無。在 Windows 下的超級終端的配置也是
這樣。 MINICOM 軟件的作用是作爲調試嵌入式開發板的信息輸出的監視器和鍵盤輸入的工
具。配置網絡主要是配置 NFS 網絡文件系統,需要關閉防火牆,簡化嵌入式網絡調試環境
設置過程。
 
(3)建立引導裝載程序 BOOTLOADER,從網絡上下載一些公開源代碼的 BOOTLOADE
R,如 U.BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT 等,根據具體芯片進
行移植修改。有些芯片沒有內置引導裝載程序,比如,三星的 ARV17、ARM9 系列芯片,
這樣就需要編寫開發板上 FLASH 的燒寫程序,讀者可以在網上下載相應的燒寫程序,也有
Linux 下的公開源代碼的 J-FLASH 程序。如果不能燒寫自己的開發板,就需要根據自己的具
體電路進行源代碼修改。這是讓系統可以正常運行的第一步。如果用戶購買了廠家的仿真器
比較容易燒寫 FLASH,雖然無法瞭解其中的核心技術,但對於需要迅速開發自己的應用的
人來說可以極大提高開發速度。
 
(4)下載已經移植好的 Linux 操作系統,如 MCLiunx、ARM-Linux、PPC-Linux 等,如
果有專門針對所使用的 CPU 移植好的 Linux 操作系統那是再好不過,下載後再添加特定硬
件的驅動程序,然後進行調試修改,對於帶 MMU 的 CPU 可以使用模塊方式調試驅動,而
對於 MCLiunx 這樣的系統只能編譯內核進行調試。
 
(5)建立根文件系統,可以從 http://www.busy.box.net 下載使用 BUSYBOX 軟件進行功
能裁減,產生一個最基本的根文件系統,再根據自己的應用需要添加其他的程序。由於默認
的啓動腳本一般都不會符合應用的需要,所以就要修改根文件系統中的啓動腳本,它的存放
位置位於/etc目錄下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自動掛裝文件系統
的配置文件/etc/fstab,具體情況會隨系統不同而不同。根文件系統在嵌入式系統中一般設爲
只讀,需要使用 mkcramfs genromfs 等工具產生燒寫映像文件。
 
(6)建立應用程序的 FLASH 磁盤分區,一般使用 JFFS2 或 YAFFS 文件系統,這需要在
內核中提供這些文件系統的驅動,有的系統使用一個線性 FLASH(NOR 型)512KB~32MB,
有的系統使用非線性 FLASH(NAND 型)8MB~512MB,有的兩個同時使用,需要根據應用
規劃 FLASH 的分區方案。
 
(7)開發應用程序,可以放入根文件系統中,也可以放入 YAFFS、JFFS2 文件系統中,
有的應用不使用根文件系統,直接將應用程序和內核設計在一起,這有點類似於μC/OS-II
的方式。
 
    (8)燒寫內核、根文件系統和應用程序,發佈產品。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章