數字信號處理器(DSP)性能的增強,給了其更多的用武之地。與此同時,DSP應用代碼的復雜性也增加了。為了開發(fā)具有魯棒性的基于DSP的系統(tǒng),工程師必須考慮軟件的易測性,從對單個模塊的測試到對整個系統(tǒng)的測試。
基于DSP的系統(tǒng)給工程師提出了幾項挑戰(zhàn):
高數據速率:基于DSP的嵌入式系統(tǒng)通常要處理大量數據,通過DSP的流式視頻/音頻信號的速率可能超過100Mb/s(兆字節(jié)/秒)。
隨機事件:由于隨機與周期中斷的合并作用控制著系統(tǒng),開發(fā)人員會發(fā)現對實時操作進行仿真比較困難。

編碼技術混合:DSP軟件集合了C/C++控制代碼和手動優(yōu)化的匯編語言代碼,匯編語言代碼能夠處理數據值,并“緊縮”循環(huán)。為了減輕基于DSP系統(tǒng)的測試任務,工程師必須制定連貫的測試策略將其作為全部設計的一部分。從草擬第一幅結構圖起,工程師就應思考:“我們如何測試定義好的模塊或單元,以及如何包括測試需要的“hook”(見注)?
從模塊開始
工程師可以輕松地識別單個信號處理模塊——執(zhí)行特殊信號處理功能的代碼——因此這些模塊提供了一個良好的出發(fā)點。可以在目標嵌入式系統(tǒng)之外分別測試單個模塊。工程師可以給一個模塊編寫C/C++“外套”,這樣就可以從標準的I/O設備讀取輸出向量、調用模塊內的功能并將結果寫進文件,如圖1。
非實時仿真器可以執(zhí)行一個模塊,而單個硬件可以獨立于較大目標系統(tǒng)來執(zhí)行模塊。在這類情況下,測試時,將已知向量加到模塊,該模塊為后面的調試產生數據并報告錯誤。性能數據,即量度,包括用于處理向量的處理器周期及“進出”模塊所需的處理器周期數。量度還可以反映內存的使用量。起碼,可靠的測試要用一致性的向量來執(zhí)行信號處理功能。該向量可以來自國際標準化實體(可以考慮手機和MPEG標準)。或者,工程師可以采用模擬或設計軟件來生成測試向量。
為弄清楚處理問題,測試應該包括可導致飽和或翻轉狀態(tài)的輸入向量。當大的數值超過寄存器的容納能力時,產生飽和狀態(tài)。當寄存器內的數值從1111…11112增大到0000…00002,發(fā)生翻轉并設置錯誤標記。
校驗控制代碼
一般地,信號處理模塊或外部事件的輸出影響一個系統(tǒng)的關鍵性的控制軟件。這就意味著測試控制代碼比測試信號處理模塊要涉及更多的操作技巧。
當工程師校驗信號處理模塊操作正確以后,就可以進行控制代碼的測試——也稱為集成測試。當控制代碼管理系統(tǒng)時,硬件將有效的輸入向量輸入到系統(tǒng),系統(tǒng)處理該向量并產生輸出向量,該輸出向量與公認是正確的向量進行對比。集成測試通常在一個平臺仿真器上或應用的硬件內開始,二者均不是實時運行。在確信系統(tǒng)滿足設計規(guī)范后,工程師將應用系統(tǒng)移植到實時硬件上進行附加測試。
根據系統(tǒng)是否依賴于時實操作系統(tǒng)(RTOS),控制代碼測試和校驗的技術有所不同。某些RTOS包含有“測試hook(見注)”,工程師可以利用它來確定已經運行了什么線程,何時運行的線程,線程執(zhí)行的時間等等。此外,RTOS生成的執(zhí)行指令可以提供數據來幫助工程師校驗基于DSP的系統(tǒng)操作的正確性。
有時工程師可以采用一個實時的“遙測數據”通道來進一步了解DSP芯片狀態(tài)或系統(tǒng)狀況。這種類型的通道可以存在干硬件或軟件內。保存處理器狀態(tài)和程序流程變化的片上跟蹤緩沖器為軟件開發(fā)中的調試提供了有價值的信息。

基于軟件的系統(tǒng)在開發(fā)過程中同樣可以良好地工作并且有助于測試實時系統(tǒng)。在系統(tǒng)測試過程中,一種軟件遙測系統(tǒng)的環(huán)形緩沖區(qū)不斷用通過以下步驟刷新自身:
·控制代碼的監(jiān)視點數據,
·性能度量數據(MIPS和內存使用數據),
·中間信號處理向量
例如,監(jiān)視點讓開發(fā)者知道處理器已經開始執(zhí)行一個特定程序。環(huán)形緩沖區(qū)的大小取決于開發(fā)者選擇記錄信息的多少和他們從基于DSP的系統(tǒng)內提取信息的速度。工程師獲取了緩沖區(qū)的內容,用一個短程序就可以將其內容譯成可讀的格式。
系統(tǒng)開發(fā)者必須確保軟件定期將緩沖區(qū)的遙測數據通過足夠寬的帶寬通道輸送到外部世界。這種操作可能包括從直接存儲器存取(DMA)傳遞到外部總線或者通過時鐘數據恢復(CDR)、LVDS、PCI或其它端口發(fā)送。一般地,DSP芯片包括了用于這些通訊的I/0端口。測試腳本可以監(jiān)視實時遙測數據來確定系統(tǒng)是否滿足其設計要求。基于軟件的遙測緩沖區(qū)需要一些內存和CPU周期,因此它們對性能會產生小的影響。但工程師可以根據他們對系統(tǒng)的詳細分析來平衡這種損失。工程師可能覺得發(fā)售系統(tǒng)之前減少或消除遙測代碼有誘惑力。但是這么做會在校驗和使用之間改變軟件,并因此違反整個測試進程的原則。
組合
建立實時遙測通道、測試控制代碼以及校驗信號處理模塊需要花費時間和精力。但是一旦完成,工程師可以將單個程序段合并成一個強大的測試套件,它可以整個用于基于DSP的系統(tǒng)。在確信自動校驗系統(tǒng)將從模塊級開始測試并且在目標系統(tǒng)上進行完全的實時測試以發(fā)現錯誤之后,工程師就可以將重點放在編寫代碼上。如果開發(fā)工程師運用了一套可靠的測試程序,他們可以制定一個時間表來定期校驗代碼,或許就像每天的日常工作一樣。注:hook是一種編程技術,在設計標準計算機繪圖系統(tǒng)時,為了提高系統(tǒng)的效率,允許程序員往原有的程序中插入新代碼。有掛鉤的程序可執(zhí)行任何附加代碼。掛鉤功能使建立在該系統(tǒng)上的其他高級模塊能提取該系統(tǒng)的內部特征。