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