在嵌入式系統中應用Linux深入探究
那時的計算機是專為特定的用戶設計,特殊的應用程序指令、I/O設備和主要的計算設備集成在一起。微處理器的產生改變了這種局面,價格低廉、結構小巧的 CPU和外設連接在總線上形成了比較大的系統。這種硬件架構很穩定,于是在這個基礎上,這建立起了通用的軟件開發環境和編程模式,且簡化了編程,。
軟件也在隨著硬件的發展而發展;開始只有簡單的工具用于編程和調試,而且每一個軟件都必須從頭編寫。程序大都采用宏匯編語言,匯編程序還不很完善,調試是一件很麻煩的事。因此一直到70年代的中期,模塊化編寫程序和標準化的運行庫才逐漸流行起來。在70年代的后期,出現了嵌入式系統的操作系統。它們采用匯編語言編寫,而且只能運行在相應的特殊處理器上;處理器過時,則這個操作系統就沒有用處了,對新的處理器必須重新編寫操作系統的所有代碼。C語言出現以來,采用C語言操作系統更有效率了,操作系統的編寫有了很大的改觀。C語言有很好的穩定性和可移植性,所以今天的許多操作系統都使用C來編寫。于是在 80年代末,出現了好幾個商業的嵌入式操作系統。而且它們已經演化成為今天的主流嵌入式操作系統。比如很有名的、使用者眾多的操作系統:Vxwork、 pSOS、Neculeus和WindowssCE。
不過很多的嵌入式系統還沒有使用操作系統,它們僅僅包含一些控制流程而已。在嵌入式系統相對簡單的情況下,這些控制流足以應付。但是,當嵌入式系統的功能復雜后,簡單控制邏輯就不夠用了,這時你必須使用操作系統。如果不使用操作系統將會使得控制系統邏輯結構復雜混亂,很容易出錯。再者,有些嵌入式系統需要接入網絡系統,比如賓館的門鎖控制已經需要接入網絡,因此就更需要嵌入式的操作系統來支持應用軟件。
除了商業化的操作系統外,還有其他的有版權要求的非商業化嵌入式操作系統可以使用。然而今天的Linux 系統有著嵌入式操作系統需要的很多特色、突出的優勢:適應于多種CPU和多種硬件平臺,性能穩定,裁剪性很好,開發和使用都很容易。因此,我們決定在嵌入式系統中使用Linux操作系統。
1.它具有很好的工具,可以跨越ICE等屏障
原來開發嵌入式系統的關鍵是需要一套好用的開發和調試工具;而且在開發所不同階段還需要不同的工具。就比如工匠,只有好的工具才能夠使工作完成得又好又快。
傳統的開發調試工具就是ICE-在線仿真器;它取代目標板的微處理器,給目標程序提供仿真環境,同時可以連接監視器;允許開發者調試和監視程序的運行。盡管這種運行方式會引起一些奇怪的問題,但是它總能夠讓你明了程序在目標板的工作狀態,免除了對底層的軟硬件接口的猜測。但是,這種設備價格非常貴。過去,甚至在整個開發期內,開發嵌入式系統主要依靠這些調試工具。可是,我們發現,一旦軟硬件能夠正常支持串口的運行時,我們可以使用其他的調試辦法。現代的嵌入式系統采用相當成熟的微處理器。因此很容易使得串口工作。串口連接成功,可以進行很多的開發調試。所以我們不用ICE也可以很好地開始開發和調試工作了,同時還降低開發費用。
Linux利用GNU項目的C編譯器來編譯程序,使用gdb源程序級調試器來調試程序。它們提供了合適的手段來使你能夠開發嵌入式的Linux系統。為了開發基于Linux的嵌入式系統,可以按以下方法進行:
向串口輸出提示字符串,例如“helloword”或“Waston,comehereIneedyou!”等,然后通過串口,指揮gdb 開始工作。以這種方式和另外一臺運行gdb程序的Linux主機系統“交談”,通過串口,你可以很方便地讓gdb調試目標程序。通過串口和gdb通訊,可以進行C源程序級的調試。甚至你還可以以串口把其他的程序下裝到RAM或flash存儲器。通過串口,使用gdb可以使得軟硬件的初始化代碼繼續運行到核心全部啟動。
一旦核心在運行了,你就可以使用其他的更好的調試工具,象Kgdb等,如果連接了網絡,你也可以讓網絡工作起來。同時你就可以用GUI的xgdb來調試應用程序。
2.滿足實時性時要求
細細分析起來,大多數系統并不需要嚴格的實時性。而嵌入式系統也經常被誤解為就是實時性系統。其實,多數嵌入式系統并不需要實時性,而且實時性本身是個相對的概念絕對的實時性是指對需要的服務以限定的方式和在限定時間內提供,比如在微秒級內響應。這種硬實時性功能只是針對特殊的設備而言,例如數字信號處理等。而這些要求使用特殊的硬件如FIFO、DMA和其他特殊設計的硬件也可以滿足。 linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論