本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種控制調(diào)試請求的裝置及數(shù)據(jù)處理器。
背景技術(shù):
數(shù)據(jù)處理器的調(diào)試是指數(shù)據(jù)處理器的開發(fā)人員編好程序后,獲取程序在數(shù)據(jù)處理器中的運(yùn)行情況,進(jìn)而對數(shù)據(jù)處理器的運(yùn)行進(jìn)行查錯和排錯的過程;目前主流的調(diào)試手段有:外部調(diào)試和自主調(diào)試兩種。
外部調(diào)試是指待測試數(shù)據(jù)處理器通過外部調(diào)試器與代理服務(wù)程序連接,外部調(diào)試器采用聯(lián)合測試工作組(jointtestactiongroup,jtag)協(xié)議和待調(diào)試數(shù)據(jù)處理器進(jìn)行通信。例如:外部調(diào)試器可以在數(shù)據(jù)處理器設(shè)置多個內(nèi)存硬斷點(diǎn),當(dāng)數(shù)據(jù)處理器執(zhí)行代理服務(wù)程序,并觸發(fā)內(nèi)存硬斷點(diǎn)時,數(shù)據(jù)處理器進(jìn)入外部調(diào)試模式,此時,數(shù)據(jù)處理器不進(jìn)行任何操作,外部調(diào)試器執(zhí)行調(diào)試程序的操作;但是,在使用外部調(diào)試對應(yīng)用程序進(jìn)行調(diào)試時,由于應(yīng)用程序的進(jìn)程切換在使用斷點(diǎn)方式調(diào)試時會存在誤斷、難斷等問題,造成應(yīng)用程序難調(diào)試和跟蹤。
為了方便對應(yīng)用程序進(jìn)行調(diào)試,可以采用自主調(diào)試的手段,自主調(diào)試是指待調(diào)試數(shù)據(jù)處理器直接和主機(jī)連接,其中,主機(jī)用于向數(shù)據(jù)處理器下載待調(diào)試的內(nèi)核程序或者應(yīng)用程序,自主調(diào)試裝置在應(yīng)用程序中嵌入調(diào)試配置程序,設(shè)置內(nèi)存硬斷點(diǎn)。數(shù)據(jù)處理器在執(zhí)行應(yīng)用程序的過程中,觸發(fā)內(nèi)存硬斷點(diǎn),自主調(diào)試裝置產(chǎn)生調(diào)試異常請求至數(shù)據(jù)處理器,數(shù)據(jù)處理器響應(yīng)該調(diào)試異常請求,并執(zhí)行調(diào)試異常服務(wù)程序。
在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下技術(shù)問題:
由于自主調(diào)試是通過自主調(diào)試裝置向數(shù)據(jù)處理器發(fā)送調(diào)試異常請求的方式執(zhí)行調(diào)試操作,因此在數(shù)據(jù)處理器執(zhí)行程序的關(guān)鍵代碼(例如,現(xiàn)場的保存和恢復(fù))時也可能接收到調(diào)試異常請求。如果數(shù)據(jù)處理器立即響應(yīng)調(diào)試異常,那么可能導(dǎo)致數(shù)據(jù)處理器的狀態(tài)被破壞,導(dǎo)致程序無法正常運(yùn)行。如果數(shù)據(jù)處理器不響應(yīng)該調(diào)試異常,那么該調(diào)試異常會被丟掉,從而導(dǎo)致數(shù)據(jù)處理器在某一個斷點(diǎn)無法得到調(diào)試。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供的控制調(diào)試請求的裝置及數(shù)據(jù)處理器,能夠在保證數(shù)據(jù)處理器當(dāng)前處理應(yīng)用程序狀態(tài)不被破壞的前提下,避免調(diào)試請求的丟失問題。
第一方面,本發(fā)明提供一種控制調(diào)試請求的裝置,包括:
調(diào)試電路、調(diào)試異常狀態(tài)寄存器、數(shù)據(jù)處理電路,其中,
所述調(diào)試電路,與所述數(shù)據(jù)處理電路相連,用于實(shí)時獲取所述數(shù)據(jù)處理電路的應(yīng)用程序狀態(tài)信息,并對所述應(yīng)用程序狀態(tài)信息進(jìn)行處理產(chǎn)生調(diào)試請求,以及發(fā)送所述調(diào)試請求至所述數(shù)據(jù)處理電路,所述調(diào)試請求用于指示所述數(shù)據(jù)處理電路執(zhí)行調(diào)試異常服務(wù)程序;
所述調(diào)試異常狀態(tài)寄存器,與所述數(shù)據(jù)處理電路相連,用于讀取并顯示所述數(shù)據(jù)處理電路正在執(zhí)行的應(yīng)用程序是否具有可中斷性;所述調(diào)試異常狀態(tài)寄存器包括調(diào)試異常使能位和調(diào)試異常掛起位,其中,所述調(diào)試異常使能位為高代表所述數(shù)據(jù)處理電路執(zhí)行的應(yīng)用程序具有可中斷性,所述調(diào)試異常使能位為低代表所述數(shù)據(jù)處理電路執(zhí)行的應(yīng)用程序不具有可中斷性,所述調(diào)試異常掛起位為高表示存在調(diào)試異常請求等待被處理,調(diào)試異常掛起位為低表示不存在調(diào)試異常請求等待被處理;
所述數(shù)據(jù)處理電路,用于接收所述調(diào)試電路發(fā)送的調(diào)試請求,同時獲取所述調(diào)試異常狀態(tài)寄存器的信息,當(dāng)所述調(diào)試異常狀態(tài)寄存器的所述調(diào)試異常使能位為高時,響應(yīng)所述調(diào)試異常請求,并執(zhí)行所述調(diào)試異常服務(wù)程序;當(dāng)所述調(diào)試異常狀態(tài)寄存器的所述調(diào)試異常使能位為低時,置高所述調(diào)試異常掛起位,繼續(xù)完成當(dāng)前操作。
可選地,所述應(yīng)用程序狀態(tài)信息為所述數(shù)據(jù)處理電路發(fā)送的指令執(zhí)行信息或內(nèi)存訪問地址信息。
可選地,所述調(diào)試請求為所述調(diào)試電路在內(nèi)部調(diào)試模式下產(chǎn)生的調(diào)試異常請求。
可選地,所述調(diào)試異常請求為,所述調(diào)試電路接收所述數(shù)據(jù)處理電路發(fā)送的指令執(zhí)行信息,并對所述指令執(zhí)行信息進(jìn)行處理后產(chǎn)生的指令觸發(fā)型調(diào)試異常請求。
可選地,所述調(diào)試異常請求為,所述調(diào)試電路接收所述數(shù)據(jù)處理電路發(fā)送的內(nèi)存訪問地址信息,并對所述內(nèi)存訪問地址信息進(jìn)行處理后產(chǎn)生的內(nèi)存觸發(fā)型調(diào)試異常請求。
可選地,所述數(shù)據(jù)處理電路還用于,在響應(yīng)所述調(diào)試異常請求后,置低所述調(diào)試異常使能位,置高所述調(diào)試異常掛起位。
可選地,所述數(shù)據(jù)處理電路還用于,
在完成執(zhí)行所述調(diào)試異常服務(wù)程序,并退出所述調(diào)試異常服務(wù)程序后,置高所述調(diào)試異常使能位。
可選地,當(dāng)所述數(shù)據(jù)處理電路同時接收到調(diào)試異常請求和中斷請求時,所述數(shù)據(jù)處理電路優(yōu)先處理調(diào)試異常請求。
第二方面,本發(fā)明提供一種數(shù)據(jù)處理器,所述數(shù)據(jù)處理器包括上述控制調(diào)試請求的裝置。
本發(fā)明實(shí)施例提供的控制調(diào)試請求的裝置及數(shù)據(jù)處理器,通過使用調(diào)試異常狀態(tài)寄存器實(shí)時監(jiān)測數(shù)據(jù)處理電路狀態(tài)并根據(jù)所述數(shù)據(jù)處理電路的狀態(tài)對調(diào)試請求進(jìn)行處理,能夠保證數(shù)據(jù)處理電路當(dāng)前處理的應(yīng)用程序狀態(tài)不被破壞,且能夠避免調(diào)試請求的丟失。
附圖說明
圖1為本發(fā)明一實(shí)施例控制調(diào)試請求的裝置的結(jié)構(gòu)示意圖;
圖2為本發(fā)明調(diào)試電路的一種結(jié)構(gòu)示意圖;
圖3為本發(fā)明調(diào)試電路的另一種結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明提供一種控制調(diào)試請求的裝置,如圖1所示,所述裝置包括:
調(diào)試電路11,與所述數(shù)據(jù)處理電路13相連,用于實(shí)時獲取所述數(shù)據(jù)處理電路13的應(yīng)用程序狀態(tài)信息,并對所述應(yīng)用程序狀態(tài)信息進(jìn)行處理產(chǎn)生調(diào)試請求,以及發(fā)送所述調(diào)試請求至所述數(shù)據(jù)處理電路13,所述調(diào)試請求用于指示所述數(shù)據(jù)處理電路13執(zhí)行調(diào)試異常服務(wù)程序;
所述調(diào)試異常狀態(tài)寄存器12,與所述數(shù)據(jù)處理電路13相連,用于讀取并顯示所述數(shù)據(jù)處理電路13正在執(zhí)行的應(yīng)用程序是否具有可中斷性;所述調(diào)試異常狀態(tài)寄存器12包括調(diào)試異常使能位和調(diào)試異常掛起位,其中,所述調(diào)試異常使能位為高代表所述數(shù)據(jù)處理電路執(zhí)行的應(yīng)用程序具有可中斷性,所述調(diào)試異常使能位為低代表所述數(shù)據(jù)處理電路執(zhí)行的應(yīng)用程序不具有可中斷性,所述調(diào)試異常掛起位為高表示存在調(diào)試異常請求等待被處理,調(diào)試異常掛起位為低表示不存在調(diào)試異常請求等待被處理;
所述數(shù)據(jù)處理電路13,用于接收所述調(diào)試電路11發(fā)送的調(diào)試請求,同時獲取所述調(diào)試異常狀態(tài)寄存器12的信息,當(dāng)所述調(diào)試異常狀態(tài)寄存器12的所述調(diào)試異常使能位為高時,響應(yīng)所述調(diào)試異常請求,并執(zhí)行所述調(diào)試異常服務(wù)程序;當(dāng)所述調(diào)試異常狀態(tài)寄存器12的所述調(diào)試異常使能位為低時,置高所述調(diào)試異常掛起位,繼續(xù)完成當(dāng)前操作。
本發(fā)明實(shí)施例提供的控制調(diào)試請求的裝置,通過使用調(diào)試異常狀態(tài)寄存器實(shí)時監(jiān)測數(shù)據(jù)處理電路狀態(tài)并根據(jù)所述數(shù)據(jù)處理電路的狀態(tài)對調(diào)試請求進(jìn)行處理,能夠保證數(shù)據(jù)處理電路當(dāng)前處理的應(yīng)用程序狀態(tài)不被破壞,且能夠避免調(diào)試請求的丟失問題。
可選地,所述應(yīng)用程序狀態(tài)信息為所述數(shù)據(jù)處理電路13發(fā)送的指令執(zhí)行信息或內(nèi)存訪問地址信息。
可選地,所述調(diào)試請求為所述調(diào)試電路11在內(nèi)部調(diào)試模式下產(chǎn)生的調(diào)試異常請求。
可選地,所述調(diào)試異常請求為,所述調(diào)試電路11接收所述數(shù)據(jù)處理電路13發(fā)送的指令執(zhí)行信息,并對所述指令執(zhí)行信息進(jìn)行處理后產(chǎn)生的指令觸發(fā)型調(diào)試異常請求。
可選地,所述調(diào)試異常請求為,所述調(diào)試電路11接收所述數(shù)據(jù)處理電路13發(fā)送的內(nèi)存訪問地址信息,并對所述內(nèi)存訪問地址信息進(jìn)行處理后產(chǎn)生的內(nèi)存觸發(fā)型調(diào)試異常請求。
具體地,所述調(diào)試電路11接收所述內(nèi)存訪問地址信息后,將所述內(nèi)存訪問地址信息與預(yù)設(shè)內(nèi)存硬斷點(diǎn)地址信息進(jìn)行對比,當(dāng)存在內(nèi)存訪問地址信息與內(nèi)存硬斷點(diǎn)地址信息匹配成功時,根據(jù)匹配成功的內(nèi)存硬斷點(diǎn)的模式配置位確定調(diào)試請求為第一調(diào)試請求或第二調(diào)試請求,并發(fā)送所述第一調(diào)試求或第二調(diào)試請求至所述數(shù)據(jù)處理電路13。
可選地,如圖2所示,為所述調(diào)試電路11的一種結(jié)構(gòu)示意圖,其中,所述調(diào)試電路11提供n個內(nèi)存硬斷點(diǎn),且每個內(nèi)存硬斷點(diǎn)包含一個內(nèi)存硬斷點(diǎn)控制寄存器61、一個內(nèi)存硬斷點(diǎn)計(jì)數(shù)寄存器62、一個內(nèi)存硬斷點(diǎn)基地址寄存器63和一個內(nèi)存硬斷點(diǎn)掩碼寄存器64。其中,內(nèi)存硬斷點(diǎn)控制寄存器61提供使能位和條件位供用戶配置,所述使能位可配置為指令硬斷點(diǎn)使能位也可以配置為數(shù)據(jù)硬斷點(diǎn)使能位,所述條件位可配置位指令硬斷點(diǎn)條件位也可配置為數(shù)據(jù)硬斷點(diǎn)條件位。
同時,這n個內(nèi)存硬斷點(diǎn)受一個模式配置位60控制,所述模式配置位60包括外部調(diào)試模式或調(diào)試異常模式,斷點(diǎn)匹配模塊62實(shí)時監(jiān)測數(shù)據(jù)處理電路40發(fā)送的應(yīng)用程序狀態(tài)信息,當(dāng)應(yīng)用程序狀態(tài)信息與某個內(nèi)存硬斷點(diǎn)信息匹配時,再根據(jù)所述模式配置位60決定是否產(chǎn)生調(diào)試異常請求。
當(dāng)所述模式配置位60的調(diào)試模式為外部調(diào)試模式時,所述調(diào)試電路11不會產(chǎn)生調(diào)試異常請求,而是請求所述數(shù)據(jù)處理電路13進(jìn)入外部調(diào)試模式,由外部調(diào)試器獲得所述數(shù)據(jù)處理電路13的控制權(quán)完成調(diào)試操作;
當(dāng)所述模式配置位60的調(diào)試模式為調(diào)試異常模式時,所述調(diào)試電路11產(chǎn)生調(diào)試異常請求,請求數(shù)據(jù)處理電路13執(zhí)行調(diào)試異常服務(wù)程序完成調(diào)試操作。
可選地,如圖3所示,為所述調(diào)試電路的另一種結(jié)構(gòu)示意圖,其中,所述調(diào)試電路11提供多組模式配置位70,每組模式配置位70為每個內(nèi)存硬斷點(diǎn)提供獨(dú)立的調(diào)試模式;當(dāng)所述調(diào)試模式為外部調(diào)試模式時,所述調(diào)試電路11請求所述數(shù)據(jù)處理電路13進(jìn)入外部調(diào)試模式,外部調(diào)試器獲得所述數(shù)據(jù)處理電路13的控制權(quán)完成調(diào)試操作;當(dāng)所述調(diào)試模式為調(diào)試異常模式時,所述調(diào)試電路11產(chǎn)生調(diào)試異常請求,請求數(shù)據(jù)處理電路13執(zhí)行調(diào)試異常服務(wù)程序完成調(diào)試操作。
可選地,所述數(shù)據(jù)處理電路13還用于,在完成執(zhí)行所述調(diào)試異常服務(wù)程序,并退出所述調(diào)試異常服務(wù)程序后,置高所述調(diào)試異常掛起位。
可選地,當(dāng)所述數(shù)據(jù)處理電路13同時接收到調(diào)試異常請求和中斷請求時,所述數(shù)據(jù)處理電路13優(yōu)先處理調(diào)試異常請求。
本發(fā)明實(shí)施例還提供一種數(shù)據(jù)處理器,所述數(shù)據(jù)處理器包括上述控制調(diào)試請求的裝置。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。