新聞中心

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

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

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

  仿真的基本原理

  仿真是一種被用在嵌入式系統(tǒng)開(kāi)發(fā)領(lǐng)域的技術(shù)。它可以給系統(tǒng)開(kāi)發(fā)者帶來(lái)集成硬件和軟件所需的可控制性和可視性,有效地模仿DSP 處理器的電氣特征和性能,同時(shí)讓工程師更清晰地了解處理器的活動(dòng)并加以控制。

  仿真器包含了硬件和軟件技術(shù)。仿真硬件方面由DSP 芯片上的功能構(gòu)成,它可以數(shù)據(jù)。該數(shù)據(jù)提供了有關(guān)系統(tǒng)活動(dòng)狀態(tài)和其它可視性的信息。硬件還需要從DSP 設(shè)備上高速獲取此類信息,并將數(shù)據(jù)。仿真器軟件則提供了更高級(jí)別的控制,以及一個(gè)和主機(jī)相連的- 一般是一個(gè)器。器讓開(kāi)發(fā)工程師可以輕松地從編輯過(guò)程(并為某個(gè)應(yīng)用建立鏈接)過(guò)渡到執(zhí)行環(huán)境。

  它從編輯過(guò)程中輸出數(shù)據(jù),并將圖象導(dǎo)入到目標(biāo)系統(tǒng)中。接下來(lái),工程師可以通過(guò)器和仿真器互動(dòng),來(lái)控制并執(zhí)行應(yīng)用,同時(shí)找到并解決問(wèn)題。這些問(wèn)題可能是硬件問(wèn)題,也可能會(huì)是軟件上的問(wèn)題。仿真器被設(shè)計(jì)成一個(gè)完整的集成和測(cè)試環(huán)境。

仿真器系統(tǒng)組件
所有的仿真器系統(tǒng)都是由以下三個(gè)部分構(gòu)成的:
片上調(diào)試裝置
仿真控制器
運(yùn)行在主機(jī)上的調(diào)試器應(yīng)用程序

                  圖7:一個(gè)基本的仿真系統(tǒng)

