嵌入系統(tǒng)調(diào)試揭秘
要點(diǎn) * 嵌入系統(tǒng)的工程不僅是要使它們實(shí)現(xiàn)某些性能,而且還要防止它們表示出不需要的性能?! ? 設(shè)計(jì)者可能會(huì)用調(diào)試工具作為設(shè)計(jì)輔助方法,因?yàn)闆]有更好的方式完成任務(wù)。 * 嵌入系統(tǒng)的調(diào)試是一個(gè)跨學(xué)科的活動(dòng),跨越了硬件、軟件和領(lǐng)域知識(shí)的界限。 《嵌入系統(tǒng)設(shè)計(jì)》每年都有針對(duì)嵌入系統(tǒng)開發(fā)人員的年度市場(chǎng)調(diào)查,其中對(duì)設(shè)計(jì)活動(dòng)的改進(jìn)要求最多的一個(gè)領(lǐng)域就是調(diào)試工具(參考文獻(xiàn)1)。在為期三年的調(diào)查中,有這種要求的受訪者百分比一直穩(wěn)定在大約32%。與之相比,尋求改進(jìn)編程工具的受訪者比例則從高達(dá)25%下降到10%。為什么現(xiàn)代調(diào)試工具未能像軟件編程工具一樣做得那么好,這是值得探討的問題,尤其是每年的調(diào)查亦證實(shí),測(cè)試與調(diào)試階段仍是項(xiàng)目計(jì)劃中耗時(shí)最多的部分,達(dá)24%。在全部三年的調(diào)查中,居第三位的改進(jìn)要求是進(jìn)度安排的項(xiàng)目管理功能(見附文“COCOMO與基于事實(shí)的進(jìn)度安排”)?! 」こ痰囊粋€(gè)明確方向是針對(duì)某個(gè)問題,建立能完成和提交一個(gè)實(shí)用方案的系統(tǒng)。軟件編程工具注重于軟件工程的創(chuàng)建方面。調(diào)查結(jié)果表明,在提高創(chuàng)建能解決問題代碼的生產(chǎn)率方面,編程工具走對(duì)了路。而調(diào)試工具的百分比沒有隨編程工具呈下降趨勢(shì)成為一個(gè)主要的問題,這表明軟件調(diào)試工具不只是編程工具的擴(kuò)展,不只是用于幫助工程師改正錯(cuò)誤或不正確的編碼。 關(guān)于工程有一種不太清晰,幾乎是隱含的問題,即設(shè)計(jì)者不僅要設(shè)計(jì)出能完成所需功能的系統(tǒng),而且還要消除或減輕環(huán)境不確定性和可變性可能帶來的不良狀態(tài),因此系統(tǒng)要在各種工作條件下保持一致的性能。工程的這個(gè)隱秘一面可能揭示了軟件調(diào)試工具所面臨的挑戰(zhàn),尤其是對(duì)嵌入系統(tǒng)設(shè)計(jì)者。除了要應(yīng)對(duì)處理器架構(gòu)對(duì)性能、功能、通信、延遲和功耗的實(shí)際約束以外,嵌入系統(tǒng)一般還要處理與真實(shí)世界的接口,這些接口展現(xiàn)的行為更難以對(duì)整個(gè)使用場(chǎng)景作出預(yù)測(cè)或特性描述?! ∪绻{(diào)試只涉及尋找和改正軟件的邏輯錯(cuò)誤,那么一個(gè)指令集仿真器與周期精確的仿真器相結(jié)合,就能為嵌入系統(tǒng)行為提供足夠的可見度,支持調(diào)試工作。很多處理器架構(gòu)和軟件開發(fā)工具套件都已有了這類仿真器。仿真器還可以使系統(tǒng)停止運(yùn)行,以便檢查仿真系統(tǒng)的任何部分。遺憾的是,這些類型仿真器一般不能對(duì)內(nèi)存、總線架構(gòu)、外設(shè)、傳感器和促動(dòng)器之間的精確交互與延遲提供完整的可見性,并會(huì)使仿真器運(yùn)行得更慢?! ∠到y(tǒng)級(jí)仿真器有能力超越軟件執(zhí)行引擎,仿真系統(tǒng)其它部分的相互作用,如Vast公司的虛擬系統(tǒng)原型工具和Virtutech公司的Simics虛擬平臺(tái)。這些類型的開發(fā)工具使軟件開發(fā)人員能夠在物理硬件可用以前就在目標(biāo)產(chǎn)品上工作;它們還通過系統(tǒng)級(jí)故障注入以及與其它開發(fā)活動(dòng)的并行增量整合,幫助開發(fā)人員完成系統(tǒng)集成和測(cè)試工作。對(duì)于復(fù)雜的高端系統(tǒng),這些類型的系統(tǒng)可以用作先期工具,或支持硬件在環(huán)仿真。這些工具支持預(yù)建的系統(tǒng),并將預(yù)建的部件或塊裝配成一個(gè)系統(tǒng)。通過附加工具,它們還提供建立新部件并集成到系統(tǒng)中的能力。 系統(tǒng)級(jí)仿真要面臨的一個(gè)障礙是成本,它的價(jià)格可能會(huì)比現(xiàn)有針對(duì)處理器的仿真器高出數(shù)千美元。在調(diào)查中,調(diào)試工具沒有跟隨編程工具的下降趨勢(shì),可能并非因?yàn)樗鼈儾荒軡M足嵌入系統(tǒng)設(shè)計(jì)者的功能需求,而是因?yàn)榫邆渌韫δ苤С值母叨苏{(diào)試工具價(jià)格仍然超出了某些關(guān)鍵性的門限。有意思的是,這個(gè)價(jià)格門限低于硬件設(shè)計(jì)工具,盡管多數(shù)軟件開發(fā)工具似乎支持在新系統(tǒng)中增加更多的復(fù)雜內(nèi)容?! ∵^去十年來,基于專利金的操作系統(tǒng)與開發(fā)工具許可模型已受到嚴(yán)重侵蝕。Linux作為一種嵌入系統(tǒng)操作系統(tǒng)日益成功,這主要源于開源軟件的價(jià)格優(yōu)勢(shì)。另外,芯片供應(yīng)商的很多嵌入系統(tǒng)工具都采用開源Eclipse平臺(tái)管理自己的開發(fā)工具,顯著降低了建立這些工具的成本,簡(jiǎn)化了最終用戶對(duì)工具的配置,使他們?cè)诠ぷ髦袑W⒂诠ぞ咛匦?,而不是主控環(huán)境的觀感。這種說法并非表明調(diào)試工具不會(huì)在定價(jià)方面追隨相同的下跌趨勢(shì)。極端來說,很多處理供應(yīng)商都提供小型評(píng)估套件,開發(fā)者花不到100美元就能對(duì)系統(tǒng)作實(shí)驗(yàn)。事實(shí)上你會(huì)發(fā)現(xiàn),今天很多數(shù)百美元開發(fā)套件包含的功能在十年前只出現(xiàn)在貴得多的工具中?! ‘?dāng)片上調(diào)試電路擴(kuò)張到流行的處理器架構(gòu)上時(shí),業(yè)界可能會(huì)繼續(xù)看到較高端的調(diào)試功能試圖進(jìn)入較低價(jià)開發(fā)工具套件。很多處理器(包括小型的8 bit處理器)都包含一些專利的片上調(diào)試電路。Atmel公司AVR開發(fā)工具總監(jiān)Dag Arne Braend稱:“片上調(diào)試系統(tǒng)是芯片中最復(fù)雜的電路之一,因?yàn)樗仨毰c所有子系統(tǒng)作非侵入性互連。很難判定這種復(fù)雜性所引發(fā)的額外成本,因?yàn)閷?duì)某些東西,很多系統(tǒng)永遠(yuǎn)都不會(huì)用于現(xiàn)場(chǎng)器件中?!薄 ?shí)時(shí)跟蹤看來是下一個(gè)新興的片上調(diào)試功能,采用ARM核心并帶ETM(嵌入跟蹤微單元)的處理器能夠?qū)崿F(xiàn)處理器的指令下載和數(shù)據(jù)跟蹤。Cortex-M3核心支持一種新的實(shí)時(shí)跟蹤能力。跟蹤能夠?qū)崿F(xiàn)反序指令執(zhí)行,有越來越多的仿真器正支持這種功能。Green Hills Software公司的Multi Time Machine調(diào)試套件能夠使開發(fā)者在片上調(diào)試與仿真器調(diào)試之間轉(zhuǎn)換,支持仿真的反序執(zhí)行。 IEEE-ISTO 5001-2003是Nexus 5001 Forum針對(duì)全球嵌入處理器調(diào)試方法的開放式工業(yè)標(biāo)準(zhǔn),它為嵌入處理器的軟件開發(fā)與調(diào)試提供了一種通用接口。Nexus 5001 Forum最初關(guān)注點(diǎn)是汽車傳動(dòng)應(yīng)用,但結(jié)果是發(fā)展成為一個(gè)通用標(biāo)準(zhǔn)。Nexus 5001 Forum成員遍及半導(dǎo)體、開發(fā)工具和汽車電子業(yè)。隨著硅片成本不斷下跌,以及片上調(diào)試接口與功能的標(biāo)準(zhǔn)化,處理器供應(yīng)商很可能將高端的片上調(diào)試能力從高端處理器帶入較低端的處理器,以提供更強(qiáng)大的片上可視性。這將成為獲得設(shè)計(jì)成功的必需步驟。 設(shè)計(jì)輔助 針對(duì)系統(tǒng)級(jí)仿真工具的較高價(jià)格,Virtutech公司首席執(zhí)行官John Lambert提供了一個(gè)立即可行的遷移因素。他說:“有一個(gè)開發(fā)團(tuán)隊(duì)通常用我們的平臺(tái)作為他們當(dāng)前項(xiàng)目的前后端支持,但一旦他們使用了這一工具,就更加徹底理解了它的價(jià)值,并用于未來項(xiàng)目設(shè)計(jì)周期的兩端?!薄 ∵@個(gè)理論表明,當(dāng)嵌入系統(tǒng)設(shè)計(jì)者稱自己需要更好的調(diào)試工具時(shí),他們的原意可能并非如此。調(diào)試工具的主要功能是提供系統(tǒng)運(yùn)行時(shí)狀態(tài)的可視性。當(dāng)一個(gè)系統(tǒng)包含了復(fù)雜接口、傳感器和促動(dòng)器時(shí),調(diào)試器可能是用于檢查這些外部系統(tǒng)功能的最方便工具,因?yàn)橐獮樗羞@些緊密耦合的子系統(tǒng)生成準(zhǔn)確的信號(hào)是一個(gè)重大挑戰(zhàn)。因此,你可能會(huì)把它們稱為調(diào)試工具,而不是設(shè)計(jì)輔助工具,一個(gè)原因是只有到了項(xiàng)目的系統(tǒng)集成階段,這些工具的功能才可以使用,這時(shí)調(diào)試已走入正軌?! ⒄{(diào)試工具看作設(shè)計(jì)輔助工具提供了一個(gè)有價(jià)值的觀點(diǎn),尤其是在做閉環(huán)控制的系統(tǒng)時(shí),此時(shí)輸出會(huì)影響系統(tǒng)的輸入。閉環(huán)控制系統(tǒng)的行為驗(yàn)證可能是一個(gè)挑戰(zhàn)。我曾用最終系統(tǒng)軟件和傳感器硬件,對(duì)一只傳感器要在一系列預(yù)期環(huán)境中使用的自動(dòng)增益控制算法作了性能特性描述和驗(yàn)證(參考文獻(xiàn)2)。在一個(gè)純軟件調(diào)試環(huán)境下,不存在對(duì)這種條件的仿真方法,甚至對(duì)類似事情的測(cè)試,因?yàn)閭鞲衅鳑]有精確模型。結(jié)果是,我及時(shí)發(fā)現(xiàn)了傳感器的一種未知特性。 第二個(gè)例子是獲取系統(tǒng)集成測(cè)試數(shù)據(jù),并用一個(gè)數(shù)據(jù)表程序運(yùn)行這些數(shù)據(jù),以分析閉環(huán)控制算法的功能是否正常。同樣,沒有哪種軟件仿真或設(shè)計(jì)工作可以真正將設(shè)備聯(lián)系在一起并收集數(shù)據(jù);在集成期間運(yùn)行測(cè)試要比試圖建立一次精確的原型系統(tǒng)模型更有性價(jià)比。但是,我確實(shí)使用獲得的系統(tǒng)行為信息,為下一代開發(fā)工作建立了仿真模型。 調(diào)試嵌入系統(tǒng)的另一個(gè)特點(diǎn)是,問題并非只來自軟件錯(cuò)誤。不過,因?yàn)樵谲浖行薷拇蠖鄶?shù)錯(cuò)誤要更有成本效益和日程效益,設(shè)計(jì)者通常還是用軟件修復(fù)來解決問題。然而,當(dāng)軟件變化時(shí)做一個(gè)修復(fù)和記錄修復(fù),與尋找、診斷和確定一個(gè)可接受的分辨率所需要的跨學(xué)科合作工作量不相適應(yīng)。事實(shí)上,很多嵌入系統(tǒng)調(diào)試問題都是跨學(xué)科的問題,需要對(duì)系統(tǒng)硬件、軟件和特定域約束條件的理解和專業(yè)知識(shí)。如果做系統(tǒng)集成測(cè)試的人恰好是三個(gè)方面的專家,那就沒有問題了,但這種人寥若晨星?! ∮捎谇度胂到y(tǒng)調(diào)試的跨學(xué)科特性,調(diào)試工具與工程服務(wù)就有了填補(bǔ)空缺的機(jī)會(huì)。僅僅因?yàn)檎{(diào)試工具能提供系統(tǒng)的某種可視性,而并不意味著開發(fā)者能用到這個(gè)特性。Green Hills Software公司首席技術(shù)官David Kleidermacher同意這個(gè)說法:“對(duì)開發(fā)者來說,工具中有太多選項(xiàng)需要大量的學(xué)習(xí)曲線,因此很多這類特性的使用率不高?!庇捎跁r(shí)間壓力,開發(fā)者傾向使用最簡(jiǎn)單的功能,而先進(jìn)的功能更多地是作為他們從前期項(xiàng)目中學(xué)到的一部分經(jīng)驗(yàn)。作為對(duì)這種認(rèn)識(shí)的一種響應(yīng),Green Hills公司在自己的Multi Time Machine調(diào)試工具中增加了“永遠(yuǎn)打開”(always-on)的跟蹤能力;跟蹤能力對(duì)開發(fā)者已越來越有用,因?yàn)槟J(rèn)條件幾乎不會(huì)讓開發(fā)者付出什么成本,不需要使用學(xué)習(xí)曲線,并且比顯式地打開跟蹤-捕捉功能更有效率?! ¢_發(fā)者調(diào)試嵌入系統(tǒng)時(shí)面臨的另一個(gè)挑戰(zhàn)是測(cè)試臺(tái)的搭建與配置。這是一個(gè)低成本但高價(jià)值的問題,很多工具供應(yīng)商都嘗試在自己的工具集中解決這個(gè)問題。很多評(píng)估板的電源現(xiàn)在都帶有USB連接,大大簡(jiǎn)化了這些電路板的電源設(shè)置工作。在嵌入系統(tǒng)與主控系統(tǒng)之間傳送用戶采集數(shù)據(jù)的接口現(xiàn)在也更易于使用,并且有了在不久的將來用無線接口作調(diào)試的說法。很多開發(fā)工具套件都提供一種預(yù)先配置好的設(shè)置,使開發(fā)者對(duì)電路板作測(cè)試,確認(rèn)電路板及其工具都能在一種已知環(huán)境下正常工作。德州儀器公司技術(shù)研究員Reid Tatge解釋說,該公司開發(fā)工具的一個(gè)目標(biāo)就是使嵌入開發(fā)工作像“wintel”系統(tǒng)(即采用英特爾公司微處理器和微軟公司W(wǎng)indows操作系統(tǒng))的開發(fā)一樣,從而簡(jiǎn)化設(shè)計(jì)者使用自己嵌入處理器的學(xué)習(xí)曲線?! icrium公司C/Probe的目標(biāo)是使開發(fā)者能更簡(jiǎn)便地實(shí)現(xiàn)自己系統(tǒng)行為的快速虛擬化。該工具包括兩部分軟件:其一運(yùn)行在主控系統(tǒng)上,完成數(shù)據(jù)分析與顯示,另一個(gè)是在目標(biāo)系統(tǒng)上裝入的一個(gè)代碼段。這段代碼負(fù)責(zé)管理I/O與資源請(qǐng)求,以及與主控系統(tǒng)的通信。盡管它是一種侵入性的嵌入系統(tǒng)代碼儀表化方式,但它能在系統(tǒng)不掛起情況下訪問系統(tǒng)。該工具現(xiàn)售價(jià)約1千美元。 National Instruments公司的LabView提供強(qiáng)大的虛擬化支持,并包括一個(gè)圖形編程功能。它還帶有圍繞各個(gè)應(yīng)用域而組織的內(nèi)置測(cè)量與分析功能,這樣開發(fā)者就可以選擇要使用的功能。調(diào)試虛擬化最適用于數(shù)據(jù)流執(zhí)行模型。包含硬件、軟件和特定域功能的工具套件起始價(jià)約為1千美元,但如果需要增加大量特定域工具,則價(jià)格可能超過1萬美元?! ∵@種類型的定價(jià)靈活性表明很多工具供應(yīng)商都面臨的一個(gè)挑戰(zhàn);客戶希望根據(jù)不同的接觸點(diǎn),只支付到最適當(dāng)?shù)目梢曅运?。例如,有些開發(fā)者面向一個(gè)操作系統(tǒng),而并不關(guān)心其下處理器架構(gòu)的細(xì)節(jié)。其它開發(fā)者則面向指令集架構(gòu)。當(dāng)然還有一些開發(fā)者關(guān)注較低級(jí)的交互。如果在架構(gòu)層,它連接系統(tǒng)中的所有資源?! 〖词构ぞ哚槍?duì)一個(gè)設(shè)計(jì)者需求提供了可視性,但知道要尋找的內(nèi)容則是另一個(gè)困難,因?yàn)槠舷到y(tǒng)和主控系統(tǒng)之間的通信鏈接限制了捕捉數(shù)據(jù)的數(shù)量與類型,這些數(shù)據(jù)可以給主控系統(tǒng)作實(shí)時(shí)分析和事后分析。另外,處理器供應(yīng)商并非總會(huì)公開自己在芯片中實(shí)現(xiàn)的特性;他們可能選擇隱藏這些特性,因?yàn)樗鼈兪菍?shí)驗(yàn)性的,供應(yīng)商還沒有準(zhǔn)備好為它們提供健壯的生產(chǎn)級(jí)支持。但是,內(nèi)部工具與專業(yè)的現(xiàn)場(chǎng)應(yīng)用工程服務(wù)可以完全利用這些隱藏的資源。而從能在有限情況下的專家式使用,到工具足夠健壯,可以在各種場(chǎng)合和專業(yè)水平下的使用,兩者間還有相當(dāng)大的差距。不幸的是,工程服務(wù)是勞動(dòng)力密集型工作,價(jià)格高昂,其成本遠(yuǎn)遠(yuǎn)超出大多數(shù)軟件開發(fā)預(yù)算的門檻,除非是遇到最緊急的查錯(cuò)情況?! ∫@得持續(xù)發(fā)展,調(diào)試工具就需要獲得硬件、軟件和領(lǐng)域?qū)<业南嚓P(guān)信息輸入。在某些情況下,處理器客戶或工具供應(yīng)商不太愿意分享自己艱難獲得的經(jīng)驗(yàn)。如果他們與工具開發(fā)商分享關(guān)鍵的經(jīng)驗(yàn),就可能縮短競(jìng)爭(zhēng)對(duì)手的學(xué)習(xí)曲線,避免一些計(jì)劃安排與工程專業(yè)成本,如學(xué)習(xí)如何使嵌入系統(tǒng)在某種方式下工作?,F(xiàn)場(chǎng)應(yīng)用工程師的經(jīng)驗(yàn)可以幫助使工具開發(fā)商具備必要的洞察力,使調(diào)試工具在這些情況下更加有用?! 资陙?,嵌入系統(tǒng)已實(shí)現(xiàn)了多處理器設(shè)計(jì),但對(duì)于緊密耦合的多核心和多處理器系統(tǒng),仍在持續(xù)出現(xiàn)新的機(jī)會(huì)。另外,越來越多的嵌入系統(tǒng)正在自己系統(tǒng)內(nèi)使用更多的傳感器,以充分獲取和掌控更復(fù)雜的行為。這些嵌入系統(tǒng)中的新興趨勢(shì)將要求調(diào)試工具提供更強(qiáng)大的一致性和相應(yīng)的虛擬化能力,因?yàn)樽酉到y(tǒng)之間的交互作用將比以往更加復(fù)雜。參考文獻(xiàn)1. Nass, Richard, “Annual study uncovers the embedded market,” Embedded.com, Sept 2, 2007. 2. Cravotta, Robert, “Valuing Uncertainty,” EDN, Jan 5, 2006, pg 38.
我要收藏
點(diǎn)個(gè)贊吧
轉(zhuǎn)發(fā)分享
自動(dòng)對(duì)焦:Cravotta,EDN技術(shù)編輯
評(píng)論排行