嵌入式系統是以應用為中心,以計算機技術為基礎、軟硬件均可裁剪、適應應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。其發展已有二十多年的歷史,國際上也出現了一些著名的嵌入式操作系統,如VxWorks,Palm OS,Windows CE等等,但這些操作系統均屬于商品化產品,價格昂貴且由于源代碼不公開導致了諸如對設備的支持 ,應用軟件的移植等一系列的問題。而Linux作為一種優秀的Free OS,近幾年在嵌入式領域異軍突起,成為了最有潛力的嵌入式操作系統。
嵌入式Linux融合了嵌入式和Linux的特點,其開發與一般的應用程序開發相比有著自己的特點,下面簡要的介紹一下嵌入式Linux開發的一般過程。
了解硬件是首要的一步,這是嵌入式開發的特點決定的。了解硬件指的是了解整個硬件,判斷硬件對于當前的應用來說是否合適。嵌入式系統中需要使用到CPU和各種外圍設備,由此需要收集相關硬件的資料,包括CPU,芯片手冊和各種外圍設備的手冊以及相關的各種電路圖等,并對整體系統有較深入的了解。
了解硬件后,下一步就該準備需要使用的Linux工具以及其他工具,這些工具包括:針對所用CPU的編譯器/匯編器/連接器,相應的庫工具,目標文件分析/管理工具,符號查看器等等。幸運的是,由于Linux的開放性,針對不同目標平臺的Linux工具都可在網上免費得到,絕大部分的這些工具都由GNU提供。所需要的其他工具還包括硬件廠商提供給公司的工具,如編程器,下載工具和查錯器等等。所有這些工具對以后的開發、調試等都可說是必不可少的。
做好以上的準備工作后,就要進入實質性的工作階段了。首先需要安排內存地址,如SDRAM的內存地址,Flash的內存地址等,這需要與實際應用和硬件狀況相結合來考慮,要根據硬件的限制以及實際應用的需要對內存地址進行合理的安排,同時要注意內存地址的安排要具有一定的伸縮性,以便于將來需要改動時所做的變動達到最小。一般來說,嵌入式Linux的內存地址安排體現在連接腳本當中。
接著就該進入編寫啟動代碼和機器相關代碼階段了。各種不同目標系統,甚至相同目標系統的啟動代碼和機器相關代碼也是不相同的。啟動代碼一般需要完成硬件初始化,裝載內核及安裝根文件系統以及開始內核執行的工作,不同目標平臺的啟動代碼一般可通過參考Linux下已有的啟動代碼和相關CPU的手冊進行編寫。
啟動代碼和機器相關代碼編程完成并可以啟動系統后,下一步就可以開始驅動程序的編寫了。Linux編寫驅動程序與一般情況下編寫驅動程序并沒有太大的區別,都需要對相關的硬件作出了解,同時需要遵循Linux編寫驅動程序的一些規則進行,編寫完一個驅動程序后,一般就寫一個相應的測試程序已便隨時進行測試。Linux下各種不同類型的設備都有相當多的驅動程序源碼可以參考,因此實際編寫時更多的時間是花在對特定硬件特性的熟悉上。
除了以上提到的這些步驟外,進行實際開發時,很多時候還要進行庫(這里所提到的庫均指C庫),GUI和系統程序的移植。這是因為嵌入式Linux中所用的庫一般不能直接使用標準庫,而需要進行精簡,雖然已有些精簡的C庫如uClibc等可供使用,但還是需要經常對其進行修改。嵌入式Linux常用的GUI有Microwindows,MiniGUI,QT/Embedded,TinyX等等,各自均有其使用的場合,所針對的目標平臺和應用層次也不一樣,必須根據實際需要進行選擇。系統程序如mount,ls等等有些是應用時所必須的,有些則是進行調試時所需要的,初始時則需要一些通用的系統程序即可。
Linux嵌入式系統操作系統開發簡介
嵌入式系統是以應用為中心,以計算機技術為基礎、軟硬件均可裁剪、適應應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。其發展已有二十多年的歷史,國際上也出現了一些著名的嵌入式操作系統,如VxWorks,Palm OS,Windows CE等等,但這些操作系統均屬于商品化產品,價格昂貴且由于源代碼不公開導致了諸如對設備的支持 ,應用軟件的移植等一系列的問題。而Linux作為一種優秀的Free OS,近幾年在嵌入式領域異軍突起,成為了最有潛力的嵌入式操作系統。
嵌入式Linux融合了嵌入式和Linux的特點,其開發與一般的應用程序開發相比有著自己的特點,下面簡要的介紹一下嵌入式Linux開發的一般過程。
了解硬件是首要的一步,這是嵌入式開發的特點決定的。了解硬件指的是了解整個硬件,判斷硬件對于當前的應用來說是否合適。嵌入式系統中需要使用到CPU和各種外圍設備,由此需要收集相關硬件的資料,包括CPU,芯片手冊和各種外圍設備的手冊以及相關的各種電路圖等,并對整體系統有較深入的了解。
了解硬件后,下一步就該準備需要使用的Linux工具以及其他工具,這些工具包括:針對所用CPU的編譯器/匯編器/連接器,相應的庫工具,目標文件分析/管理工具,符號查看器等等。幸運的是,由于Linux的開放性,針對不同目標平臺的Linux工具都可在網上免費得到,絕大部分的這些工具都由GNU提供。所需要的其他工具還包括硬件廠商提供給公司的工具,如編程器,下載工具和查錯器等等。所有這些工具對以后的開發、調試等都可說是必不可少的。
做好以上的準備工作后,就要進入實質性的工作階段了。首先需要安排內存地址,如SDRAM的內存地址,Flash的內存地址等,這需要與實際應用和硬件狀況相結合來考慮,要根據硬件的限制以及實際應用的需要對內存地址進行合理的安排,同時要注意內存地址的安排要具有一定的伸縮性,以便于將來需要改動時所做的變動達到最小。一般來說,嵌入式Linux的內存地址安排體現在連接腳本當中。
接著就該進入編寫啟動代碼和機器相關代碼階段了。各種不同目標系統,甚至相同目標系統的啟動代碼和機器相關代碼也是不相同的。啟動代碼一般需要完成硬件初始化,裝載內核及安裝根文件系統以及開始內核執行的工作,不同目標平臺的啟動代碼一般可通過參考Linux下已有的啟動代碼和相關CPU的手冊進行編寫。
啟動代碼和機器相關代碼編程完成并可以啟動系統后,下一步就可以開始驅動程序的編寫了。Linux編寫驅動程序與一般情況下編寫驅動程序并沒有太大的區別,都需要對相關的硬件作出了解,同時需要遵循Linux編寫驅動程序的一些規則進行,編寫完一個驅動程序后,一般就寫一個相應的測試程序已便隨時進行測試。Linux下各種不同類型的設備都有相當多的驅動程序源碼可以參考,因此實際編寫時更多的時間是花在對特定硬件特性的熟悉上。
除了以上提到的這些步驟外,進行實際開發時,很多時候還要進行庫(這里所提到的庫均指C庫),GUI和系統程序的移植。這是因為嵌入式Linux中所用的庫一般不能直接使用標準庫,而需要進行精簡,雖然已有些精簡的C庫如uClibc等可供使用,但還是需要經常對其進行修改。嵌入式Linux常用的GUI有Microwindows,MiniGUI,QT/Embedded,TinyX等等,各自均有其使用的場合,所針對的目標平臺和應用層次也不一樣,必須根據實際需要進行選擇。系統程序如mount,ls等等有些是應用時所必須的,有些則是進行調試時所需要的,初始時則需要一些通用的系統程序即可。
除了智能數字終端領域以外,Linux在移動計算平臺、智能工業控制、金融業終端系統,甚至軍事領域都有著廣泛的應用前景。這些Linux被統稱為“嵌入式Linux”。下面就來看看都有哪些嵌入式Linux在以上領域縱橫馳騁吧!
RT-Linux
這是由美國墨西哥理工學院開發的嵌入式Linux操作系統。到目前為止,RT-Linux已經成功地應用于航天飛機的空間數據采集、科學儀器測控和電影特技圖像處理等廣泛領域。RT-Linux開發者并沒有針對實時操作系統的特性而重寫Linux的內核,因為這樣做的工作量非常大,而且要保證兼容性也非常困難。為此,RT-Linux提出了精巧的內核,并把標準的Linux核心作為實時核心的一個進程,同用戶的實時進程一起調度。這樣對Linux內核的改動非常小,并且充分利用了Linux下現有的豐富的軟件資源。
uClinux
uCLinux是Lineo公司的主打產品,同時也是開放源碼的嵌入式Linux的典范之作。uCLinux主要是針對目標處理器沒有存儲管理單元MMU(Memory Management Unit)的嵌入式系統而設計的。它已經被成功地移植到了很多平臺上。由于沒有MMU,其多任務的實現需要一定技巧。uCLinux是一種優秀的嵌入式Linux版本,是micro-Conrol-Linux的縮寫。它秉承了標準Linux的優良特性, 經過各方面的小型化改造,形成了一個高度優化的、代碼緊湊的嵌入式Linux。雖然它的體積很小,卻仍然保留了Linux的大多數的優點:穩定、良好的移植性、優秀的網絡功能、對各種文件系統完備的支持和標準豐富的API。它專為嵌入式系統做了許多小型化的工作,目前已支持多款CPU。 其編譯后目標文件可控制在幾百KB數量級,并已經被成功地移植到很多平臺上。
Embedix
Embedix是由嵌入式Linux行業主要廠商之一Luneo推出的,是根據嵌入式應用系統的特點重新設計的Linux發行版本。Embedix提供了超過25種的Linux系統服務,包括Web服務器等。系統需要最小8MB內存,3MB ROM或快速閃存。Embedix基于Linux 2.2內核,并已經成功地移植到了Intel x86和PowerPC處理器系列上。像其它的Linux版本一樣,Embedix可以免費獲得。Luneo還發布了另一個重要的軟件產品,它可以讓在Windows CE上運行的程序能夠在Embedix上運行。Luneo還將計劃推出Embedix的開發調試工具包、基于圖形界面的瀏覽器等。可以說,Embedix是一種完整的嵌入式Linux解決方案。
XLinux
XLinux是由美國網虎公司推出,主要開發者是陳盈豪。他在加盟網虎幾個月后便開發出了基于XLinux的、號稱是世界上最小的嵌入式Linux系統,內核只有143KB,而且還在不斷減小。XLinux核心采用了“超字元集”專利技術,讓Linux核心不僅可能與標準字符集相容,還含蓋了12個國家和地區的字符集。因此,XLinux在推廣Linux的國際應用方面有獨特的優勢。
PoketLinux
PoketLinux由Agenda公司采用、作為其新產品“VR3 PDA”的嵌入式Linux操作系統。它可以提供跨操作系統構造統一的、標準化的和開放的信息通信基礎結構,在此結構上實現端到端方案的完整平臺。PoketLinux資源框架開放,使普通的軟件結構可以為所有用戶提供一致的服務。PoketLinux平臺使用戶的視線從設備、平臺和網絡上移開,由此引發了信息技術新時代的產生。在PoketLinux中,稱之為用戶化信息交換(CIE),也就是提供和訪問為每個用戶需求而定制的“主題”信息的能力,而不管正在使用的設備是什么。
MidoriLinux
由Transmeta公司推出的MidoriLinux操作系統代碼開放,在GUN普通公共許可(GPL)下發布,該公司有個名為“MidoriLinux計劃”。“MidoriLinux”這個名字來源于日本的“綠色”——Midori,用來反映其Linux操作系統的環保外觀。
紅旗嵌入式Linux
由北京中科院紅旗軟件公司推出的嵌入式Linux是國內做得較好的一款嵌入式操作系統。目前,中科院計算所自行開發的開放源碼的嵌入式操作系統——Easy Embedded OS(EEOS)也已經開始進入實用階段了。該款嵌入式操作系統重點支持p-Java。系統目標一方面是小型化,另一方面能重用Linux的驅動和其它模塊。由于有中科院計算所的強大科研力量做后盾,EEOS有望發展成為功能完善、穩定、可靠的國產嵌入式操作系統平臺。
思考與展望
以上列舉的眾多嵌入式Linux操作系統中,國內對于uClinux和RT-Linux研究的較多,很多基于它們的產品已經面世,比如華恒公司已經把uClinux成功移植,并投放到市場。
正是由于Linux開放源代碼的特點,所以全世界的開發廠商都站在同一個起跑線上。國內的研究機構和企業也正在積極投入人力、物力,力爭在嵌入式操作系統上有所為。但應該清醒認識到,絕大多數的嵌入式系統的硬件平臺還掌握在外國公司的手中。國產的嵌入式操作系統在技術含量、兼容性、市場運作模式等方面還有很多工作要做。國家對嵌入式領域的發展也極為重視。信息產業部《2003年度電子發展基金項目指南》在軟件類重點產品項目中,第五小類就是關于嵌入式軟件與系統開發的,并提出要重點進行如下重點項目的研制與開發:嵌入式實時操作系統、嵌入式軟件集成開發平臺和嵌入式數據庫管理軟件。由于嵌入式系統研發在國內起步比較晚,我國目前還基本處于實驗室階段。但是嵌入式操作系統的巨大的商業價值和Linux的開放性,為民族軟件產業的發展提供了難得的機會。在跟蹤國外嵌入式操作系統最新技術的同時,國內廠商要堅持自主產權,力爭找到自己的突破點,探索出一條適合中國國情的嵌入式操作系統的發展道路。
責任編輯:YYX
評論
查看更多