圖7 展示了這三部分的連接。其中主機(jī)和一個(gè)仿真控制器相連,仿真控制器也連接到目標(biāo)系統(tǒng)。用戶通過(guò)IDE 中的調(diào)試器來(lái)控制目標(biāo)應(yīng)用。

  從處理器、仿真器到主機(jī)平臺(tái)的整個(gè)開(kāi)發(fā)環(huán)境,都會(huì)使用DSP 仿真技術(shù)。

  在DSP 設(shè)備本身,要實(shí)現(xiàn)更高的時(shí)鐘率,就要求仿真邏輯必須是在芯片上,這樣它才能夠全速運(yùn)行,并跟上處理器的速率。集成度更高的芯片,總線會(huì)被隱藏起來(lái),讓工程師無(wú)法通過(guò)管腳看到。這也使得仿真邏輯必須在芯片上,這樣才能接入到系統(tǒng)總線。為此,DSP 廠商都一直在積極地將高端仿真功能集成到它們的DSP產(chǎn)品上。

  下一個(gè)組件是仿真器,它用來(lái)將目標(biāo)板連接到主機(jī)平臺(tái)上,并在主機(jī)和目標(biāo)處理器之間傳輸數(shù)據(jù)。

  第三個(gè)組件也是最后一個(gè)組件是調(diào)試器和仿真軟件。該軟件可以自動(dòng)配置以匹配DSP 設(shè)備,并作為用戶,讓片上系統(tǒng)(SoC)設(shè)備的調(diào)試變得盡可能簡(jiǎn)單。

  這些IDE 還支持“插入式”應(yīng)用的開(kāi)發(fā),此類應(yīng)用不僅能控制處理器,還能通過(guò)一個(gè)高速數(shù)據(jù)顯示來(lái)自處理器的仿真數(shù)據(jù)。

  調(diào)試器運(yùn)行的主機(jī)可以是一臺(tái)電腦,也可以是一個(gè)工作站。該主機(jī)可以通過(guò)各種方式來(lái)和仿真器相連,包括以太網(wǎng)、通用串行總線(USB)、Firewire (IEEE 1394)和并行接口等。

  主機(jī)可以決定設(shè)備到主機(jī)之間的數(shù)據(jù)帶寬。主機(jī)和仿真器之間的通信決定著數(shù)據(jù)傳輸協(xié)議的最大持續(xù)數(shù)據(jù)帶寬。比如,在某些仿真應(yīng)用下,仿真器清空接收數(shù)據(jù)緩沖器的速度必須和這些緩沖器被裝滿數(shù)據(jù)的速度一樣快。第二,產(chǎn)生數(shù)據(jù)的主機(jī)和接收數(shù)據(jù)的客戶端必須擁有足夠的MIP 和/或磁盤(pán)帶寬,來(lái)準(zhǔn)備、傳輸、處理和/或存儲(chǔ)來(lái)自DSP 的數(shù)據(jù)。此處必須注意的一點(diǎn)是,一個(gè)功能強(qiáng)大的電腦或者一個(gè)工作站會(huì)對(duì)整個(gè)仿真系統(tǒng)的性能產(chǎn)生影響。

  仿真器的物理特征

  大多數(shù)仿真控制器都位于主機(jī)外部。仿真器分為通信和仿真兩個(gè)部分。通信部分負(fù)責(zé)和主機(jī)通信,而仿真部分則和目標(biāo)連接,控制目標(biāo)調(diào)試功能和設(shè)備調(diào)試端口。

  仿真器/目標(biāo)通信

  仿真控制器通過(guò)連接線和目標(biāo)相連。調(diào)試、跟蹤、觸發(fā)和實(shí)時(shí)傳輸可以通過(guò)同一根目標(biāo)連接線來(lái)完成,有時(shí)也可以采用同樣的設(shè)備管腳。當(dāng)一根連接線無(wú)法滿足目標(biāo)系統(tǒng)的跟蹤帶寬時(shí),就需要多根連接線。所有跟蹤、實(shí)時(shí)數(shù)據(jù)傳輸和調(diào)試通信可以通過(guò)這個(gè)鏈路來(lái)完成。仿真器允許目標(biāo)和仿真器之間可以至少分開(kāi)2 英尺,以方便DSP 開(kāi)發(fā)者能在各種環(huán)境下應(yīng)用。

  片上仿真

  由于當(dāng)前精密的DSP 處理器的可視性日益下降,調(diào)試功能也被集成到了芯片上-即我們常說(shuō)的片上調(diào)試。片上調(diào)試實(shí)際上硬件和軟件的結(jié)合。位于DSP 上的功能是硬件實(shí)現(xiàn)資源。這些資源包括終端用戶代碼可利用的功能,例如斷點(diǎn)寄存器和其它專用硬件。要在芯片和調(diào)試器之間進(jìn)行通信,DSP 上必須有額外的管腳。這些管腳可以是JTAG 接口管腳,也可以是一些專門(mén)用于控制或數(shù)據(jù)的額外管腳。要進(jìn)行片上調(diào)試,還要求主系統(tǒng)必須和調(diào)試部分以及數(shù)據(jù)抽取通信并對(duì)之加以控制。主軟件運(yùn)行調(diào)試器軟件,并通過(guò)專用接口頭信息與片上調(diào)試寄存器連接。主調(diào)試器以圖畫(huà)形式顯示源代碼、處理器資源、存儲(chǔ)器位置和外圍設(shè)備狀態(tài)等。

  片上調(diào)試的一些主要功能包括:

