調(diào)試系統(tǒng)和調(diào)試方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及嵌入式系統(tǒng)調(diào)試技術(shù)領(lǐng)域,更具體地說,涉及一種調(diào)試系統(tǒng)和調(diào)試方法。
【背景技術(shù)】
[0002]現(xiàn)有技術(shù)中,嵌入式程序的編輯、編譯、鏈接過程都是在計(jì)算機(jī)(或工作站)上完成的,我們通常稱之為宿主機(jī)(Host),而程序的最終運(yùn)行卻是在和宿主機(jī)有很大區(qū)別的嵌入式設(shè)備上進(jìn)行的,我們通常稱之為目標(biāo)機(jī)(Target)。其中,目標(biāo)機(jī)和宿主機(jī)的主要差別為:一、硬件環(huán)境不同,即CF1IKCentral Processing Unit,處理器)類型不同;二、軟件環(huán)境不同,宿主機(jī)上有成熟的操作系統(tǒng)的應(yīng)用軟件支持,而目標(biāo)機(jī)一般是裸機(jī)或者需要調(diào)試的嵌入式系統(tǒng)?;诖?,調(diào)試是嵌入式系統(tǒng)軟件開發(fā)過程中必不可少的環(huán)節(jié)。
[0003]現(xiàn)有的嵌入式系統(tǒng)的調(diào)試系統(tǒng)通常是通過仿真器和特定調(diào)試總線進(jìn)行的,例如ARM系列處理器通過JTAG/SWD總線和連接計(jì)算機(jī)的ARM仿真器進(jìn)行調(diào)試,MIPS系列處理器通過EJTAG總線和連接計(jì)算機(jī)的MIPS仿真器進(jìn)行調(diào)試。但是,由于每個(gè)處理器架構(gòu)都需要配置專門的調(diào)試總線和仿真器,因此,會(huì)帶來使用不便的問題。并且,其不能實(shí)現(xiàn)遠(yuǎn)程調(diào)試。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明提供了一種調(diào)試系統(tǒng)和調(diào)試方法,以解決現(xiàn)有技術(shù)中每個(gè)處理器架構(gòu)都需要配置專門的調(diào)試總線和仿真器而導(dǎo)致使用上的不便以及不能實(shí)現(xiàn)遠(yuǎn)程調(diào)試的問題。
[0005]為實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:
[0006]—種調(diào)試系統(tǒng),包括內(nèi)嵌有調(diào)試模塊的片上總線控制器和與所述片上總線控制器連接的至少一個(gè)外部總線控制器;
[0007]每一所述外部總線控制器與一調(diào)試設(shè)備連接,不同的所述外部總線控制器通過不同的通訊方式與所述調(diào)試設(shè)備通訊,所述外部總線控制器用于將所述調(diào)試設(shè)備輸入的調(diào)試命令傳輸至所述片上總線控制器,將所述片上總線控制器輸出的調(diào)試結(jié)果傳輸至所述調(diào)試設(shè)備;
[0008]所述片上總線控制器與嵌入式系統(tǒng)的處理器單元連接,所述片上總線控制器內(nèi)嵌的調(diào)試模塊用于在接收到任一所述外部總線控制器輸入的調(diào)試命令后對(duì)所述調(diào)試命令進(jìn)行解析,并根據(jù)所述解析后的調(diào)試命令執(zhí)行相應(yīng)調(diào)試動(dòng)作。
[0009]優(yōu)選的,所述調(diào)試模塊包括通訊控制單元、調(diào)試命令解析單元和調(diào)試執(zhí)行單元;
[0010]所述通訊控制單元用于接收所述外部總線控制器輸入的調(diào)試命令,并將所述調(diào)試命令傳輸至所述調(diào)試命令解析單元,將調(diào)試結(jié)果傳輸至所述外部總線控制器;
[0011]所述調(diào)試命令解析單元用于按照預(yù)設(shè)格式對(duì)所述調(diào)試命令進(jìn)行解析,并將解析后的調(diào)試命令傳輸至所述調(diào)試執(zhí)行單元;
[0012]所述調(diào)試執(zhí)行單元根據(jù)所述解析后的調(diào)試命令觸發(fā)相應(yīng)的調(diào)試功能模塊執(zhí)行相應(yīng)調(diào)試操作。
[0013]優(yōu)選的,所述調(diào)試執(zhí)行單元中的調(diào)試功能模塊包括物理地址空間讀寫模塊、硬件程序斷點(diǎn)處理模塊、硬件數(shù)據(jù)斷點(diǎn)處理模塊、程序暫停處理模塊和程序流程追蹤模塊;
[0014]所述物理地址空間讀寫模塊用于根據(jù)解析后的物理地址空間讀寫命令觸發(fā)片上總線控制器的讀寫動(dòng)作,并通過所述通訊控制單元將片上總線控制器的讀寫結(jié)果傳輸至所述外部總線控制器;
[0015]所述硬件程序斷點(diǎn)處理模塊用于根據(jù)解析后的硬件程序斷點(diǎn)設(shè)置命令保存程序斷點(diǎn)地址,并在所述處理器單元讀取所述斷點(diǎn)地址的指令時(shí),以特殊指令替換所述斷點(diǎn)地址處的原始指令,以將所述處理器單元引導(dǎo)到特定的調(diào)試程序,即刻停止正常運(yùn)行并等待其它調(diào)試命令;
[0016]所述硬件程序斷點(diǎn)處理模塊還用于根據(jù)解析后的硬件程序斷點(diǎn)清除命令刪除相應(yīng)的程序斷點(diǎn)地址;
[0017]所述硬件數(shù)據(jù)斷點(diǎn)處理模塊用于根據(jù)解析后的硬件數(shù)據(jù)斷點(diǎn)設(shè)置命令保存數(shù)據(jù)斷點(diǎn)地址,并在所述處理器單元讀或?qū)懰鰯帱c(diǎn)地址時(shí)向所述處理器單元發(fā)出特定中斷,以將所述處理器單元引導(dǎo)到特定的調(diào)試程序,即刻停止正常運(yùn)行并等待其它調(diào)試命令;
[0018]所述硬件數(shù)據(jù)斷點(diǎn)處理模塊還用于根據(jù)解析后的硬件數(shù)據(jù)斷點(diǎn)清除命令刪除相應(yīng)的數(shù)據(jù)斷點(diǎn)地址;
[0019]所述程序暫停處理模塊用于根據(jù)解析后的程序暫停命令向所述處理器單元發(fā)出特定中斷,以將所述處理器單元引導(dǎo)到特定的調(diào)試程序,即刻停止運(yùn)行等待其它調(diào)試命令;
[0020]所述程序流程追蹤模塊用于根據(jù)解析后的程序流程追蹤命令監(jiān)測(cè)和保存所述處理器單元讀取的指令流的地址,并在壓縮之后傳輸至所述外部總線控制器,以便所述調(diào)試設(shè)備獲得被追蹤程序的指令流。
[0021]優(yōu)選的,所述片上總線控制器與所述外部總線控制器通過片上輸入輸出總線連接,所述片上總線控制器與所述外部總線控制器之間以雙向字節(jié)流的方式進(jìn)行數(shù)據(jù)的傳輸。
[0022]優(yōu)選的,所述片上總線控制器通過所述處理器單元的專有調(diào)試接口與所述處理器單元連接。
[0023]優(yōu)選的,所述外部總線控制器通過UART串口、SPI串口、USB接口或以太網(wǎng)口與所述調(diào)試設(shè)備連接。
[0024]—種調(diào)試方法,應(yīng)用于如上任一項(xiàng)所述的調(diào)試系統(tǒng),所述調(diào)試方法包括:
[0025]片上總線控制器內(nèi)嵌的調(diào)試模塊對(duì)接收到的調(diào)試命令進(jìn)行解析;
[0026]所述片上總線控制器內(nèi)嵌調(diào)試模塊根據(jù)所述解析后的調(diào)試命令執(zhí)行相應(yīng)調(diào)試動(dòng)作。
[0027]優(yōu)選的,所述片上總線控制器對(duì)接收到的調(diào)試命令進(jìn)行解析之前還包括:
[0028]所述片上總線控制器的內(nèi)嵌調(diào)試模塊通過外部總線控制器接收調(diào)試設(shè)備輸入的調(diào)試命令。
[0029]優(yōu)選的,根據(jù)所述解析后的調(diào)試命令執(zhí)行相應(yīng)調(diào)試動(dòng)作之后還包括:
[0030]所述片上總線控制器的內(nèi)嵌調(diào)試模塊通過所述外部總線控制器將調(diào)試結(jié)果傳輸至所述調(diào)試設(shè)備。[0031 ]優(yōu)選的,根據(jù)所述解析后的調(diào)試命令執(zhí)行相應(yīng)調(diào)試動(dòng)作包括:
[0032]根據(jù)解析后的物理地址空間讀寫命令觸發(fā)所述片上總線控制器進(jìn)行讀寫動(dòng)作,并將所述片上總線控制器的讀寫結(jié)果傳輸至所述外部總線控制器;
[0033]根據(jù)解析后的硬件程序斷點(diǎn)設(shè)置命令保存程序斷點(diǎn)地址,并在所述處理器單元讀取所述斷點(diǎn)地址的指令時(shí),以特殊指令替換所述斷點(diǎn)地址處的原始指令,以將所述處理器單元引導(dǎo)到特定的調(diào)試程序,即刻停止正常運(yùn)行并等待其它調(diào)試命令;
[0034]根據(jù)解析后的硬件數(shù)據(jù)斷點(diǎn)設(shè)置命令保存數(shù)據(jù)斷點(diǎn)地址,并在所述處理器單元讀或?qū)懰鰯帱c(diǎn)地址時(shí)向所述處理器單元發(fā)出特定中斷,以將所述處理器單元引導(dǎo)到特定的調(diào)試程序,即刻停止正常運(yùn)行并等待其它調(diào)試命令;
[0035]根據(jù)解析后的硬件程序斷點(diǎn)清除命令刪除相應(yīng)程序斷點(diǎn)地址;
[0036]根據(jù)解析后的硬件數(shù)據(jù)斷點(diǎn)清除命令刪除相應(yīng)數(shù)據(jù)斷點(diǎn)地址;
[0037]根據(jù)解析后的程序暫停命令向所述處理器單元發(fā)出特定中斷,以將所述處理器單元引導(dǎo)到特定的調(diào)試程序,即刻停止運(yùn)行等待其它調(diào)試命令;
[0038]根據(jù)解析后的程序流程追蹤命令監(jiān)測(cè)和保存所述處理器單元讀取的指令流的地址,并將所述指令流的地址壓縮之后傳輸至所述外部總線控制器,以便所述調(diào)試設(shè)備獲得被追蹤程序的指令流。
[0039]與現(xiàn)有技術(shù)相比,本發(fā)明所提供的技術(shù)方案具有以下優(yōu)點(diǎn):
[0040]本發(fā)明所提供的調(diào)試系統(tǒng)和調(diào)試方法,在與嵌入式系統(tǒng)的處理器單元連接的片上總線控制器上內(nèi)嵌了調(diào)試模塊,從而可以通過片上總線控制器內(nèi)嵌的調(diào)試模塊對(duì)所述嵌入式系統(tǒng)中的軟件進(jìn)行調(diào)試,進(jìn)而不再需要配置專門的仿真器,并且,還可以通用外部總線控制器連接互聯(lián)網(wǎng)實(shí)現(xiàn)遠(yuǎn)程調(diào)試,使嵌入式系統(tǒng)調(diào)試更加方便。
【附圖說明】
[0041]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)