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