-中斷或插入程序和/或數(shù)據(jù)存儲(chǔ)地址上的調(diào)試模式
-中斷或插入外圍設(shè)備上的調(diào)試模式
-通過(guò)1 個(gè)DSP 微處理器指令進(jìn)入調(diào)試模式
-讀/寫(xiě)DSP 內(nèi)核寄存器
-讀/寫(xiě)外圍存儲(chǔ)器映射的寄存器
-讀/寫(xiě)程序或數(shù)據(jù)存儲(chǔ)器
-執(zhí)行1 個(gè)或多個(gè)指令
-跟蹤1 個(gè)或多個(gè)指令
-讀實(shí)時(shí)指令跟蹤緩沖器


        圖8:DSP 上的仿真邏輯可以實(shí)現(xiàn)有效系統(tǒng)集成所需的可視性

  圖8 展示了一個(gè)高性能DSP 上的仿真硬件。該邏輯位于DSP 上,可以執(zhí)行以下功
能:

觀測(cè)-采用總線事件探測(cè)器來(lái)觀測(cè)系統(tǒng)中的事件。用戶可以通過(guò)調(diào)試器界面編程選擇需要觀測(cè)的特定事件或情況。
保存-采用計(jì)數(shù)器和狀態(tài)機(jī)來(lái)保存系統(tǒng)中發(fā)生的事件。
導(dǎo)向和控制-采用觸發(fā)器來(lái)發(fā)送計(jì)數(shù)器和狀態(tài)機(jī)獲取的有用數(shù)據(jù)。
導(dǎo)出-采用導(dǎo)出功能從系統(tǒng)導(dǎo)出數(shù)據(jù)。例如,以跟蹤邏輯來(lái)導(dǎo)出原始程序寄存器和數(shù)據(jù)跟蹤信息。
加速-采用本地振蕩器來(lái)提高以高時(shí)鐘速率運(yùn)行的設(shè)備的數(shù)據(jù)傳輸率。
導(dǎo)入-以導(dǎo)入邏輯來(lái)從主機(jī)導(dǎo)入數(shù)據(jù),讓開(kāi)發(fā)者可以輸入用來(lái)調(diào)試和集成系統(tǒng)的數(shù)據(jù)文件。

  這個(gè)仿真系統(tǒng)里還包括一個(gè)主通信控制器(host communications controller)。
 
  它可以連接到控制整個(gè)過(guò)程的主調(diào)試器。調(diào)試器可以位于電腦上或者工作站中,也可以集成到一個(gè)集成度更高的開(kāi)發(fā)環(huán)境中,或者獨(dú)立運(yùn)行。電腦或工作站中構(gòu)建的代碼通過(guò)一個(gè)通信鏈路導(dǎo)入到目標(biāo)中。

  仿真控制器(以及調(diào)試器)是一種帶有兩組不同功能特征的調(diào)試工具。其中的一組特征可以提供簡(jiǎn)單的運(yùn)行控制,讓DSP 開(kāi)發(fā)者能控制DSP 處理器的運(yùn)行。運(yùn)行控制的例子有啟動(dòng)、暫停、步進(jìn)和運(yùn)行至斷點(diǎn)。

  另一組特征則用來(lái)捕捉和記錄DSP 處理器的活動(dòng),正如處理器總線所顯示的那樣。開(kāi)發(fā)者可以通過(guò)一個(gè)觸發(fā)系統(tǒng)來(lái)限定控制捕捉這一跟蹤信息的條件。該跟蹤系統(tǒng)將DSP 處理器總線的活動(dòng)記錄在系統(tǒng)內(nèi)部或外部的高速RAM 中。

  調(diào)試器是在主系統(tǒng)上執(zhí)行的一個(gè)軟件組件。它可以監(jiān)控和控制整個(gè)仿真過(guò)程,有以下一些常見(jiàn)功能:
