專(zhuān)利名稱(chēng):一種用于數(shù)字信號(hào)處理器的調(diào)試系統(tǒng)及其調(diào)試方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)字信號(hào)處理器的調(diào)試系統(tǒng),特別是涉及采用一種以指令插入式的調(diào)試方法用于數(shù)字信號(hào)處理器的調(diào)試系統(tǒng)及其調(diào)試方法。
背景技術(shù):
數(shù)字信號(hào)處理器(DSP)是專(zhuān)業(yè)化程度很高的MCU(微控制器),其結(jié)構(gòu)適合于以盡量快的速度運(yùn)行數(shù)目較少的專(zhuān)用指令和專(zhuān)項(xiàng)操作。高速執(zhí)行能力是數(shù)字環(huán)境下對(duì)實(shí)時(shí)模擬信號(hào)進(jìn)行處理所必需的,而DSP正適合于這些運(yùn)算。
在數(shù)字信號(hào)處理器以及微處理器的設(shè)計(jì)中,內(nèi)核的調(diào)試邏輯的設(shè)計(jì)是重要及必需的。調(diào)試系統(tǒng)就是嵌入在處理器電路內(nèi)部的調(diào)試操作相關(guān)邏輯,在處理器正常工作時(shí)不產(chǎn)生作用而只用于處理器的調(diào)試操作功能。調(diào)試系統(tǒng)的主要功能和作用就是實(shí)現(xiàn)系統(tǒng)開(kāi)發(fā)人員對(duì)其在數(shù)字信號(hào)處理器上運(yùn)行的工作程序進(jìn)行在線調(diào)試操作,而一般調(diào)試邏輯需要完成的調(diào)試操作包括兩個(gè)大類(lèi),一是對(duì)處理器內(nèi)部信息的調(diào)試操作,包括處理器內(nèi)部寄存器,內(nèi)部和外部存儲(chǔ)器以及處理器本身信息的讀取和修改,二是程序流的基本控制操作,包括程序流的運(yùn)行,暫停,停止等控制操作。
傳統(tǒng)的處理器調(diào)試方式一般采用的是直接使用正常的工作邏輯,不使用特殊的調(diào)試邏輯,然后直接通過(guò)處理器的外設(shè)接口來(lái)控制調(diào)試操作,通過(guò)外設(shè)接口和處理器的針床來(lái)監(jiān)測(cè)調(diào)試狀態(tài)和結(jié)果。如圖1示便是此種方式的連接關(guān)系圖。這種方式不僅功能簡(jiǎn)單而且效率低下,基本已不采用。
現(xiàn)較多采用的方式是直接存取操作的方式,如圖2示,這種方法的特點(diǎn)是在處理器內(nèi)部增加了較為復(fù)雜的調(diào)試邏輯,將調(diào)試邏輯單元和處理器內(nèi)部的各個(gè)資源單元包括處理器內(nèi)核、寄存器、存儲(chǔ)器等邏輯單元進(jìn)行獨(dú)立連接。在調(diào)試時(shí)通過(guò)獨(dú)立的專(zhuān)用的讀寫(xiě)控制總線進(jìn)行調(diào)試操作。這樣的調(diào)試方式基本可以實(shí)現(xiàn)大部分的調(diào)試操作,但缺點(diǎn)是使用了較多的額外總線連接資源和控制邏輯資源,同時(shí),同步進(jìn)行的調(diào)試操作也會(huì)影響和干擾處理器內(nèi)核流水線的正常時(shí)序的操作,對(duì)系統(tǒng)內(nèi)部的數(shù)據(jù)總線和數(shù)據(jù)結(jié)構(gòu)也有很強(qiáng)的侵入性,易引入不必要的錯(cuò)誤。
以上描述的兩種方法在實(shí)際應(yīng)用中都具有一定的缺點(diǎn)和局限性,帶來(lái)了性能上的下降以及硬件資源上的損耗,同時(shí)也影響到了數(shù)字信號(hào)處理器系統(tǒng)的設(shè)計(jì)和應(yīng)用。
發(fā)明內(nèi)容
本發(fā)明的首個(gè)目的是提供一種用于數(shù)字信號(hào)處理器的調(diào)試系統(tǒng)。該系統(tǒng)更具體的說(shuō)是一種使用指令插入式的、低系統(tǒng)資源占用的、低系統(tǒng)侵入的、功能強(qiáng)大的調(diào)試系統(tǒng)。
本發(fā)明的另一個(gè)目的是提供根據(jù)上述調(diào)試系統(tǒng)所能實(shí)現(xiàn)的調(diào)試方法。
根據(jù)以上發(fā)明目的,其技術(shù)方案如下一種用于數(shù)字信號(hào)處理器的調(diào)試系統(tǒng),其特征在于,所述該處理器調(diào)試系統(tǒng)是一個(gè)處于處理器內(nèi)部的相對(duì)獨(dú)立的調(diào)試邏輯單元;該調(diào)試邏輯單元內(nèi)部包括了具備接收來(lái)自處理器外部仿真器所發(fā)送的調(diào)試指令,并對(duì)該指令進(jìn)行解析的調(diào)試接口邏輯單元,同時(shí)還包括了分別與上述邏輯單元相連接的用來(lái)完成調(diào)試操作的調(diào)試控制邏輯單元和指令插入邏輯單元;所述調(diào)試系統(tǒng)對(duì)外與處理器的外部調(diào)試接口和處理器內(nèi)的程序流控制單元連接。
此外,所述與調(diào)試系統(tǒng)連接的外部調(diào)試接口,其設(shè)置配備有完整的仿真系統(tǒng),該仿真系統(tǒng)包括具有匹配調(diào)試功能的使用外部調(diào)試接口的仿真器和控制仿真器的外部仿真主機(jī)。
當(dāng)然,根據(jù)上述調(diào)試系統(tǒng)所能實(shí)現(xiàn)的調(diào)試方法,其具體過(guò)程為當(dāng)外部仿真主機(jī)利用仿真器發(fā)出調(diào)試指令,接著數(shù)字信號(hào)處理器內(nèi)部調(diào)試系統(tǒng)通過(guò)外部調(diào)試接口接收到調(diào)試指令,然后對(duì)調(diào)試指令進(jìn)行解析,判斷調(diào)試指令類(lèi)型及相應(yīng)調(diào)試操作,其中可處理的調(diào)試操作類(lèi)型包括設(shè)置硬件斷點(diǎn)、清除硬件斷點(diǎn)、單步運(yùn)行、停止運(yùn)行、運(yùn)行、軟件斷點(diǎn)設(shè)置、軟件斷點(diǎn)清除、寄存器讀、寄存器寫(xiě)、存儲(chǔ)器讀、存儲(chǔ)器寫(xiě)及調(diào)試復(fù)位操作;解析操作完成后,根據(jù)相應(yīng)的調(diào)試操作,來(lái)操作和控制處理器的程序流控制邏輯,完成相應(yīng)的調(diào)試操作,其中借助一個(gè)具有公共寄存器訪問(wèn)地址的一個(gè)調(diào)試寄存器進(jìn)行數(shù)據(jù)存取,對(duì)于具有數(shù)據(jù)交互的調(diào)試指令如寄存器讀寫(xiě)操作、存儲(chǔ)器讀寫(xiě)操作等通過(guò)使用指令插入的方式以及利用調(diào)試寄存器的作用完成實(shí)現(xiàn);而對(duì)于其它類(lèi)型的調(diào)試指令直接通過(guò)控制處理器的程序流來(lái)完成。
本發(fā)明所提出的調(diào)試系統(tǒng)由于只與處理器的外部調(diào)試接口和處理器內(nèi)的程序流控制單元連接,并不與處理器內(nèi)部的寄存器文件組,存儲(chǔ)器管理單元(MMU)以及內(nèi)部存儲(chǔ)器有總線連接和資源交互,所以該調(diào)試系統(tǒng)不會(huì)侵占任何處理器內(nèi)部的系統(tǒng)資源,即對(duì)系統(tǒng)資源的消耗和占用也十分有限,這樣不會(huì)帶來(lái)額外的系統(tǒng)總線復(fù)雜度的上升。同時(shí)其采用指令插入式的方式簡(jiǎn)化了調(diào)試系統(tǒng)的結(jié)構(gòu),還降低了整個(gè)系統(tǒng)的開(kāi)發(fā)難度。更需指出的是本發(fā)明調(diào)試系統(tǒng)所形成的調(diào)試方法同樣適用于不同數(shù)字信號(hào)處理器和微處理器的調(diào)試系統(tǒng),具有廣泛的普遍的應(yīng)用性。
圖1為傳統(tǒng)的處理器調(diào)試方式的結(jié)構(gòu)圖;圖2為現(xiàn)有處理器普遍采用的一種直接存取操作的調(diào)試方式結(jié)構(gòu)圖;圖3為本發(fā)明所述的調(diào)試系統(tǒng)在數(shù)字信號(hào)處理器內(nèi)部的結(jié)構(gòu)圖;圖4為本發(fā)明所述的調(diào)試系統(tǒng)的結(jié)構(gòu)圖;圖5為本發(fā)明所述的調(diào)試系統(tǒng)中指令插入邏輯單元工作時(shí)內(nèi)部的狀態(tài)流程圖;圖6為本發(fā)明所述的調(diào)試系統(tǒng)在進(jìn)行調(diào)試時(shí)程序流控制單元的工作流程圖。
具體實(shí)施例方式以下借助附圖對(duì)本發(fā)明作進(jìn)一步的描述。
如圖3所示,根據(jù)本發(fā)明所述調(diào)試系統(tǒng)在數(shù)字信號(hào)處理器內(nèi)部的結(jié)構(gòu)可以看出,該調(diào)試系統(tǒng)只與處理器的外部調(diào)試接口和處理器內(nèi)的程序流控制單元連接,并不與處理器內(nèi)部的寄存器文件組,存儲(chǔ)器管理單元(MMU)以及內(nèi)部存儲(chǔ)器有總線連接和資源交互。
如圖4所示,本發(fā)明所述調(diào)試系統(tǒng)的結(jié)構(gòu)主要包含了三個(gè)功能模塊(單元)調(diào)試接口控制邏輯,指令插入邏輯和調(diào)試控制邏輯。
調(diào)試接口控制邏輯的主要功能是接收來(lái)自外部仿真器所發(fā)送的調(diào)試指令,并對(duì)調(diào)試指令進(jìn)行解析,判斷調(diào)試指令的類(lèi)型,并做出相應(yīng)的控制操作。所接收和解析的調(diào)試的指令類(lèi)型包括有寄存器讀取操作,寄存器修改操作,存儲(chǔ)器讀取操作,存儲(chǔ)器修改操作,設(shè)置硬件斷點(diǎn)操作,清除硬件斷點(diǎn)操作,單步運(yùn)行操作,運(yùn)行操作,停止運(yùn)行操作和復(fù)位操作。
根據(jù)上述系統(tǒng)描述,其調(diào)試過(guò)程中按照調(diào)試指令的類(lèi)型分別包含兩個(gè)處理方式指令插入和程序流控制。其中,寄存器讀取,寄存器修改,存儲(chǔ)器讀取和存儲(chǔ)器修改這四條具有數(shù)據(jù)交互的調(diào)試指令通過(guò)指令插入的方式完成,其余的調(diào)試指令則通過(guò)程序流控制的方式完成。
對(duì)于指令插入類(lèi)的調(diào)試操作的解析需要細(xì)化。對(duì)于寄存器讀取的調(diào)試指令,需要將所要讀取的寄存器的地址和此調(diào)試指令一同傳送到指令插入邏輯單元。對(duì)于寄存器修改的調(diào)試指令,要將改寫(xiě)的目標(biāo)寄存器的地址和要寫(xiě)入的數(shù)據(jù)一同傳送到指令插入邏輯單元。對(duì)于存儲(chǔ)器的調(diào)試操作也是類(lèi)似的,存儲(chǔ)器讀取的調(diào)試指令,需要將所要讀取的存儲(chǔ)器的地址空間和此調(diào)試指令一同傳送到指令插入邏輯單元。對(duì)于存儲(chǔ)器修改的調(diào)試指令,要將改寫(xiě)的存儲(chǔ)器的地址空間和要寫(xiě)入的數(shù)據(jù)一同傳送到指令插入邏輯單元,同時(shí)存儲(chǔ)器讀取和修改的調(diào)試指令都是面向?qū)嵉刂贰?br>
如圖5所示,根據(jù)所接收到的調(diào)試指令的類(lèi)型來(lái)執(zhí)行不同的插入操作。在指令插入邏輯內(nèi)部設(shè)有一個(gè)特殊的調(diào)試寄存器,此調(diào)試寄存器可以直接被調(diào)試接口邏輯進(jìn)行讀寫(xiě)操作,同時(shí)又具有一個(gè)公共寄存器的訪問(wèn)地址,駐停在處理器系統(tǒng)的寄存器訪問(wèn)的總線上,可被作為公共寄存器由處理器流水線進(jìn)行操作。
在接收到調(diào)試指令為寄存器讀指令時(shí),所做操作是在當(dāng)前正在執(zhí)行的指令流中,插入一條寄存器搬移的指令,其中源操作數(shù)為調(diào)試操作的所要讀取的寄存器,目標(biāo)操作數(shù)為指令插入邏輯內(nèi)部的調(diào)試寄存器,指令插入完成后便執(zhí)行當(dāng)前的指令流,所插入的指令執(zhí)行完畢后,即可在調(diào)試寄存器內(nèi)獲得調(diào)試操作所要讀取的寄存器的值,在通過(guò)調(diào)試接口邏輯將其傳送至外部的仿真器設(shè)備,即可完成讀取寄存器的調(diào)試操作。
在接收到調(diào)試指令為寄存器寫(xiě)指令時(shí),所做操作是在當(dāng)前正在執(zhí)行的指令流中,插入一條寄存器搬移的指令,其中源操作數(shù)為立即數(shù),其值為寫(xiě)寄存器調(diào)試指令所包括的數(shù)據(jù)值,目標(biāo)操作數(shù)為調(diào)試操作的所要修改的寄存器,指令插入完成后便執(zhí)行當(dāng)前的指令流,所插入的指令執(zhí)行完畢后,即可完成寫(xiě)寄存器的調(diào)試操作。
在接收到調(diào)試指令為存儲(chǔ)器讀指令時(shí),所做操作是在當(dāng)前正在執(zhí)行的指令流中,插入一條存儲(chǔ)器讀取的指令,其中源操作數(shù)為調(diào)試操作的所要讀取的存儲(chǔ)器的地址,目標(biāo)操作數(shù)為指令插入邏輯內(nèi)部的調(diào)試寄存器,指令插入完成后便執(zhí)行當(dāng)前的指令流,所插入的指令執(zhí)行完畢后,即可在調(diào)試寄存器內(nèi)獲得調(diào)試操作所要讀取的存儲(chǔ)器空間的值,在通過(guò)調(diào)試接口邏輯將其傳送至外部的仿真器設(shè)備,即可完成讀取存儲(chǔ)器的調(diào)試操作。
在接收到調(diào)試指令為存儲(chǔ)器寫(xiě)指令時(shí),所做操作是在當(dāng)前正在執(zhí)行的指令流中,插入一條寫(xiě)存儲(chǔ)器的指令,其中源操作數(shù)為立即數(shù),其值為寫(xiě)寄存器調(diào)試指令所包括的數(shù)據(jù)值,目標(biāo)操作數(shù)為調(diào)試操作的所要修改的存儲(chǔ)器的空間地址,指令插入完成后便執(zhí)行當(dāng)前的指令流,所插入的指令執(zhí)行完畢后,即可完成寫(xiě)存儲(chǔ)器的調(diào)試操作。
指令插入的要點(diǎn)在于調(diào)試系統(tǒng)往正在正常執(zhí)行的指令流中強(qiáng)行插入一條或數(shù)條特定的指令,用以完成一些特殊的包括寄存器和存儲(chǔ)器在內(nèi)的數(shù)據(jù)操作,所插入的指令的運(yùn)行過(guò)程并不會(huì)影響到所插入指令之前或之后的正常的程序流的運(yùn)行,也不會(huì)影響到程序指針(PC)的計(jì)數(shù),不會(huì)干擾了正常的程序流的執(zhí)行操作,只是所插入的指令的運(yùn)行結(jié)果會(huì)按照對(duì)應(yīng)的調(diào)試操作的操作目標(biāo)來(lái)讀取或是修改相關(guān)的寄存器或存儲(chǔ)器的值。
本發(fā)明提出的通過(guò)指令插入的方式完成調(diào)試操作,避免為調(diào)試操作增加額外的硬件資源以及數(shù)據(jù)的讀寫(xiě)總線,而是通過(guò)正常的執(zhí)行指令的途徑自然的完成相關(guān)的調(diào)試操作,雖然在完成調(diào)試操作的時(shí)間消耗上會(huì)有所增加,但用于調(diào)試系統(tǒng)的特點(diǎn),整體調(diào)試速度的瓶頸存在于外部仿真器的調(diào)試接口以及調(diào)試主機(jī)的調(diào)試軟件和調(diào)試硬件的交互上,以及處理器本身運(yùn)行的速度即為高速的,因而指令插入式的方法對(duì)調(diào)試操作的整體速度的影響幾乎是不可見(jiàn)的。同時(shí),指令插入式的方法也不會(huì)影響到正常的指令流的運(yùn)行,在合理的操作控制下,不會(huì)給正在調(diào)試的目標(biāo)程序流帶來(lái)額外的錯(cuò)誤的影響。
另外,對(duì)于其它類(lèi)型的調(diào)試操作,則直接通過(guò)程序流控制單元來(lái)實(shí)現(xiàn),系統(tǒng)的程序流控制單元即可以控制整個(gè)處理器流水線的程序流狀態(tài),包括各種停止及運(yùn)行的操作。在處理器的正常運(yùn)行模式下,程序流是不受人為控制的,為一直連續(xù)的執(zhí)行正常的程序流。當(dāng)進(jìn)入到調(diào)試模式,接收到調(diào)試相關(guān)的操作指示后,便啟動(dòng)相應(yīng)的程序流控制操作。
如圖6所示,上述調(diào)試方式在設(shè)置時(shí)內(nèi)部狀態(tài)最初是處于開(kāi)始狀態(tài),可以由調(diào)試控制觸發(fā)進(jìn)入到掛起狀態(tài),這里所述的調(diào)試控制可以包括有用戶(hù)通過(guò)觸發(fā)處理器進(jìn)入調(diào)試模式或者是程序斷點(diǎn)(軟件或硬件斷點(diǎn))的到達(dá)等操作方式。程序流控制狀態(tài)進(jìn)入掛起狀態(tài)后便可接收和完成不同的調(diào)試控制操作。
在調(diào)試操作中,對(duì)程序流產(chǎn)生影響的操作包括有運(yùn)行,單步運(yùn)行和停止運(yùn)行操作。通過(guò)執(zhí)行上述的調(diào)試操作指令,使內(nèi)部程序流狀態(tài)在正常狀態(tài),掛起狀態(tài)和單步狀態(tài)間進(jìn)行切換,調(diào)試操作中在正常狀態(tài)向掛起狀態(tài)切換時(shí)也包括了由于斷點(diǎn)到達(dá)所引起的事件。
等待調(diào)試狀態(tài)則是為了配合指令插入類(lèi)的調(diào)試操作進(jìn)行程序流操作而設(shè)定的,包括執(zhí)行了指令插入式的調(diào)試操作后,在程序流插入相關(guān)指令時(shí),由此狀態(tài)來(lái)控制插入的指令的正確執(zhí)行完畢。即對(duì)于調(diào)試所插入的指令的執(zhí)行也是由程序流控制邏輯來(lái)控制實(shí)現(xiàn)。
以上介紹是基于本發(fā)明的一個(gè)具體實(shí)施例,其中的指令插入方式的細(xì)則如具體插入指令的編碼可根據(jù)不同的處理器系統(tǒng)采用不同的指令方式,并不限定于具體的處理器的指令。采用同種方式應(yīng)用于不同的處理器系統(tǒng)當(dāng)中實(shí)現(xiàn)調(diào)試功能不超出本發(fā)明的提供以及保護(hù)范圍。
權(quán)利要求
1.一種用于數(shù)字信號(hào)處理器的調(diào)試系統(tǒng),其特征在于,所述該處理器調(diào)試系統(tǒng)是一個(gè)處于處理器內(nèi)部的相對(duì)獨(dú)立的調(diào)試邏輯單元;該調(diào)試邏輯單元內(nèi)部包括了具備接收來(lái)自處理器外部仿真器所發(fā)送的調(diào)試指令,并對(duì)該指令進(jìn)行解析的調(diào)試接口邏輯單元,同時(shí)還包括了分別與上述邏輯單元相連接的用來(lái)完成調(diào)試操作的調(diào)試控制邏輯單元和指令插入邏輯單元;所述調(diào)試系統(tǒng)對(duì)外與處理器的外部調(diào)試接口和處理器內(nèi)的程序流控制單元連接。
2.根據(jù)權(quán)利要求1的用于數(shù)字信號(hào)處理器的調(diào)試系統(tǒng),其特征在于,所述與調(diào)試系統(tǒng)連接的外部調(diào)試接口,其設(shè)置配備有完整的仿真系統(tǒng),該仿真系統(tǒng)包括具有匹配調(diào)試功能的使用外部調(diào)試接口的仿真器和控制仿真器的外部仿真主機(jī)。
3.根據(jù)上述調(diào)試系統(tǒng)所能實(shí)現(xiàn)的調(diào)試方法,其特征在于,所述方法中當(dāng)外部仿真主機(jī)利用仿真器發(fā)出調(diào)試指令,接著數(shù)字信號(hào)處理器內(nèi)部調(diào)試系統(tǒng)通過(guò)外部調(diào)試接口接收到調(diào)試指令,然后對(duì)調(diào)試指令進(jìn)行解析,判斷調(diào)試指令類(lèi)型及相應(yīng)調(diào)試操作,其中可處理的調(diào)試操作類(lèi)型包括設(shè)置硬件斷點(diǎn)、清除硬件斷點(diǎn)、單步運(yùn)行、停止運(yùn)行、運(yùn)行、軟件斷點(diǎn)設(shè)置、軟件斷點(diǎn)清除、寄存器讀、寄存器寫(xiě)、存儲(chǔ)器讀、存儲(chǔ)器寫(xiě)及調(diào)試復(fù)位操作;解析操作完成后,根據(jù)相應(yīng)的調(diào)試操作,來(lái)操作和控制處理器的程序流控制邏輯,完成相應(yīng)的調(diào)試操作,其中借助一個(gè)具有公共寄存器訪問(wèn)地址的一個(gè)調(diào)試寄存器進(jìn)行數(shù)據(jù)存取,對(duì)于具有數(shù)據(jù)交互的調(diào)試指令如寄存器讀寫(xiě)操作、存儲(chǔ)器讀寫(xiě)操作等通過(guò)使用指令插入的方式以及利用調(diào)試寄存器的作用完成實(shí)現(xiàn);而對(duì)于其它類(lèi)型的調(diào)試指令直接通過(guò)控制處理器的程序流來(lái)完成。
全文摘要
本發(fā)明公開(kāi)了一種用于數(shù)字信號(hào)處理器的調(diào)試系統(tǒng)及其調(diào)試方法。該調(diào)試系統(tǒng)由于只與處理器的外部調(diào)試接口和處理器內(nèi)的程序流控制單元連接,并不與處理器內(nèi)部的寄存器文件組,存儲(chǔ)器管理單元(MMU)以及內(nèi)部存儲(chǔ)器有總線連接和資源交互,所以該調(diào)試系統(tǒng)不會(huì)侵占任何處理器內(nèi)部的系統(tǒng)資源,即對(duì)系統(tǒng)資源的消耗和占用也十分有限,這樣不會(huì)帶來(lái)額外的系統(tǒng)總線復(fù)雜度的上升。同時(shí)其采用指令插入式的方式簡(jiǎn)化了調(diào)試系統(tǒng)的結(jié)構(gòu),還降低了整個(gè)系統(tǒng)的開(kāi)發(fā)難度。更需指出的是本發(fā)明調(diào)試系統(tǒng)所形成的調(diào)試方法同樣適用于不同數(shù)字信號(hào)處理器和微處理器的調(diào)試系統(tǒng),具有廣泛的普遍的應(yīng)用性。
文檔編號(hào)G06F11/36GK101042671SQ20071003986
公開(kāi)日2007年9月26日 申請(qǐng)日期2007年4月24日 優(yōu)先權(quán)日2007年4月24日
發(fā)明者劉春暉, 李興仁, 金榮偉, 林錦麟, 張達(dá)文, 楊一茜 申請(qǐng)人:上海華龍信息技術(shù)開(kāi)發(fā)中心