摘要:敘述嵌入式計算係統在開發階段、生產環境和現場環境三種情況下的調測技術 和方法,以及如何在硬件和軟件設計中進行可觀測性和可測試性設計。 關鍵詞:在線測試 可觀測性 可測試性 BDM JTAG 引言 對於含有微處理器的裝置來說,調測總是軟件和硬件結合的。在產品開發的階段以排錯為 主,在產品開發後期以及生產和現場運行階段,則是以測試為主。不同的階段,調測的內 容、手段和使用的工具不盡相同。 測試接口並不是係統功能的一部分,測試接口設計本身也需要成本。對於小型簡單係統來 說,沒有必要也不允許(成本考慮)設計測試接口;對於複雜係統來說,設計測試接口的 花費是值得的。良好的測試接口設計可經縮短產品的開發周期,給產品維護、維修帶來便 利。 對於嵌入式計算係統來說,測試往往是軟件和硬件相結合的,既有借助於“正確”的軟件 來測試硬件,也有借助於“正確”的硬件來測試軟件。由於軟件設計人員和硬件設計人員 的技術隔膜,二者常常在出現問題後相互指責,難以界定是軟件還是硬件問題。對於嵌入 式係統的軟件設計人員 來說,必須對硬件有足夠的了解。這一點,和通用計算平台上的軟件設計是不同的;反之 ,硬件人員也必須能夠編寫一些測試軟件,以證明其設計的正確性。 1 開發階段的調製方法 1.1 RAM版本的目標係統調試 通過ICE(In-Circuit-Emulate)來調試目標板是開發人員最常用的手段。在產品開發初 期,由於各種軟件和硬件問題很多,通過仿真器並結合邏輯分析儀、示波器等硬件信號測 試工具能夠很好地發現問題。 在仿真器環境下,通過仿真器的監控軟件來控製用戶軟件的運行,使用斷點、單步跟蹤和 查看變量、CPU寄存器、存儲器的數值等手段來查找問題。由於仿真器的軟件和硬件需要 一定的CPU資源,用戶軟件在仿真器環境下運行和脫離仿真器後獨立運行是有區別的。好 的仿真器能夠盡量減小這 種區別。常見的仿真器從技術上區分有:單CPU仿真器、雙CPU仿真器和ROM仿真器。 在仿真器環境下,程序一般是在仿真器的RAM存儲器中運行的,所以這種階段也稱為“RA M版本的目標係統調試”。 1.2 ROM版本的目標係統調試 在仿真器環境下,目標板運行調試正確後,一般的做法是將應用程序寫入目標板的非易失 性存儲器中,讓目標板單獨運行。在很多情況下,目標板係統往往不能運行或者運行結果 和仿真器環境下不一致。而沒有連接仿真器,無法觀察各種軟件狀態,給分析問題造成一 定困難。在目標板上設 計指示電路有助於發現問題;在電路板上增加1個LED是最簡單也是很有效的方法。對於複 雜係統,可以設計1個數碼管顯示輸出接口,或者設計1個調試用串口,將調試信息發送到 PC機上顯示。 在使用PC機作為顯示輸出設備時,一般的做法是使用Winodws自帶的超級終端軟件,無需 另外編製程序。和前二種方法相比,該方法的接口信號是雙向的,調試者可以通過PC機輸 入信息到目標板中,設定顯示信息的類別。這一點,對於複雜係統的調試是很有價值的, CISCO公司的很多路由器 產品就使用這種方法來維護和調試。 2 生產階段的測試方法 生產階段的測試隻是對硬件電路或者係統進行測試。測試目的是為了對產品或者部件進行 分檢,找出有缺陷的產品。測試內容包括: *裸板測試——檢查未安裝元器件的電路板上的開路和短路缺陷; *成品生產缺陷分析——檢查已安裝元器件的電路板上焊點的短路和開路缺陷; *成品電氣性能測試——認證每個單元器件的上電運作; *產品功能測試——認證電路模塊的功能。 生產測試和開發階段的硬件測試不同,需要測試方法快速、能成批測試,易於在製造生產 線上安裝。在生產的不同階段使用的測試工具和技術也不相同。目前常用的測試工具和技 術有:人工視覺檢查(MVI)、在線測試(ICT)、自動光學測試(AOI)、自動X射線測試 (AXI)。其中人工視 醪饈裕∕VI)隻能用於小批量試製產品。 在線測試(ICT)是最常用的一種線路板測試方法:使用專門的針床與已焊接好的線路板 上的元器件接觸,通過針床在線路板上施加微小電壓來測試線路通斷、元件是否正確安裝 。由於需要為特定電路板設計專用夾具,適合於單一品種民用型家電線路板極大規模生產 的測試;缺點是在高密 鵲腟MT線路板測試困難。目前的替代解決辦法是使用光學方法測試(如AOI,AXI),或者 使用邊界掃描技術(即基於IEEE1394標準的JTAG測試接口)測試。後者需要IC或者線路板 支持此技術。 功能測試是生產過程的最後階段使用,測試線路板或者係統的功能指標,一般的功能測試 需要設計專用測試設備和測試軟件。 3 現場測試技術 現場測試分為三種情況:一種是在線測試,測試設備不停止運行;一種是停機測試,被測 試設備停止運行;第三種為脫機測試,將被測部件從運行現場取出,放到專用的測試裝備 上進行測試。從測試技術角度上說,後二者更容易進行各種測試;對於複雜係統來說,往 往故障和問題需要在設 備運行時才能發現和定位,必須進行在線測試。究竟采取哪種方式進行現場測試,取決於 故障狀況和實際應用是否允許立即停機。 開發階段產品和成熟產品的現場測試要求也不同:前者測試目的主要是發現設計中的問題 ,由產品開發人員進行;後者側重於發現使用中的問題和失效的部件,目的是更換部件, 由產品使用人員進行。(但測試方法和步驟也有可能是設計人員製定的。) 現場測試和試驗室測試的最大區別就是測試設備難以安裝和連接:線路板封閉在機箱中, 測試信號線很難引入,即使設備外殼上留有測試插座,測試信號線也需要很長,傳統的在 線仿真器在現場測試中無法使用。另一方麵,現場往往沒有實驗室裏的各種測試儀器和設 備,因此,必須有更好 的方法和手段來完成測試。 嵌入式處理器中目前有很多芯片具有類似Motorola公司683XX係列處理器的BDM調試接 口(詳見第5部分)。這種接口是串行的,處理器內部固化了調試微碼,為現場測試 帶來了方便。對於不具備這種接口的嵌入式計算係統,在係統設計時將關鍵信號點引出到 一個測試接口插座上,通過該插座可輸入測試激勵信號和觀察輸出信號;對於軟件測試, 可使用前文中所述的ROM板測試方法,外接顯示部件來觀察程序運行情況。 軟件現場調試的另外一個要求是程序應能夠現場下載,以便在發現問題後能夠修改軟件。 現場在線下載程序的方法有兩種:一種是使用具有ISP功能的處理(如Philips公司的P89 C51RD係列MCU等),另一種方案是將軟件設計成兩部分,一部分是應用功能軟件,另一部 分是完成前者下載到係 持械南略贗ㄐ湃砑。無論哪種方法,下載的主機均是PC機。如果需要達到遠程調試和下 載的目的,則要使用後一種方案。例如,在Echelon公司的Lonwork現場總線產品中,每個 節點中的程序均可以通過網絡下載,這種功能為多節點網絡係統的現場調試帶來了極大方 便。 4 可測試性設計 在產品開發初期,產品測試的目的是驗證產品設計的正確性,而可測試性部件的存在則能 加快測試速度,縮短產品開發周期;在生產階段,通過測試來剔除有缺陷的產品和部件; 在使用階段,測試則用於故障定位,找出失效的部件並更換或者維修。可見,產品的測試 在產品生命周期各階段 均有十分重要的作用。可測試性設計應該在產品設計初期就加以考慮,結合測試在不同階 段的作用來設計測試模塊和接口。 產品的可測試性設計要考慮的問題有:測試的目的、測試部件的位置、測試部件的基本要 素、內置測試部件與外部測試設備儀器之間的電氣和機械連接,添加測試部件對被測模塊 功能和性能的影響、測試部件的成本以及何時使用測試功能等。 如前所述,測試在產品不同階段是有差別的。在產品開發階段,很多參數需要定量和詳細 地進行測試,以驗證產品在各種不同情況下是否能正常工作;測試參數,測試點較多,可 以方便地連接各種外部測試儀器,也不需要考慮添加測試部件所帶來的附加成本。在產品 生產和使用階段,測試 的節點和參數數量也相對減少,測試一般是定性的,無需借助於外部設備的自測試,成本 因素也必須考慮。 測試部件一般位於被測部件的接口和邊界位置上,如圖上所示,用於產品控製被測部件的 激勵信號和采樣被測部件的輸出信號。測試部件一般由測試信號源、信號傳輸通道、測試 觀察裝置等組成。測試部件可以完全包含在被測部件中,也可部分位於外部(如外接信號 源和示波器等)。對於 自動測試,測試部件還包括被測部件的預期輸出存儲部件比較部分。 在一個係統中,如何劃分模塊,確定測試位置(即模塊的邊界)是關係到可測試性設計是 否合理的首要問題。模塊間最小相關原則和模塊內最小相似原則是兩個重要依據:前者保 證測試可以獨立進行,不需要很多其它模塊的配合;後者可以使測試能正確反映被測模塊 的大部分工況,不至於 漏測很多工作狀態。 很多情況下,從被測模塊的邊界直接引出信號有困難,測試信號需要經過其它模塊引入到 被測模塊上。如果作為信號路徑的模塊對信號特征沒有改變,則稱這種測試路徑是透明的 ,路徑模塊必須能在旁路模式和正常工作模式之間切換,實現起來有局限性。對於硬件來 說,最簡單的透明路徑 是使用跳線。 對於簡單嵌入式係統來說,測試一般包括上電自測試和人為測試。後者在故障出現時進行 。對於複雜係統來說,還包括定時自動測試,比如在大型程控交換機和飛機機載電子設備 的運行過程中,均定時進行自檢。 可測試性設計還應考慮測試功能所使用對象的不同。產品設計人員、產品使用人員和產品 維護人員對測試內容的要求是同的,需要進行分層次的可測試性設計。 對於硬件和係統的可測試性設計已有IEEE1149.1/4/5等標準可以借鑒,對於單純的軟件測 試,目前尚無具體和統一的標準,隻有諸如代碼格式分析、白盒測試、黑盒測試、覆蓋測 試等測試方法。軟件測試的途徑有兩個。一是在源代碼中增加大量測試代碼,使用條件編 譯指令來控製形成調試 、測試和最終發布等不同版本。調測版本的代碼規模要比最終的發布版本大很多,在問題 解決後,一般將臨時性測試代碼通過編譯開關屏蔽。另外一個軟件測試途徑是使用專用的 測試軟件(如法國Telelogic公司的LOGISCOPE測試工具),這些測試軟件能完成諸如覆蓋 測試、代碼格式分析等 功能,但均是針對特定的語言和操作係統環境,使用上一些限製。 還需要說明的就是“可觀測”設計的概念。可觀測性和可測試性不同,不需要加入激勵信 號,隻觀察係統運行中某些內部狀態,比如軟件中某個重要變量的數值變化,硬件電路中 某個IC引腳的信號電平等。在設計中,應該保留這些觀察接口,以便需要時用它來判斷和 分析係統的問題。一個 可測試的係統,一定是可觀測的,反之則不然。設計可測試性係統的目的是為了以後修改 和改進設計,而使係統具有可觀測性則是為了維護係統,判斷哪個是出故障的部件,以便 更換。可測試性設計一般用於新產品,而可觀測性設計用於成熟產品。當然,在結構、安 裝條件和成本允許的情 況下,成熟產品也應具有可測試性。實際上,由於處理器技術和芯片的日新月異,已經不 存在真正意義上的成熟產品了。 在一類產品中的可測試性設計應該具有一致性,例如,用紅色LED表示電源狀態,所有電 路板均應采用紅色LED,點亮的頻率也應該一致。作為企業,應製定相關的測試接口標準 ,並且這些標準應符合行業習慣或者行業標準。 5 測試和調試接口標準 測試和調試接口標準:JTAG和BDM。 5.1 背景調試模式 在使用傳統的ICE來調試時,使用ICE中的CPU來取代目標板中的CPU,目標板和ICE之間使 用多芯扁平電纜來連接,而ICE在使用時一般還需要縮主機(一般來PC)來連接。 在一些高端微處理器內部已經包含了用於調試的微碼,調試時仿真器軟件和目標板上的C PU的調試微碼通信,目標板 上的CPU無需取出。由於軟件調試指令無需經過一段扁平電纜來控製目標板,避免了高頻 操作限製、交流和直流的不匹配以及調試線纜的電阻影響等問題。這種調試模式在Motor ola公司產品68300係列中被稱為背景調試模式BDM(Background Debug Mode)。在仿真器和目標之間使用8芯(或者10芯)的BDM接口來連接,其他公司的嵌入式 處理器也有類似功能,不過叫法不同,例如AMD公司在其X86微處理器上提供“AMDebug” 的調試接口。 實際上,BDM相當於將ICE仿真器軟件和硬件內置在處理器,這使得我們直接使用PC機的並 口來調試軟件,不再需要ICE硬件,大大節約了汽油發成本。一些調試器供應商也提供這 種軟件產品(如XRAY)。對於用戶來說,為了調試一些特定問題,可以直接使用BDM命令 來調試目標係統,以彌補 商業調試軟件的不足。 BDM接口有8根信號線,也有為10根信號線的,如圖2所示。調試軟件通過4腳使CPU進入背 景調試模式,調試命令的串行信號則8通過腳輸入,同時4腳輸入信號步時鍾,而CPU中的微 碼在執行命令後會在10腳輸出調試結果指示信號。可見,BDM接口引線由並口和PC機相連 ,調試命令則是通過串行 方式輸入的。 目前在CPU內置的調試接口和微碼方麵,各廠家尚無統一標準。處理器廠家、工具開發公 司和儀器製造商曾於1998年組成了Nexus 5001 Forum(Nexus 5001論壇),成員包括Motor ola、Infineon Technologies、日立、ETAS和惠普公司等,正致力於製定一個統一的片上通用調試接口。 這方麵的進一步情況可查閱 http://www.nexus-standard.org/</a>網站。 5.2 邊界掃描測試技術和JTAG接口 邊界掃描測試技術(Boundary-Scan Test Architecture)屬於一種可測試性設計。其基本思想是在芯片引腳和芯片內部邏輯之間(即芯片邊界位置)增加串行連接的邊界掃描測試單元,實現對芯片引腳狀態的設定和讀取 ,使芯片引腳狀態具有可控性和可觀測性。 邊界掃描測試技術最初由各大半導體公司(Philips、IBM、Intel等)成立的聯全測試行 動小組JTAG(Join Test Action Group)於1988年提出,1990年被IEEE規定為電子產品可測試性設計的標準(IEEE1149.1/2/3)。目前,該標準已被一些大規模集成電路所采用(如DSP、CPU、FPGA等),而訪問 邊界掃描測試電路的接口信號定義標準被稱為JTAG接口,很多嵌入式處理器內置了這種測 試接口。在Cygnal公司腃8051F000係列單片機中和一些FPGA芯片中,JTAG接口不僅能用於測試,也是器件的編程 接口。 IEEE1149.1標準支持以下3種測試功能: *內部測試——IC內部的邏輯測試; *外部測試——IC間相互連接的測試; *取樣測試——IC正常運行時的數據取樣測試。 圖3給出了具有2個芯片的係統的邊界掃描測試原理。 圖3中,TCK為測試同步時鍾輸入,TMS為測試模式選中輸入,TDI為測試數據輸入,TDO為 測試數據輸出,由測試移位寄存器產品。圖3中的小方框表示位於芯片外圍的邊界掃描測 試邏輯單元,芯片每個引腳信號經過邊界掃描單元和內部的功能單元相連接。 目前,邊界掃描技術的應用主要在數字IC的測試上,這種設計思想也可用於模擬係統、板 級測試甚至係統測試上。IEEE也製定了和IEEE1149.1相類似的標準IEEE P1149.4(數模混 合信號測試總線標準)、IEEE 1149.5(電路板測試和維護總線標準)。 摘自工控自動化技術文摘
|