啟動(dòng)/運(yùn)行(Go/Run)- 這個(gè)命令將啟動(dòng)目標(biāo)CPU 的執(zhí)行。執(zhí)行是從當(dāng)前程序計(jì)數(shù)器的位置和寄存器數(shù)值開(kāi)始的。
停止/暫停(Stop/Halt)- 這一命令用來(lái)通知仿真器停止目標(biāo)CPU 并暫停執(zhí)行。當(dāng)執(zhí)行這一命令時(shí),目標(biāo)CPU 和寄存器的當(dāng)前上下文會(huì)被保存,以便當(dāng)處理器再次開(kāi)始運(yùn)行時(shí),執(zhí)行可以繼續(xù)從原停止點(diǎn)處繼續(xù)進(jìn)行。
單步執(zhí)行(Single-Step)- 這一命令是啟動(dòng)或運(yùn)行指令的一個(gè)特殊形式,但在下一個(gè)指令處有一個(gè)斷點(diǎn)組。它讓用戶可以連續(xù)步進(jìn)。在每一步,用戶都可以觀察寄存器、執(zhí)行堆棧和其它關(guān)于系統(tǒng)狀態(tài)的重要信息。這可能是尋找軟件或固件模塊的問(wèn)題時(shí)應(yīng)用最為普遍的命令。
步過(guò)/步進(jìn)(Step-Over/Step Through)- 這個(gè)命令和單步執(zhí)行很相似,但有一個(gè)很大的不同。當(dāng)步過(guò)一個(gè)子程序調(diào)用時(shí),該命令會(huì)執(zhí)行子程序但不會(huì)進(jìn)入子程序。而當(dāng)采用單步執(zhí)行命令時(shí),調(diào)試器會(huì)進(jìn)入子程序并以一次一條指令的方式執(zhí)行子程序。如果用戶不需要看到子程序或庫(kù)函數(shù)中的每條指令,這一命令可以讓用戶繞過(guò)。
運(yùn)行至(Run To)- 這個(gè)命令可以在程序某個(gè)被認(rèn)為有用的地方設(shè)置一個(gè)斷點(diǎn),然后運(yùn)行直到達(dá)到該斷點(diǎn)。它可以讓用戶不必多次單步執(zhí)行便可達(dá)到同樣的位置。

  DSP 仿真器可以提供DSP 處理器、寄存器和應(yīng)用軟件的可視性,讓軟件工程師可以了解到應(yīng)用執(zhí)行中處理器內(nèi)部發(fā)生的變化。軟件工程師可以基于應(yīng)用內(nèi)部的硬件信號(hào)值和軟件位置在應(yīng)用中設(shè)置斷點(diǎn)。在這些斷點(diǎn)上,用戶可以了解到處理器和數(shù)據(jù)的狀態(tài),并確定其應(yīng)用是否仍在正常運(yùn)行,還可以在仿真器上執(zhí)行應(yīng)用軟件的基準(zhǔn)化(時(shí)序分析)和繪制概圖(CPU 加載)。多處理器調(diào)試可以讓用戶同時(shí)在多個(gè)處理器上調(diào)試軟件,并依照設(shè)置在某個(gè)處理器中的條件停止一個(gè)或多個(gè)處理器,讓用戶能夠在有疑問(wèn)時(shí)捕捉到整個(gè)系統(tǒng)的狀態(tài)。DSP 調(diào)試器中的這些功能可以極大地縮短軟件開(kāi)發(fā)周期中的調(diào)試時(shí)間。

  仿真器是直接和DSP 處理器連接的。電氣信號(hào)被發(fā)送到仿真器,仿真器可以接入到處理器,而標(biāo)準(zhǔn)軟件調(diào)試器則不能。工程師可以瀏覽并更改寄存器-這是標(biāo)準(zhǔn)軟件調(diào)試器所沒(méi)有的。硬件信號(hào)發(fā)送還可以帶來(lái)更好的實(shí)時(shí)控制。仿真器還能實(shí)時(shí)記錄處理器的活動(dòng),如果發(fā)生問(wèn)題,開(kāi)發(fā)者就可以有一個(gè)系統(tǒng)活動(dòng)的歷史記錄來(lái)進(jìn)行分析。

  仿真器相比于標(biāo)準(zhǔn)軟件調(diào)試器的另一個(gè)優(yōu)勢(shì)在于它可以調(diào)試系統(tǒng)的啟動(dòng)代碼。標(biāo)準(zhǔn)軟件調(diào)試器一般需要目標(biāo)操作系統(tǒng)來(lái)接入系統(tǒng)和通信接口。在系統(tǒng)初始化過(guò)程中,這是不能實(shí)現(xiàn)的。而仿真器可以提供自己的通信接口(一般是JTAG),能接入到系統(tǒng)的任何部分,達(dá)到和CPU 一樣的可視性。

  仿真器的另一個(gè)優(yōu)勢(shì)是可以調(diào)試已經(jīng)損壞的系統(tǒng)。如果目標(biāo)系統(tǒng)因?yàn)槟硞€(gè)原因而被損壞,它的操作系統(tǒng)一般會(huì)停止運(yùn)行。此時(shí)軟件調(diào)試器根本排不上用場(chǎng)。而仿真器則不會(huì)受到系統(tǒng)損壞的影響。仿真器可以保留重要的跟蹤信息和寄存器數(shù)值等DSP 處理器狀態(tài)信息,并對(duì)該數(shù)據(jù)進(jìn)行分析,以確定導(dǎo)致系統(tǒng)損壞的原因。

  基本仿真組件

  當(dāng)采用一個(gè)DSP 調(diào)試器來(lái)在硬件平臺(tái)上進(jìn)行軟件調(diào)試時(shí),必須執(zhí)行一些設(shè)置程序,以確保目標(biāo)處理器能夠和調(diào)試器兼容。仿真的設(shè)置包含了兩個(gè)工具:一個(gè)是仿真器本身(例如TI XDS510 或XDS560)-它控制到達(dá)目標(biāo)和來(lái)自目標(biāo)的信息流,另一個(gè)是調(diào)試器-它是這一信息的用戶接口。在仿真設(shè)置之后是目標(biāo)處理器。

  大多數(shù)DSP 處理器中的仿真邏輯都采用聯(lián)合測(cè)試行動(dòng)組(JTAG)標(biāo)準(zhǔn)連接方法來(lái)從處理器內(nèi)部獲取調(diào)試信息。

  硬件的調(diào)試是通過(guò)停止DSP 內(nèi)核來(lái)進(jìn)行的,這樣才可以使信息通過(guò)JTAG 信息頭被掃描進(jìn)設(shè)備并從設(shè)備中掃描出來(lái)。該信息是通過(guò)符合IEEE 1149.1 JTAG 規(guī)格的JTAG 接口來(lái)串行傳輸?shù)?。必須注意的是,這個(gè)調(diào)試方法接近于實(shí)時(shí)調(diào)試,但它是插入式的,因?yàn)樗枰V箖?nèi)核來(lái)掃描信息。盡管和JTAG 頭之間的連接可能是一樣的,但用于仿真的掃描鏈和用于邊界掃描的掃描鏈?zhǔn)遣煌?。在處理器?nèi)部有多種可以掃描信息進(jìn)出的串行掃描鏈。掃描鏈的選擇以及每個(gè)掃描鏈所包含的信息由一個(gè)微處理器來(lái)控制。這個(gè)“掃描管理器”的任務(wù)是在信息被掃描進(jìn)出各種處理器的過(guò)程中控制該信息,并將之引導(dǎo)在各個(gè)調(diào)試器窗口之間。

  仿真器主機(jī)可以作為掃描管理器,因?yàn)樗刂浦鴴呙栊畔⒃谀繕?biāo)和調(diào)試器窗口之間的傳輸。比如,操作系統(tǒng)可以是一臺(tái)電腦,而JTAG 連接則通過(guò)一張ISA 卡(圖7)來(lái)完成,其它配置也可以實(shí)現(xiàn)。當(dāng)主CPU 或一個(gè)獨(dú)立的處理器控制JTAG 掃描信息時(shí),主機(jī)需要有關(guān)掃描鏈中包含的設(shè)備的信息。



評(píng)論


相關(guān)推薦

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

關(guān)閉