文章編號:1672-5913(2008)16-0021-02
摘要:本文從實際應用的角度出發,重點對Linux嵌入式系統開發中硬件平臺選型問題進行論述。
關鍵詞:嵌入式系統;ARM;Linux操作平臺
中圖分類號:G642
文獻標識碼:B
1嵌入式Linux系統
嵌入式系統是軟件和硬件的綜合體。它是以應用為中心,以計算機技術為基礎,軟硬件可裁減,從而能夠適應實際應用中對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統。Linux具有強大的功能,很好地支持了各種現代編程技術,將Linux應用于嵌入式系統的開發有如下一些優點:
1) 內核完全開放,使得設計者可以自己設計和開發出真正的硬件實時系統和軟件實時系統。
2)Linux本身具有一整套工具鏈,使用者可以較容易地自行建立嵌入式系統的開發環境和交叉編譯及運行環境。
3) 強大的網絡支持,可以利用Linux的網絡協議棧將其開發成為嵌入式的TCP/IP網絡協議棧。
2硬件平臺的選擇
2.1處理器的選擇
設計者在選擇處理器時要考慮的主要因素有:
(1) 處理性能。處理器的性能取決于多個方面的因素,如時鐘頻率、內部寄存器的大小、指令是否對等處理所有的寄存器等。如果是面向高性能的應用設計,那么建議考慮某些新的處理器,其價格相對低廉,如IBM和Motorola Power PC。
(2) 技術指標。當前許多嵌入式處理器都集成了外圍設備,采用這類CPU可以減少系統的體積,降低系統的開發成本。開發人員首先考慮的是,系統所要求的一些硬件能否無需過多的膠合邏輯(GL,Glue Logic)就可以連接到處理器上;其次是考慮該處理器的一些支持芯片,如DMA控制器、內存管理器、中斷控制器、串行設備、時鐘等的配套。
(3) 功耗。嵌入式微處理器最大并且增長最快的市場是手持設備、電子記事本、PDA、手機、GPS導航器、智能家電等消費類電子產品。這些產品中選購的微處理器,典型的特點是要求高性能、低功耗。
(4) 軟件工具。僅有一個處理器,沒有較好的軟件開發工具的支持也是不行的,因此選擇合適的軟件開發工具對系統的實現會起到很好的作用。
(5) 內置調試工具。使用具有內置調試工具的處理器可以大大縮小調試周期,降低調試的難度。
(6) 供應商是否提供評估板。許多處理器供應商可以提供評估板來驗證理論是否正確,決策是否得當。
2.2硬件選擇的其他因素
(1)生產規模。打算做一套,多套,還是規模生產,如果生產規模比較大,可以自己設計和制備硬件,這樣可以降低成本。反之,最好從第三方購買主板和I/O板卡。
(2) 市場目標。如果想使產品盡快發售,以獲得競爭力,就要盡可能買成熟的硬件;反之,可以自己設計硬件,降低成本。
(3) 軟件對硬件的依賴性。軟件是否可以在硬件沒有到位的時候并行設計或先行開發。
3軟件平臺的選擇
嵌入式軟件的編寫和開發調試的主要流程為:代碼編程、交叉編譯、交叉鏈接、重定位、下載到目標板和調試等幾個步驟,因此軟件平臺的選擇也涉及到以下幾個方面。
3.1操作系統的選擇
(1) 操作系統選擇應考慮的因素
硬件方案確定之后,操作系統的選擇就相對輕松了。硬件的不同,會影響操作系統的選擇。低端無MMU(Memory Management Unit,存儲器管理單元)的CPU,要使用uClinux 操作系統;而相對高端的硬件,則可以用普通的嵌入式 Linux 操作系統。uClinux 和普通的 Linux 有各自的優勢和缺點??捎糜谇度胧较到y軟件開發的操作系統很多,但關鍵是如何選擇一個適合開發項目的操作系統。筆者認為應該從以下幾點進行考慮。
① 操作系統提供的開發工具:有些實時操作系統(RTOS)只支持該系統供應商的開發工具,因此還必須向操作系統供應商獲取編譯器、調試器等;而有些操作系統使用廣泛,且有第三方工具可用,因此選擇余地較大。
② 操作系統向硬件接口移植的難度:操作系統到硬件的移植是一個重要的問題,是關系到整個系統能否按期完工的一個關鍵因素。因此,要選擇可移植性程度高的操作系統,避免操作系統難以向硬件移植而帶來的種種困難,加速系統的開發進度。
③ 操作系統的內存要求:均衡考慮是否需要額外花錢去購買RAM或EEPROM來迎合操作系統對內存的較大要求。
④ 開發人員是否熟悉此操作系統及其提供的API。
⑤ 操作系統是否提供硬件的驅動程序。
⑥ 操作系統的可剪裁性。有些操作系統具有較強的可剪裁性,如嵌入式Linux、Tornado/VxWorks等等。
⑦ 操作系統的實時性能。
(2) 幾類嵌入式Linux系統的比較
嵌入式Linux系統方面的產品主要分為三類。第一類是專門為Linux的嵌入式應用而做的,如何讓Linux更小、更容易嵌入到體積要求和功能、性能要求更高的硬件中去,是他們的產品開發方向。第二類是專門為Linux的實時特性設計的產品,將Linux開發成實時系統尤其是硬實時系統,應用于一些關鍵的控制場合。第三類的產品是將實時性和嵌入式方案結合起來的方案。因此要根據自己的嵌入式要求和實時性要求,選擇適合自己的嵌入式Linux;同時,和選擇硬件的原則一樣,如果可能,盡量選擇使用普通的嵌入式 Linux 系統。
3.2編程語言的選擇
編程語言的選擇主要考慮以下因素。
(1) 通用性:不同種類的微處理器都有自己專用的匯編語言,這就為系統開發者設置了一個巨大的障礙,使得系統編程更加困難,軟件重用無法實現。而高級語言一般和具體機器的硬件結構聯系較少,多數微處理器都有良好的支持,通用性較好。
(2) 可移植性程度:匯編語言和具體的微處理器密切相關,為某個微處理器設計的程序不能直接移植到另一個不同種類的微處理器上使用,移植性差;而高級語言對所有微處理器都是通用的,程序可以在不同的微處理器上運行,可移植性較好。
(3) 執行效率:一般來說,越是高級的語言,其編譯器和開銷就越大,應用程序也就越大、越慢;但單純依靠低級語言,如匯編語言來進行應用程序的開發,帶來的問題是編程復雜、開發周期長。因此,存在一個開發時間和運行性能間的權衡問題。
(4) 可維護性:低級語言如匯編語言,可維護性不高。高級語言程序往往是模塊化設計,各個模塊之間的接口是固定的。當系統出現問題時,可以很快地將問題定位到某個模塊內,并盡快解決。另外,模塊化設計也便于系統功能的擴充和升級。
在嵌入式系統開發過程中使用的語言種類很多,比較廣泛應用的高級語言有Ada、C/C++、Modula-2和Java等。Ada語言定義嚴格,易讀易懂,有較豐富的庫程序支持,目前在國防、航空、航天等相關領域應用比較廣泛。C語言具有廣泛的庫程序支持,是目前在嵌入式系統中應用最廣泛的編程語言,在將來很長一段時間內仍占重要地位。C++是一種面向對象的編程語言,目前在嵌入式系統設計中也得到了廣泛的應用。Modula-2定義清晰,支持豐富,具有較好的模塊化結構,在教學科研方面有較廣泛的應用。Java語言相對年輕,但有很強的跨平臺特性,目前發展勢頭較為強勁。
3.3集成開發環境考慮的因素
(1) 系統調試器的功能。系統調試特別是遠程調試是一個重要的功能。
(2) 支持庫函數。許多開發系統提供大量實用的庫函數和模板代碼,如大家比較熟悉的C++編譯器就帶有標準的模板庫。與選擇硬件和操作系統的原則一樣:除非必要,盡量采用標準的glibc。
(3) 編譯器開發商是否持續升級編譯器。
(4) 連接程序是否支持所有的文件格式和符號格式。
3.4硬件調試工具的選擇
好的軟件調試程序可以有效地發現BUG,但是如果再選擇一個好的硬件調試就會達到事半功倍的效果。常用的硬件調試工具有以下幾種:
(1) 實時在線仿真器(ICE,In-Circuit Emulator)??梢詫Τ绦蜻M行單步運行、斷點、反匯編、內存檢查、源程序級等的調試。
(2) 邏輯分析儀。最常用于硬件調試,也可用于軟件調試。它是一種無源器件,主要用于監視系統總線的事件。
(3)ROM仿真器??刹迦隦OM插座中的器件,用于仿真ROM芯片,從而避免了每次修改程序后直接燒結的麻煩。
3.5軟件組件的選擇
有些軟件組件是免費的,有些軟件組件是授權的。授權軟件組件的費用一般都很高,但大都經過嚴格的測試,可靠性高,調試時間短?,F在也有一些免費的自由軟件組件,它們的性能、可靠性也很好。因此開發人員在選擇的時候要加以權衡,確定哪種方案更好。
4展望
嵌入式技術的應用越來越廣泛,有無限大的應用領域,可謂無所不在、無處不在、多種途徑、多種選擇。Linux在嵌入式系統中具有強大的生命力和利用價值,很多公司和大學都在應用中不斷地研究和開發??梢灶A見,ARM與Linux在未來會更加壯大,在嵌入式產品市場上占有越來越大的份額。
參考文獻:
[1] 馬忠梅,李善平,等.ARM9Linux 嵌入式系統教程[M]. 北京: 北京航空航天大學出版社,2004.
[2] 孫天澤,袁文菊,等. 嵌入式設計及Linux驅動開發指南[M]. 北京:電子工業出版社,2005.
[3] 田澤. 嵌入式系統開發與應用[M]. 北京: 北京航空航天大學出版社,2004.
[4] 何立民. 嵌入式系統的定義與發展歷史[J]. 單片機與嵌入式系統應用,2004,(1).