本發(fā)明涉及一種芯片仿真器,特別涉及一種具有控制程序單步調(diào)試功能的仿真器。
背景技術(shù):
現(xiàn)有的仿真器多是以FPGA仿真芯片功能,使用JTAG IEEE1149.1標(biāo)準(zhǔn)和處理器片上調(diào)試技術(shù),通過在芯片硬件中增加調(diào)試功能,來實(shí)現(xiàn)芯片仿真器。這類仿真器大都支持軟件調(diào)試、單步執(zhí)行指令的功能,對提前開發(fā)軟件和解決軟件設(shè)計(jì)缺陷有很大的幫助。
用戶通過仿真器IDE(集成開發(fā)環(huán)境)界面,下載程序到仿真器硬件上,進(jìn)入IDE調(diào)試界面進(jìn)行程序的調(diào)試。通過設(shè)置PC值,或執(zhí)行程序調(diào)用,跳轉(zhuǎn)到相應(yīng)的程序入口處。若當(dāng)前執(zhí)行的是賦值命令,仿真器硬件執(zhí)行當(dāng)前指令返回CPU狀態(tài)信息,IDE調(diào)試界面停止到下一條指令語句處,并更新當(dāng)前顯示窗口的信息;若當(dāng)前執(zhí)行的是函數(shù)命令,單步命令之后IDE調(diào)試界面停止到被調(diào)函數(shù)的首條指令處,并更新顯示窗口信息。用戶使用IDE的單步調(diào)試命令,可以方便分析程序執(zhí)行流程,發(fā)現(xiàn)程序執(zhí)行中的異常現(xiàn)象,快速定位并解決程序設(shè)計(jì)中的問題。
在金融應(yīng)用開發(fā)方面,由于其產(chǎn)品的高安全性要求,對于芯片廠家和芯片平臺用戶,使用仿真器,需要保護(hù)各自的安全算法和安全配置流程,允許非權(quán)限用戶調(diào)用安全算法API及安全配置API,不允許非權(quán)限用戶通過單步調(diào)試命令,進(jìn)入到此類API函數(shù)中,獲取安全數(shù)據(jù)。
為了滿足金融應(yīng)用開發(fā)在仿真器安全功能的需要,本發(fā)明通過程序區(qū)權(quán)限定義,在單步執(zhí)行程序時(shí)可以控制單步調(diào)試功能。仿真器中定義了安全區(qū)和用戶區(qū)權(quán)限,安全區(qū)程序具有不可單步調(diào)試權(quán)限,芯片廠家或芯片平臺用戶的程序存放在安全區(qū),非權(quán)限用戶只能調(diào)用安全區(qū)程序函數(shù),不能進(jìn)行程序反匯編和單步跟蹤分析。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所解決的技術(shù)問題是,如何設(shè)計(jì)一種具有控制程序單步調(diào)試功能的仿真器。
本發(fā)明的仿真器包括軟件管理模塊和仿真器硬件模塊。
軟件管理模塊,與仿真器硬件模塊相連,實(shí)現(xiàn)軟件管理功能,向仿真器硬件模塊發(fā)送調(diào)試命令或其它管理命令。
仿真器硬件模塊,包括調(diào)試模塊、程序區(qū)權(quán)限控制模塊和芯片仿真模塊。
調(diào)試模塊,與軟件管理模塊相連,實(shí)現(xiàn)軟件管理模塊調(diào)試命令的接收和響應(yīng);調(diào)試模塊與芯片仿真模塊中的CPU處理器模塊相連,傳遞調(diào)試指令給CPU處理器執(zhí)行;調(diào)試模塊與程序區(qū)權(quán)限控制模塊相連,通過調(diào)試控制信號進(jìn)行程序調(diào)試控制;
程序區(qū)權(quán)限控制模塊,連接到芯片仿真模塊中的程序存儲器上,檢測當(dāng)前調(diào)試指令的數(shù)據(jù),對當(dāng)前指令的調(diào)試權(quán)限進(jìn)行判斷,輸出調(diào)試控制信號;
芯片仿真模塊,實(shí)現(xiàn)芯片的功能仿真,其中的CPU處理器模塊與調(diào)試模塊、程序存儲器連接,實(shí)現(xiàn)芯片功能仿真和調(diào)試命令執(zhí)行;
程序權(quán)限信息區(qū),定義每個(gè)程序區(qū)的權(quán)限,通過權(quán)限配置通路完成程序區(qū)權(quán)限控制模塊的權(quán)限配置。
仿真器在軟件管理模塊執(zhí)行調(diào)用安全程序區(qū)命令時(shí),不能單步進(jìn)入安全區(qū)程序,且通過顯示窗口無法查看安全區(qū)程序指令/數(shù)據(jù);當(dāng)軟件管理模塊執(zhí)行用戶區(qū)程序命令時(shí),可以進(jìn)行單步調(diào)試,且在窗口中能查看用戶區(qū)程序指令/數(shù)據(jù)。
仿真器中的調(diào)試控制信號控制調(diào)試功能,當(dāng)調(diào)試控制信號為高電平時(shí),當(dāng)前地址指令不可單步調(diào)試;當(dāng)調(diào)試控制信號為低電平時(shí),當(dāng)前地址指令可以單步調(diào)試。
仿真器調(diào)試控制信號,若為一根信號,可表示為單步調(diào)試可讀或不可單步調(diào)試不可讀;若為兩根信號時(shí),分別是可讀控制信號和單步調(diào)試信號。
仿真器中的程序區(qū)權(quán)限控制模塊,依據(jù)程序權(quán)限信息區(qū)的權(quán)限定義,對從程序存儲器輸出的指令,進(jìn)行調(diào)試訪問權(quán)限判斷,并輸出調(diào)試控制信號。
仿真器程序區(qū)權(quán)限控制模塊的權(quán)限配置,既可以是芯片的默認(rèn)值,也可以配置權(quán)限。在仿真器硬件初始化過程中,通過權(quán)限配置通路完成程序區(qū)權(quán)限控制模塊的權(quán)限配置。
仿真器中的程序存儲器被劃分為用戶程序區(qū)和安全程序區(qū),且與程序權(quán)限信息區(qū)的定義一一對應(yīng)。
附圖說明
圖1是具有控制程序單步調(diào)試功能的仿真器結(jié)構(gòu)圖。
圖2是單步調(diào)試流程示意圖。
具體實(shí)施方式
下面結(jié)合附圖對本發(fā)明仿真器進(jìn)行詳細(xì)說明。
如圖1所示,給出具有控制程序單步調(diào)試功能的仿真器結(jié)構(gòu)圖。仿真器1包括軟件管理模塊2和仿真器硬件模塊3。
軟件管理模塊2,與仿真器硬件模塊3相連,實(shí)現(xiàn)軟件管理功能,向仿真器硬件模塊3發(fā)送調(diào)試命令或其它管理命令。
仿真器硬件模塊3,包括調(diào)試模塊4、程序區(qū)權(quán)限控制模塊5和芯片仿真模塊6。
調(diào)試模塊4,與軟件管理模塊相連2,實(shí)現(xiàn)軟件管理模塊2調(diào)試命令的接收和響應(yīng);調(diào)試模塊4與芯片仿真模塊6中的CPU處理器模塊7相連,輸出調(diào)試指令給CPU處理器執(zhí)行;調(diào)試模塊4與程序區(qū)權(quán)限控制模塊5相連,通過調(diào)試控制信號10的輸入進(jìn)行程序調(diào)試控制;
程序區(qū)權(quán)限控制模塊5,連接到芯片仿真模塊6中的程序存儲器8上,檢測當(dāng)前調(diào)試指令的數(shù)據(jù),對當(dāng)前指令的調(diào)試權(quán)限進(jìn)行判斷,輸出調(diào)試控制信號10;
芯片仿真模塊6,實(shí)現(xiàn)芯片的功能仿真,其中的CPU處理器模塊7與調(diào)試模塊4、程序存儲器連接8,實(shí)現(xiàn)芯片功能仿真和調(diào)試命令執(zhí)行;其中的程序權(quán)限信息區(qū)9定義每個(gè)程序區(qū)的權(quán)限,通過權(quán)限配置通路11完成程序區(qū)權(quán)限控制模塊5的權(quán)限配置。
程序權(quán)限信息區(qū)9,由仿真器生產(chǎn)廠家依據(jù)用戶需求,對權(quán)限定義值定義配置,非權(quán)限用戶無法修改程序權(quán)限信息區(qū)9的數(shù)值。
如圖2所示,給出仿真器單步調(diào)試流程示意圖,在程序單步調(diào)試過程中,依據(jù)程序區(qū)權(quán)限分別執(zhí)行單步調(diào)試和單步不可調(diào)試流程。具體操作步驟如下:
步驟1,仿真器軟件管理模塊發(fā)送調(diào)試命令,通過通信接口傳輸?shù)椒抡嫫饔布K;
步驟2,仿真器硬件模塊中的調(diào)試模塊,解析調(diào)試命令,并傳遞單步調(diào)試指令給CPU處理器模塊;
步驟3,CPU處理器模塊取指令的過程中,程序區(qū)權(quán)限控制模塊對當(dāng)前指令進(jìn)行權(quán)限判斷。若當(dāng)前指令在安全區(qū),進(jìn)入步驟4;若當(dāng)前指令在用戶區(qū),則進(jìn)入步驟5;
步驟4,CPU處理器模塊執(zhí)行完單步指令后,跳轉(zhuǎn)到步驟3;
步驟5,CPU處理器模塊執(zhí)行完單步命令;
步驟6,CPU狀態(tài)信息返回給仿真器軟件管理模塊,軟件管理模塊更新窗口顯示信息,單步調(diào)試命令完成。