專(zhuān)家觀(guān)點(diǎn):你必須了解的嵌入式Linux特性
此外,Linux在行動(dòng)設備中也獲得了青睞。市調機構In-Stat的報告顯示,到2012年,中國基于行動(dòng)Linux的智能手機出貨量將達到中國智能手機總出貨量的25.4%。
相較其它典型的專(zhuān)有商用OS,Linux蓬勃發(fā)展的原因在于其是開(kāi)原始碼、成本低、使用快速安全。與其它OS相較,它能夠更好地進(jìn)行‘剪裁’,且只占用較小空間。利用Linux,再加上來(lái)自開(kāi)放原始碼社群的持續支持,工程師能夠使用和控制原始程序代碼。開(kāi)放原始碼社群是由熟悉Linux的工程師組成的大型社群。
不斷改進(jìn)的Linux核心
然而,在面對特定嵌入式應用時(shí),Linux仍存在許多挑戰,如內存空間有限,或是需要實(shí)時(shí)確定性以及高安全性能的應用。而工具鏈的改善、新的除錯工具和性 能、不斷演變的標準化努力等,都繼續提升Linux對于所有嵌入式應用的價(jià)值。在這其中,Linux核心的不斷改進(jìn)異常重要。
Linux 核心是應用軟件采用的標準Linux API和處理器系統(應用軟件執行其上)底層硬件結構之間的接口。該核心是內部組件和外部可加載模塊的復雜組合,為應用程序的執行提供全面和穩定的處理環(huán) 境,提供安全消除軟件缺陷、在某種程度上防止硬件故障的能力。在開(kāi)機循環(huán)期間,核心必須及時(shí)發(fā)現,并正確初始化核心系統處理器、系統內存、硬件驅動(dòng)、視頻卡、USB端口、網(wǎng)絡(luò )卡和音訊處理器,而且要在開(kāi)機循環(huán)期間提供是否成功的足夠指示。
維持如此復雜的程序代碼收集很明顯是一個(gè)嚴峻的挑戰。核心原始程序代碼被劃分為標準‘樹(shù)’結構,這樣子系統就能夠更好地彼此隔離,有助于實(shí)現幾個(gè)關(guān)鍵核心維護工作的分布。這種分工可大幅減少核心某 一部份產(chǎn)生重大變化對其他部份產(chǎn)生的影響。每個(gè)后續子系統的變更都將傳達給主要維護者,最終到達Linux核心最上游的維護者。這些變更通常稱(chēng)為‘外掛程 式’,在標準格式下制作和應用。
供貨商和開(kāi)發(fā)人員將他們的知識反饋到開(kāi)放原始碼社群以改進(jìn)核心。Linux開(kāi)放、分散的本 質(zhì),再加上背后強大的社群支持,使基于Linux的OS成為培養創(chuàng )新的良好選擇。由于供貨商和開(kāi)發(fā)人員不斷分享他們所學(xué)到的知識,因此存在這樣的可能:當開(kāi)發(fā)人員需要實(shí)現某種功能時(shí),可以在Linux社群生態(tài)系統中找到并予以采用。
商用Linux供貨商做了很多工作使Linux成為嵌入式應用中更加可行和吸引人的操作系統。
商用vs.開(kāi)放原代碼
當選擇Linux OS時(shí),嵌入式Linux開(kāi)發(fā)人員有兩個(gè)主要選擇:‘免費’版本,開(kāi)發(fā)人員可以下載有開(kāi)放原代碼授權的對象/原始程序代碼;商業(yè)發(fā)行版,由不同公司維護和支持的商用產(chǎn)品。
目前,大多數開(kāi)發(fā)人員使用的都是免費發(fā)行版。市場(chǎng)研究公司VDC一份針對目前Linux使用者的2007年調查中有這樣一個(gè)問(wèn)題:請問(wèn)您將在下一個(gè)項目中使用哪種Linux OS?結果高達71%的嵌入式系統工程師表示,愿意采用免費發(fā)行的Linux版本。
圖1:為下一個(gè)項目計劃的Linux操作系統。
(資料來(lái)源:VDC/2007)
由于眾多嵌入式開(kāi)發(fā)人員將在下一個(gè)設計項目中選擇Linux,因此,讓他們體認到免費發(fā)行版本固有的局限性非常重要。這些局限包括:缺乏豐富的Linux工 具;相較競爭的實(shí)時(shí)OS來(lái)說(shuō)占用更多空間;為滿(mǎn)足實(shí)時(shí)要求最佳化Linux所面臨的挑戰;支持以及開(kāi)發(fā)工具有限。也就是說(shuō),‘免費’意味著(zhù)不花錢(qián)使用,但并非零成本。
‘免費’≠‘零’成本
除了決定使用商用或免費Linux版本,開(kāi)發(fā)人員還必須認識到其除錯/開(kāi)發(fā)工具的能力和局限。嵌入式SoC領(lǐng)域任何有意義的設計,都要求針對嵌入式領(lǐng)域的高度整合的軟件開(kāi)發(fā)工具。從編譯器到應用各個(gè) 環(huán)節的開(kāi)放原始碼工具,都期望能創(chuàng )造良好的生產(chǎn)品質(zhì)。開(kāi)發(fā)人員期望這些工具能與更短的學(xué)習曲線(xiàn)無(wú)縫結合。
充分發(fā)揮嵌入式 Linux免費發(fā)行版的優(yōu)勢,已經(jīng)成為消費產(chǎn)品領(lǐng)域被廣泛接收的現實(shí)。在這些市場(chǎng)上,產(chǎn)品執行率非常高,對程序代碼的增加非常頻繁,而且產(chǎn)品的銷(xiāo)售成本至關(guān) 重要,所有這些都使得開(kāi)放原始碼模式極具吸引力。但是,人們通常希望開(kāi)放原始碼工具能夠與生產(chǎn)品質(zhì)密切相關(guān),‘免費’和‘商用’并不同義。必須對核心和 SoC組件互動(dòng)有深刻的了解,才能整合開(kāi)放原始碼/免費軟件,并為處理器核心提供無(wú)縫除錯環(huán)境的工具。因此,需要專(zhuān)業(yè)知識才能使目前的開(kāi)放原始碼工具順利 工作。
現在有若干種‘免費軟件’除錯解決方案,設計人員必須全面了解其局限性。例如,針對Linux核心最受歡迎的免費軟件除錯器是KGDB,但主要缺點(diǎn)是KGDB會(huì )要求重新編譯核心。這對產(chǎn)品已經(jīng)部署到現場(chǎng)的應用來(lái)說(shuō)并不可行。修補核心還可能導入影響系統性能的程序代碼變化。
GDBServer 是另一個(gè)針對應用除錯的頗受歡迎的免費軟件除錯器,但它也受到了嚴格限制。主要問(wèn)題是缺乏對同時(shí)除錯大量執行緒/進(jìn)程的支持。隨著(zhù)除錯的執行緒/進(jìn)程數不斷增加,GDBServer性能迅速惡化,導致響應時(shí)間太慢,進(jìn)而使目標系統出現故障。其它問(wèn)題還涉及到:不能在相同的目標連接上除錯驅動(dòng)程序和應用;除錯設備驅動(dòng)程序和除錯共享庫。了解特定應用的除錯需求非常重要,應據此選擇相應工具。
在決定將選擇哪種OS時(shí),開(kāi)發(fā)人員的重點(diǎn)是選擇一個(gè)完全支持其特定處理器的操作系統,并能降低總成本和縮短上市時(shí)間。這意味著(zhù)大部份核心維護已經(jīng)完成,因此 若他們遇到什么問(wèn)題或挑戰,處理器供貨商及其生態(tài)系統支持業(yè)者就能幫助解決這些問(wèn)題。此外,利用供貨商已正式測試的核心版本,客戶(hù)在設計過(guò)程中即使不能完全消除,也可以不斷降低風(fēng)險。特定處理器Linux生態(tài)系統可以利用一套標準配置和測試平臺,快速而準確地隔離客戶(hù)應用中的差異。
從處理器供貨商的角度來(lái)看,積極參與與其核心相關(guān)的Linux核心的維護非常重要。這些供貨商最有能力實(shí)現額外的新功能,以及增加原有核心功能的穩定性,因為他們了解這些核心設計中的所有‘秘密’細節。
以MIPS為例,作為處理器IP公司,MIPS必須確保其新的處理器核心完全整合在Linux原始程序代碼樹(shù),且所有的變更都透過(guò)對舊核心和平臺的回歸測試進(jìn)行正確驗證。MIPS的核心維護人員必須‘簽署’(核準)每個(gè)建議的‘外掛程序’。這些外掛程序由MIPS及其客戶(hù)提交,可強化核心功能,并改善對現有核 心的支持和偶爾的錯誤修復。
對于像MIPS這樣的IP核心供貨商和Linux社群來(lái)說(shuō),最有益的方式是確保其核心的所有性能和電源管理特性能夠在Linux核心中完全實(shí)現,以便為采用Linux作為設計核心OS的使用者最佳化使用者體驗,并讓數以百計的Linux核心編程人員進(jìn)行核心增強的同行審查。
為了實(shí)現最佳單位面積運算能力(MIPS/每平方毫米)和最佳單位功耗運算能力(MIPS /mW),許多處理器都利用了多核心技術(shù),在幾個(gè)以較低時(shí)脈頻率執行的核心間分配處理負載。這些應用能夠以對稱(chēng)多處理(SMP)的方式進(jìn)行分配,其中一項任務(wù)是核心間的基本平分;或者采用非對稱(chēng)多處理(AMP),在這里特定任務(wù)被分配給一個(gè)特定核心。不論是哪種方式,Linux核心中必須有適當的支持允許 實(shí)現這些編程模型,同時(shí)對應用開(kāi)發(fā)者盡可能的透明。
另一個(gè)重要的Linux核心最佳化例子是電源管理。在今天的綠色運算環(huán)境中,電源管理日漸重要,不僅展現在要求大幅延長(cháng)電池壽命的可攜式設備方面,而且展現在需要盡量減少能源浪費和熱量的AC供電系統中。目前一個(gè)典型的手機必須管理20多個(gè)不同的電源層,還不包括應用處理器SoC內和核心本身的電壓島。
目前Linux核心電源管理支持主要集中在通過(guò)ACPI的標準PC。但是ACPI接口并不適合先進(jìn)的多核心SoC,因為后者必須將一致性電源管理方案擴展至多個(gè)核心、內部SoC外圍設備以及最后的外部系統外圍設備(如RF功率放大器)。
在MIPS,我們執行了一個(gè)先進(jìn)的電源管理IP模塊,稱(chēng)為叢集電源控制器(CPC),在具體的1004K執行中,它允許對每個(gè)核心的單獨控制,使核心可以進(jìn)入或離開(kāi)一致性作業(yè),并在需要的情況下徹底關(guān)掉電源。這樣的電源管理模式能夠進(jìn)一步擴展,使核心電壓和頻率調變處于操作系統本身的控制之下。這個(gè)CPC模組的功能還必須擴展至Linux核心。
圖2:叢集電源控制器允許在特定的多核心架構中對每個(gè)核心進(jìn)行單獨控制。
Linux開(kāi)發(fā)工具
當考慮處理器對OS的支持時(shí),開(kāi)發(fā)工具很重要。最新一代Linux開(kāi)發(fā)工具利用了芯片級儀器(On-Chip Instrumentation)對除錯器進(jìn)行‘硬件協(xié)助’。這些工具都是特定架構的,并非所有處理器都支持這種獨特的除錯方法。例如,目前有的 Linux工具可以剖析Linux核心及加載模塊。這些工具依賴(lài)于:處理器能夠以極高的速度對PC緩存器進(jìn)行透明采樣,并將這些信息傳送到除錯器。加上來(lái) 自加載模塊的符號信息(Linux設備驅動(dòng)程序的典型形式),開(kāi)發(fā)者能夠迅速剖析Linux核心,并確定設備驅動(dòng)程序可能會(huì )將什么要求放在核心上。最佳化 Linux核心性能可能對系統的性能產(chǎn)生巨大的影響。
備受稱(chēng)贊的核心評測工具是Linux事件分析器,能夠剖析整個(gè)系統。通常這些工具可擷取目標內產(chǎn)生的使用者選擇的Linux事件,然后根據時(shí)間透過(guò)圖形顯示這些事件。這些擷取有時(shí)能夠收集高達20秒的Linux系統活動(dòng)。
不管應用如何,開(kāi)發(fā)者都應該確保他們選擇的處理器架構包含一個(gè)無(wú)縫的開(kāi)發(fā)環(huán)境,包括編譯器、除錯器、性能和剖析工具。這種性質(zhì)的工具必須滿(mǎn)足上市時(shí)間要求, 并從一個(gè)嵌入式系統設計中獲取最大的性能。投資在完全整合和經(jīng)過(guò)測試的廠(chǎng)商提供的工具和環(huán)境,包括完整的文件、支持論壇、呼叫中心、無(wú)證見(jiàn)解、整合、標 準,以及整個(gè)生態(tài)系統的連接,都可以縮短目前和未來(lái)設計上市時(shí)間。
Linux社群
經(jīng)過(guò)多年的發(fā)展,Linux核心已經(jīng)成為可擴展性最強、最可靠的操作系統之一,能夠支持從低階、單核到高階、多核的嵌入式設備。隨著(zhù)穩定、極為輕便的 Linux核心、數百個(gè)支持無(wú)版稅中介軟件組件、數以千計的Linux開(kāi)發(fā)者,以及越來(lái)越多的商用Linux軟件和服務(wù)供貨商的出現,Linux儼然已經(jīng)是一個(gè)有效的操作系統,不論是上市時(shí)間還是開(kāi)發(fā)成本都是如此。
我們鼓勵所有的開(kāi)發(fā)者在其下一個(gè)RTOS中考慮Linux,并尋找一個(gè)提供專(zhuān)用Linux支持、龐大的生態(tài)系統和除錯/開(kāi)發(fā)工具的處理器廠(chǎng)商,確保能迅速為市場(chǎng)提供高品質(zhì)的產(chǎn)品。當開(kāi)發(fā)者決定采用Linux時(shí),我們鼓勵他們──不論他們是采用‘免費’還是商用版本,一定要對社群有所回饋。只要我們持續維護、關(guān)注和關(guān)心核心,Linux就可以繼續成長(cháng)和發(fā)展,成為下一代嵌入式設備RTOS的選擇。
評論