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

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

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