夏薇
摘要:隨著計算機、通信及網絡技術的高速發展,嵌入式系統廣泛地滲透到各行各業及人們日常生活的方方面面中。由于嵌入式系統的復雜性不斷增加,嵌入式操作系統成為了嵌入式系統中最重要的組成部分。在各種嵌入式操作系統中,憑借其性能優異,結構清晰,平臺支持廣泛,網絡支持強勁及開放源代碼等多方面的優勢,被嵌入式系統開發者廣泛的采用。有鑒于此,對嵌入式Linux系統移植及應用開發技術進行研究。
關鍵詞:嵌入式Linux;內核;設備驅動;移植
隨著數字信息技術與網絡技術的高速發展,我們已進入數碼時代。建立在其基礎之上的嵌入式系統已經廣泛的滲透到科學研究、工程設計、軍事技術、商業文化藝術、娛樂業以及人們的日常生活等方方面面。嵌入式技術越來越和人們的生活緊密相關,消費電子、計算機、通信一體化趨勢日益明顯,作為計算機領域的一個重要組成部分,嵌入式系統再度成為研究與應用的熱點,而這離不開對嵌入式系統重要組成部分的嵌入式系統軟件的研究。
1 嵌入式軟件開發
1.1 嵌入式軟件生成階段
由于嵌入式系統自身的硬件局限性,不能在嵌入式系統上直接搭建開發環境,因此,在嵌入式軟件開發中通常需要兩個平臺,即作為開發平臺的宿主機和作為運行平臺的嵌入式目標機,嵌入式軟件的生成階段又可分為三個步驟源代碼程序的編寫將源程序交叉編譯成各個目標模塊將所有目標模塊及相關庫文件一起鏈接成可供目標板下載或固化的目標程序。這三個步驟與通用計算機系統的軟件開發階段基本一致,但嵌人式軟件開發又有其自身的特點為了能生成適合目標平臺運行的二進制程序,對源代碼的編譯應使用跨平臺的交叉編譯器為了程序代碼和數據在目標機的內存中正確定位及正確鏈接適合目標機的庫文件,需要使用交叉鏈接器。交叉編譯器和交叉鏈接器是嵌入式軟件開發不可缺少的工具。
1.2 嵌入式軟件調試階段
在開發嵌入式軟件時,交叉調試是必不可少的一步。交叉調試通常是指調試程序和被調試程序運行在不同的機器上,調試器通過某種方式控制目標機上的被調試程序的運行方式,并且通過調試器查看和修改目標機上的內存、寄存器及被調試程序中的變量的調試技術。目前,使用最廣泛的交叉調試技術是軟件調試方式和片上調試方式。
1.3 嵌入式軟件固化階段
嵌入式軟件調試完成之后,整個開發周期就進入固化階段。把程序代碼燒寫到目標板的永久性存儲器中,并且在真實的硬件環境中運行,這個過程就是固化。固化階段需要注意的問題主要有:調試階段目標文件包含調試信息,固化階段應該重新編譯,去掉不需要的調試信息;調試階段程序的所有代碼段、數據段都被定位到測試空間的RAM中,固化階段應將程序的各邏輯段按照其不同的屬性分別定位到永久存儲器或RAM中;通常,調試階段不需要boot模塊,目標板上的監控程序可以實現此功能,但固化階段必須有boot模塊作為入口模塊。
注意到以上差異并完成必要的準備工作后,就可以利用交叉編譯鏈接工具生成可固化的應用程序,再用固化工具將它固化到目標機的ROM、Flash閃存等非易失性存儲設備中。至此,整個嵌入式應用軟件開發過程就基本完成了。
2 嵌入式Linux系統移植
與通用計算機系統Linux操作系統的根文件系統的組織結構一樣,嵌入式Linux系統的根文件系統的組織結構通常也參考標準來實現而與通用計算機系統不同的是,嵌入式Linux通常需要采用符合自身存儲設備特點的特殊文件系統。
2.1 根文件系統的選擇
嵌入式Linux系統中,為了保護系統文件不被破壞或不希望用戶修改某些文件,常采用一些不可修改的文件系統,cramfs和經過壓縮的RAM disk都是具有很高的壓縮比的不可修改的文件系統,因此常被用著嵌入式Linux的根文件系統。
對于寫入Flash設備的RAM disk映像,首先必須在內核中配置RAM disk的大小與數量,并在Linux啟動時按配置在內存中創建RAM disk,把RAM disk映像減壓縮到內存中,此后文件系統就在內存中,不再需要訪問Flash設備了。RAM disk最大的缺點是,在正常情況下,同樣的數據不僅在外存中占據了空間以壓縮后的形式存在,而且還在內存中占用了更大的空間以解壓縮之后的形式存在,這違背了嵌入式環境下盡量節約資源的要求。如果系統中有大量富裕的內存,選用RAM disk作為根文件系統也是個不錯的選擇。但是對于大多數嵌入式系統來說,內存都是非常寶貴的資源,盡量節約資源也體現了嵌入式系統開發的精神,因此,本次移植選用cramfs作為根文件系統。
2.2 用戶擴展文件系統的選擇
由于選擇了只讀的文件系統cramfs做為根文件系統,為了利用Flash設備的易讀易寫且斷電永久存儲的特性,以及為了擴展嵌入式系統的功能,因此需要一個可讀寫、可保存數據的文件系統。
2.3 內存文件系統的選擇
Flash設備都有擦除、寫的次數限制,一旦達到這個限制Flash設備將出現壞塊,其中的內容也將永遠不能再擦除了。經常對Flash設備執行擦除、寫操作,會縮短Flash設備的壽命。因此,/tmp、/var這些存放臨時性和變動性較大數據的目錄應該采用基于內存技術的文件系統,防止頻繁的對Flash設備進行擦除操作,延長Flash閃存使用壽命。
參考文獻
[1]張靜,葉梧.基于ARM 920T的嵌入式Linux系統開發[J].現代電子技術,2005,(4):22-24.
[2]秦蔚.ARM平臺下Linux內核移植技術的分析研究與應用[D].昆明:昆明理工大學,2004.
[3]葉欣.嵌入式Linux環境下Web頁面技術的實現[J].現代商貿工業,2009,(01).