新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 數(shù)字信號處理(DSP )系統(tǒng)測試和調(diào)試4

數(shù)字信號處理(DSP )系統(tǒng)測試和調(diào)試4

作者: 時(shí)間:2008-07-19 來源:網(wǎng)絡(luò) 收藏

  仿真功能

  仿真可以提供一套用于集成和調(diào)試階段的標(biāo)準(zhǔn)操作。它的一些主要功能如下:

  (Breakpoints)

  仿真技術(shù)的一個(gè)普通功能就是支持。可以中斷DSP,并讓開發(fā)者可以檢測目標(biāo)系統(tǒng)上的數(shù)據(jù)或寄存器。斷點(diǎn)功能是由仿真器來的。仿真器協(xié)議來在流盡可能早的地方停止CPU,并讓開發(fā)者在需要時(shí)從當(dāng)前點(diǎn)繼續(xù)。

  由于從運(yùn)行狀態(tài)轉(zhuǎn)向暫停狀態(tài)可以在瞬時(shí)發(fā)生,大部分?jǐn)帱c(diǎn)都是的。

  軟件斷點(diǎn)是斷點(diǎn)的一種形式。它可以在特定斷點(diǎn)處保存,并以能創(chuàng)建出一個(gè)例外條件的不同取而代之。這樣一來,功能就被轉(zhuǎn)移到了可保存重要DSP 狀態(tài)寄存器上下文的器上。當(dāng)由主調(diào)試器來進(jìn)行控制時(shí),開發(fā)者就可以在CPU 暫停時(shí)在寄存器上“查看并修改”。如果反過來,就可以讓CPU 從當(dāng)前位置繼續(xù)執(zhí)行。這種類型的斷點(diǎn)可用于包含RAM 的目標(biāo)系統(tǒng),以編寫并更換

  斷點(diǎn)的另一種形式叫做斷點(diǎn)。這種斷點(diǎn)是通過采用目標(biāo)設(shè)備上的自定義來實(shí)現(xiàn)的。它適用于有復(fù)雜取指序列的DSP 設(shè)備,并可在不能用軟件斷點(diǎn)來替換指令的帶ROM 的系統(tǒng)中設(shè)置斷點(diǎn)。這一邏輯是用來監(jiān)控設(shè)備上的一組和狀態(tài)信號,并當(dāng)指令拾取在某個(gè)特定地點(diǎn)進(jìn)行時(shí)停止設(shè)備執(zhí)行。

  事件檢測器(Event Detectors)

  圖9 中的事件探測器提供了更好的目標(biāo)可視性和執(zhí)行中斷。圖4 中的總線事件和輔助事件檢測邏輯可以檢測到系統(tǒng)中發(fā)生的一系列復(fù)雜事件并進(jìn)行仿真斷開。除了硬件和軟件斷點(diǎn)提供的代碼執(zhí)行斷點(diǎn),事件檢測器也可以在數(shù)據(jù)訪問、其它和數(shù)據(jù)的結(jié)合以及其它系統(tǒng)狀態(tài)下斷點(diǎn)。圖9 中的事件檢測器包含了一套比較儀和其它邏輯。用戶可以通過調(diào)試器界面對這些比較儀進(jìn)行編程以找到系統(tǒng)中事件的一個(gè)特定樣式。比較儀會觸發(fā)其它事件邏輯執(zhí)行相關(guān)任務(wù),例如停止執(zhí)行,增加一個(gè)計(jì)數(shù)器來跟蹤某個(gè)特定事件的發(fā)生,或者在一個(gè)可被其它設(shè)備所用的管腳上產(chǎn)生一個(gè)信號以進(jìn)行其它操作。

    圖9:開發(fā)人員可以通過用戶界面設(shè)置事件計(jì)數(shù)器和比較儀,并能編程復(fù)雜事件,只受到設(shè)備上邏輯數(shù)量的限制。

  開發(fā)人員完成編程后,總線和輔助事件系統(tǒng)邏輯就將依照邏輯中設(shè)定的條件對運(yùn)行的系統(tǒng)進(jìn)行監(jiān)控。一旦檢測到情況,就會作出預(yù)先設(shè)定的響應(yīng)。它可能會給仿真器發(fā)出一個(gè)指令,讓它停止執(zhí)行,也可能會設(shè)置一個(gè)輸出管腳來告知其它器件或測試設(shè)備。這種片上邏輯的一個(gè)優(yōu)勢就在于它能“看”到設(shè)備內(nèi)部發(fā)生的情況,而采用外部管腳時(shí)則只能看到管腳所代表的信號或情況。DSP 廠商已經(jīng)通過提供可實(shí)現(xiàn)DSP 可視性的片上邏輯改進(jìn)了這方面的功能。這一點(diǎn)是非常關(guān)鍵的,因?yàn)镈SP 和其它嵌入式處理器都在向片上系統(tǒng)結(jié)構(gòu)過渡,而這種系統(tǒng)恰恰會限制設(shè)備可視性的程度。

  由于這些事件觸發(fā)功能都是直接創(chuàng)建到DSP 處理器中的,它們不會占據(jù)過多的CPU 周期或存儲器空間。因此,當(dāng)被通過用戶控制啟動(dòng)時(shí),事件觸發(fā)設(shè)備邏輯能以非侵入形式檢測到所有事件,而不需停止CPU。這樣可以讓系統(tǒng)保持實(shí)時(shí)運(yùn)行,并縮短調(diào)試時(shí)間,因?yàn)殚_發(fā)人員不必在每個(gè)單獨(dú)事件上設(shè)置斷點(diǎn),并能夠重復(fù)執(zhí)行,知道下一個(gè)復(fù)雜事件發(fā)生。

  跟蹤(Trace)

  圖8 中的跟蹤采集區(qū)塊是DSP 仿真功能的擴(kuò)展。它讓開發(fā)人員能以全時(shí)鐘速度從設(shè)備中抽取程序計(jì)數(shù)器、時(shí)序信息和原始數(shù)據(jù)訪問信息。該數(shù)據(jù)被保存在一個(gè)外部大型存儲器上并被格式化。通過這一數(shù)據(jù),開發(fā)人員可以極其詳細(xì)地了解處理器的活動(dòng)情況。這有利于調(diào)試各種目標(biāo)系統(tǒng)上的間歇性硬件和軟件問題。跟蹤功能可以由事件邏輯來控制,僅當(dāng)系統(tǒng)發(fā)生一系列特定情況時(shí)才啟動(dòng),例如計(jì)數(shù)器達(dá)到了某個(gè)預(yù)設(shè)值,某個(gè)特殊模塊被執(zhí)行,或者接入到了某個(gè)特定變量。程序計(jì)數(shù)器和/或數(shù)據(jù)訪問信息一般都帶有時(shí)間戳標(biāo)記,可幫助開發(fā)人員確定訪問次數(shù)、中斷潛伏、模塊執(zhí)行次數(shù)和其它有用數(shù)據(jù)。


       圖8:DSP 設(shè)備上的仿真邏輯能帶來有效系統(tǒng)集成所需的可視性

  連續(xù)執(zhí)行可視性(Continuous Execution Visibility)

  有些DSP 應(yīng)用要求在繼續(xù)服務(wù)中斷時(shí)停止處理器。這對于硬盤應(yīng)用等控制應(yīng)用來說尤其重要,因?yàn)榇藭r(shí)DSP 在控制著磁頭的位置。在連續(xù)執(zhí)行可視化模式中,當(dāng)發(fā)生了一個(gè)物理中斷時(shí),調(diào)試器會停止控制,并讓應(yīng)用執(zhí)行硬件中斷。接著,從硬件中斷服務(wù)程序(ISR)中恢復(fù)后,處理器又會被暫停。在這些系統(tǒng)中,DSP是用來控制伺服系統(tǒng)以避免通信時(shí)發(fā)生磁頭撞擊。但是,在系統(tǒng)調(diào)試過程中,開發(fā)人員必須保持和通信系統(tǒng)的。這要求DSP 在調(diào)試系統(tǒng)時(shí)繼續(xù)服務(wù)中斷。此功能需要特殊DSP 仿真邏輯才能實(shí)現(xiàn)。這只是DSP 仿真如何定制以便用于一些由應(yīng)用域來決定所需仿真功能類型的DSP 系列的例子之一。

  源級調(diào)試(Source Level Debugging)

  源級調(diào)試讓開發(fā)人員可以在一個(gè)更高的抽象層集成系統(tǒng)。開發(fā)人員可以將從系統(tǒng)抽取的數(shù)據(jù)連接到高級源代碼(程序就是以該代碼編寫而成的),并采用來自源代碼的符號名或數(shù)據(jù)所在的原始存儲器來接入到系統(tǒng)變量和其它程序的位置。源代碼一般可以和匯編代碼一起顯示,這樣可以讓開發(fā)人員看到編譯器生成了什么匯編代碼。當(dāng)優(yōu)化編譯器來生成代碼時(shí),這一點(diǎn)是非常重要的。DSP 編譯器具有多個(gè)級別的高性能優(yōu)化能力。當(dāng)采用代碼優(yōu)化切換時(shí),每個(gè)高等級語言語句匯編代碼的可視性都非常重要。根據(jù)創(chuàng)建系統(tǒng)時(shí)所選擇的調(diào)試選項(xiàng),開發(fā)人員可以通過一組由編譯器和連接器生成的符號來接入各種程序變量、結(jié)構(gòu)和片段。

  這些符號信息會在每個(gè)調(diào)試過程之前被導(dǎo)入到仿真器。

  仿真功能的另一個(gè)有用之處在于可實(shí)現(xiàn)被執(zhí)行匯編語言的可視性。由于在編輯過程中創(chuàng)建的目標(biāo)文件是一個(gè)二進(jìn)制文件,二進(jìn)制目標(biāo)代碼(機(jī)器代碼)必須轉(zhuǎn)換成匯編指令。這個(gè)轉(zhuǎn)換過程被稱為“反匯編”。反匯編功能將二進(jìn)制數(shù)導(dǎo)入到存儲器并將之反匯編,讓用戶可以查看產(chǎn)生機(jī)器語言代碼的實(shí)際匯編語言流。

  跟蹤功能還需要反匯編操作。跟蹤反匯編必須選取跟蹤幀,并反匯編從該原始跟蹤數(shù)據(jù)執(zhí)行的代碼。該數(shù)據(jù)對于開發(fā)人員來說是非常有幫助的。它可以準(zhǔn)確顯示數(shù)據(jù)采集期間系統(tǒng)中發(fā)生的情況。利用數(shù)據(jù)跟蹤,用戶不僅能夠查看實(shí)際被執(zhí)行的指令(不是應(yīng)該被執(zhí)行的指令),還能查看這些指令所進(jìn)行的數(shù)據(jù)訪問。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