??? 如今,Linux正廣泛應用于各種嵌入式設備的開發中,如數字電視、視訊轉換盒、DVR播放器、xDSL/有線/PON調制解調器、家用路由器和網絡網關。它尤其適合具有先進網絡功能、大量設備驅動程序的數字家庭和家庭網絡。除了嵌入式設備,Linux還支持企業級設備,如服務器和路由器。
?
??? 此外,Linux在行動設備中也獲得了青睞。市調機構In-Stat的報告顯示,到2012年,中國基于行動Linux的智能手機出貨量將達到中國智能手機總出貨量的25.4%。
??? 相較其它典型的專有商用OS,Linux蓬勃發展的原因在于其是開原始碼、成本低、使用快速安全。與其它OS相較,它能夠更好地進行‘剪裁’,且只占用較小空間。利用Linux,再加上來自開放原始碼社群的持續支持,工程師能夠使用和控制原始程序代碼。開放原始碼社群是由熟悉Linux的工程師組成的大型社群。
不斷改進的Linux核心
??? 然而,在面對特定嵌入式應用時,Linux仍存在許多挑戰,如內存空間有限,或是需要實時確定性以及高安全性能的應用。而工具鏈的改善、新的除錯工具和性 能、不斷演變的標準化努力等,都繼續提升Linux對于所有嵌入式應用的價值。在這其中,Linux核心的不斷改進異常重要。
??? Linux 核心是應用軟件采用的標準Linux API和處理器系統(應用軟件執行其上)底層硬件結構之間的接口。該核心是內部組件和外部可加載模塊的復雜組合,為應用程序的執行提供全面和穩定的處理環 境,提供安全消除軟件缺陷、在某種程度上防止硬件故障的能力。在開機循環期間,核心必須及時發現,并正確初始化核心系統處理器、系統內存、硬件驅動、視頻卡、USB端口、網絡卡和音訊處理器,而且要在開機循環期間提供是否成功的足夠指示。
??? 維持如此復雜的程序代碼收集很明顯是一個 嚴峻的挑戰。核心原始程序代碼被劃分為標準‘樹’結構,這樣子系統就能夠更好地彼此隔離,有助于實現幾個關鍵核心維護工作的分布。這種分工可大幅減少核心某 一部份產生重大變化對其他部份產生的影響。每個后續子系統的變更都將傳達給主要維護者,最終到達Linux核心最上游的維護者。這些變更通常稱為‘外掛程 式’,在標準格式下制作和應用。
??? 供貨商和開發人員將他們的知識反饋到開放原始碼社群以改進核心。Linux開放、分散的本 質,再加上背后強大的社群支持,使基于Linux的OS成為培養創新的良好選擇。由于供貨商和開發人員不斷分享他們所學到的知識,因此存在這樣的可能:當開發人員需要實現某種功能時,可以在Linux社群生態系統中找到并予以采用。
??? 商用Linux供貨商做了很多工作使Linux成為嵌入式應用中更加可行和吸引人的操作系統。
商用vs.開放原代碼
??? 當選擇Linux OS時,嵌入式Linux開發人員有兩個主要選擇:‘免費’版本,開發人員可以下載有開放原代碼授權的對象/原始程序代碼;商業發行版,由不同公司維護和支持的商用產品。
??? 目前,大多數開發人員使用的都是免費發行版。市場研究公司VDC一份針對目前Linux使用者的2007年調查中有這樣一個問題:請問您將在下一個項目中使用哪種Linux OS?結果高達71%的嵌入式系統工程師表示,愿意采用免費發行的Linux版本。
?
??? 圖1:為下一個項目計劃的Linux操作系統。
(資料來源:VDC/2007)
??? 由 于眾多嵌入式開發人員將在下一個設計項目中選擇Linux,因此,讓他們體認到免費發行版本固有的局限性非常重要。這些局限包括:缺乏豐富的Linux工 具;相較競爭的實時OS來說占用更多空間;為滿足實時要求最佳化Linux所面臨的挑戰;支持以及開發工具有限。也就是說,‘免費’意味著不花錢使用,但 并非零成本。
‘免費’≠‘零’成本
??? 除了決定使用商用或免費Linux版本,開發 人員還必須認識到其除錯/開發工具的能力和局限。嵌入式SoC領域任何有意義的設計,都要求針對嵌入式領域的高度整合的軟件開發工具。從編譯器到應用各個 環節的開放原始碼工具,都期望能創造良好的生產品質。開發人員期望這些工具能與更短的學習曲線無縫結合。
??? 充分發揮嵌入式 Linux免費發行版的優勢,已經成為消費產品領域被廣泛接收的現實。在這些市場上,產品執行率非常高,對程序代碼的增加非常頻繁,而且產品的銷售成本至關 重要,所有這些都使得開放原始碼模式極具吸引力。但是,人們通常希望開放原始碼工具能夠與生產品質密切相關,‘免費’和‘商用’并不同義。必須對核心和 SoC組件互動有深刻的了解,才能整合開放原始碼/免費軟件,并為處理器核心提供無縫除錯環境的工具。因此,需要專業知識才能使目前的開放原始碼工具順利 工作。
??? 現在有若干種‘免費軟件’除錯解決方案,設計人員必須全面了解其局限性。例如,針對Linux核心最受歡迎的免費軟件除錯器是KGDB,但主要缺點是KGDB會要求重新編譯核心。這對產品已經部署到現場的應用來說并不可行。修補核心還可能導入影響系統性能的程序代碼變化。
?
??? GDBServer 是另一個針對應用除錯的頗受歡迎的免費軟件除錯器,但它也受到了嚴格限制。主要問題是缺乏對同時除錯大量執行緒/進程的支持。隨著除錯的執行緒/進程數不 斷增加,GDBServer性能迅速惡化,導致響應時間太慢,進而使目標系統出現故障。其它問題還涉及到:不能在相同的目標連接上除錯驅動程序和應用;除 錯設備驅動程序和除錯共享庫。了解特定應用的除錯需求非常重要,應據此選擇相應工具。