一種處理器仿真調試方法及裝置的製作方法
2023-08-11 19:25:31 7
專利名稱:一種處理器仿真調試方法及裝置的製作方法
技術領域:
本發明涉及處理器仿真的技術領域,具體涉及處理器仿真的調試方法及調試裝置。
背景技術:
隨著集成電路的發展,越來越多的處理器投入設計,同時也包括片上系統。這些產品在開發中都需要進行仿真驗證以保證功能的正確性,減少設計投入的風險。通常會在開發中使用仿真工具進行仿真,運行一些測試程序,並檢查結果正確與否。對於仿真時發現的bug—般的調試方法是使用仿真工具抓取仿真程序的波形,然後對波形進行調試。這樣的調試方法對於大型軟體(比如Iinux作業系統)的調試就顯得很不方便和直觀,並且這種調試方法沒有將軟體調試和硬體調試分開,使得bug的定位不夠迅速。所以就需要一種以軟體工程師的視角來看待處理器邏輯仿真時出現的bug的調試方法。本發明提出的處理器仿真調試方法不改變軟體人員常用的調試工具(比如GDB),也不改變處理器的結構和代碼,僅使用處理器自帶的調試接口(比如標準JTAG接口),也不改變處理器仿真平臺的仿真工具,軟體人員就可以使用熟悉的調試工具排除處理器仿真出現的bug。本發明要解決的技術問題是如何利用現有的調試工具和處理器自帶的調試接口對處理器的仿真進行調試。
發明內容
根據本發明的第一方面,提供了一種利用調試器對處理器仿真進行調試的方法,其中所述調試器包括調試器接口,所述處理器包括處理器調試接口,該調試方法包括步驟a接收由調試器通過調試器接口發送的調試命令;步驟b將該調試命令轉換為處理器調試接口可用的調試命令;以及步驟c將經過轉換的調試命令傳送到處理器調試接口。所述方法進一步包括所述處理器執行所述經過轉換的調試命令並返回數據或應答,其中所述數據或應答表示處理器執行所述調試命令的結果或狀態。其中,所返回的數據或應答被轉換成所述調試器接口可用的格式並被發送到所述調試器接口。其中,在接收步驟之前,初始化所述調試器接口和所述處理器調試接口。其中,所述方法進一步包括對於不同的調試命令,重複執行所述步驟a、b和C。根據本發明的第二方面,提供了一種對處理器仿真進行調試的調試系統,所述調試系統包括調試器,其具有調試器接口 ;以及仿真調試裝置,其與所述調試器接口和所述處理器的處理器調試接口耦合,用於將來自調試器的調試命令轉換成處理器可用的調試命令並將經過轉換的調試命令發送到所述處理器調試接口。其中,所述仿真調試裝置還被配置為將處理器執行調試命令所返回的數據或應答轉換成調試器可用的格式並將經過轉換的數據或應答發送到調試器接口。
其中,所述仿真調試裝置包括調試器側接口、處理器側接口和調試命令通訊機構,其中調試器側接口和處理器側接口分別耦合到所述調試器接口和所述處理器調試接口,所述調試命令通訊機構用於在調試器側接口和處理器側接口之間傳遞命令和數據。其中,所述調試命令通訊機構包括命令通訊器,用於存放命令和數據;命令發送器,用於將調試命令放入命令通訊器中;命令檢查器,用於檢查所述命令通訊器中是否存在調試命令並且如果存在則取出所述命令;數據返回器,用於將處理器執行調試命令返回的數據放入命令通訊器中;應答返回器,用於將處理器執行調試命令返回的應答放入命令通訊器中;數據接收器,用於接收命令通訊器中由數據返回器放入的數據並將該數據發送到調試器接口 ;以及應答接收器,用於接收命令通訊器中由應答返回器放入的應答並將該應答發送到調試器接口。其中,所述調試命令通訊機構還包括命令地址發送器,用於將與調試命令有關的命令地址放入命令通訊器中;命令數據發送器,用於將調試命令的命令數據放入命令通訊器中;命令地址接收器,用於從命令通訊器中接收所述命令地址;以及命令數據接收器,用於從命令通訊器中接收所述命令數據。其中,所述處理器調試接口包括標準JTAG接口並且根據JTAG協議操作。其中,所述調試器接口包括⑶B接口並且根據RSP協議來操作。其中,所述命令通訊器由PLI或VPI來實現。其中,所述調試器側接口、命令發送器、命令地址發送器、數據接收器和應答接收器由程式語言來實現,並且所述命令檢查器、命令地址接收器、命令數據接收器、數據返回器和應答返回器由HDL來實現。其中,所述處理器使用HDL來描述。所述HDL包括Verilog或VHDL。根據本發明的第三方面,提供了一種在處理器仿真調試中使用的調試命令通訊機制,其中所述調試命令通訊機制使用調試命令通訊機構來實現,其中將來自調試器的調試命令存儲在調試命令通訊機構中以使得處理器調試接口能夠訪問並且將來自處理器的執行調試命令的結果存儲在所述調試命令通訊機構中以使得調試器能夠訪問。其中,所述機制要求仿真器支持HDL以及程式語言接口(PLI)和Verilog程序接口(VPI)之一。其中,所述機制包括將處理器調試接口與調試器接口使用程式語言接口描述使得命令在這兩個接口之間進行交互。根據本發明的第四方面,提供了一種在處理器仿真調試中使用的仿真調試裝置,所述仿真調試裝置包括調試器側接口,用於在調試器和仿真調試裝置之間進行通信;處理器側接口,用於在仿真調試裝置和處理器之間進行通信;以及調試命令通訊機構,用於接收來自調試器側接口的調試命令並將該調試命令發送到處理器側接口以及用於將處理器返回的應答或數據從處理器側接口發送到調試器側接口。其中,所述調試器側接口在發送來自調試器的調試命令之前將所述調試命令轉換為處理器調試接口可用的調試命令。
圖1是根據本發明的處理器仿真調試框圖;圖2是根據本發明的處理器仿真調試裝置的框圖;以及圖3是根據本發明的處理器仿真調試方法的流程圖。
具體實施例方式下面結合附圖和具體實施例對本發明進一步詳細描述。現在參照圖1,圖1示出了根據本發明的處理器仿真調試框圖。如圖1所示,由調試器100和仿真調試裝置104的組合對處理器107進行調試。調試器100具有調試器接口101,調試器接口 101按照RSP (Remote Serial Protocol)協議操作。如本領域中已知的,RSP允許對嵌入式軟體進行遠程調試。一般而言,桌面平臺的GDB用來調試本地計算機的軟體,而要調試另一臺計算機則可以用RSP連結。調試器100通過調試器接口 101可以發送遵循RSP協議的調試命令。如本領域技術人員所理解的,調試命令可以包括但不限於復位、中斷等。另外,如本領域技術人員所理解的,所述調試命令是廣義的,其包括具體要執行的命令(下文稱為具體命令)、還可以包括與該命令有關的地址(下文稱為命令地址)、與該命令有關的數據(下文稱為命令數據),或包括具體命令和命令數據和/或命令地址的組合。另外,本發明中所用的調試器100可以是現有技術中已知的能夠執行軟體調試的任何調試工具,包括但不限於⑶B等。如圖1所示,HDL仿真器108運行處理器107的仿真,該HDL仿真器108可以是本領域眾所周知的仿真器。處理器107具有處理器調試接口 106,從處理器調試接口 106可以接收處理器107要執行的調試命令。處理器調試接口 106例如可以按照標準的JTAG (Joint Test Action Group)協議操作。仿真調試裝置104包括調試器側接口 102、調試命令通訊機構103、和處理器側接口 105。調試器側接口 102和處理器側接口 105分別耦合到調試器接口 101和處理器調試接口 106。調試器側接口 102例如可以由程式語言實現並且與調試器接口 101按照相同的標準協議(諸如RSP協議)操作,所述程式語言包括本領域已知的任何程式語言,例如但不限於C、C++等。處理器側接口 105例如可以由HDL (硬體描述語言)實現並且與處理器調試接口 106按照相同的標準協議(例如JTAG協議)操作。調試命令通訊機構103用於在調試器側接口 102和處理器側接口 105之間傳遞命令和數據。調試命令通訊機構103接收並存儲來自調試器側接口 102的調試命令。處理器側接口 105可以從調試命令通訊機構103讀取調試命令並將調試命令發送到處理器調試接口 106。處理器107執行從處理器調試接口 106接收的調試命令。執行完調試命令之後,處理器107通過處理器調試接口 106、調試命令通訊機構103、調試器側接口 102、和調試器接口 101將執行結果返回到調試器100,所述結果可以是數據或應答。現在參照圖2,圖2是根據本發明的圖1所示的仿真調試裝置的詳細組件框圖。如圖2所示,仿真調試裝置200包括調試器側接口 201、命令發送器202、命令地址發送器203、命令數據發送器204、數據接收器205、應答接收器206、命令通訊器207、命令檢查器208、命令地址接收器209、命令數據接收器210、數據返回器211、應答返回器212和處理器側接口213。其中,命令發送器202、命令地址發送器203、命令數據發送器204、數據接收器205、應答接收器206、命令通訊器207、命令檢查器208、命令地址接收器209、命令數據接收器210、數據返回器211和應答返回器212的組合對應於圖1所示的調試命令通訊機構103。調試器接口 201對應於圖1所示的調試器接口 102,並且處理器側接口 213對應於圖1所示的處理器側接口 105。
根據本發明的一個實施例,調試器側接口 201、命令發送器202,命令地址發送器203,命令數據發送器204、數據接收器205和應答接收器206由程式語言(例如但不限於C, C++)實現;處理器側接口 213、命令檢查器208、命令地址接收器209、命令數據接收器210、數據返回器211和應答返回器212由HDL實現;命令通訊器207由PLI (程式語言接口)或VPI (Verilog程序接口)來實現並且被配置為在程式語言和HDL之間進行溝通傳遞數據。根據本發明的一個實施例,對命令通訊器207操作的命令有檢查命令、應答命令、發送命令地址、發送命令數據、接收命令數據。其中,檢查命令用於判斷命令通訊器中是否存在命令並且如果有的話則取出該命令;應答命令用於表示命令處理完成;發送命令地址用來區分不同的命令;發送命令數據包含要向處理器發送的數據;接收命令數據指的是接收處理器向調試器返回的數據。現在結合圖1和圖2來詳細描述本發明的仿真調試裝置的操作。在操作中,調試器100通過調試器接口 101發出遵循RSP協議的調試命令。命令發送器202將調試命令中包含的具體命令放入命令通訊器207中。命令地址發送器203將調試命令中的命令地址放入命令通訊器207中。命令數據發送器204將調試命令中的命令數據放入命令通訊器207中。命令檢查器208檢查命令通訊器207中是否存在具體命令並且如果存在的話則取出該具體命令。命令地址接收器209接收調試命令的命令地址並將其發送給處理器側接口 213。命令數據接收器210接收調試命令的命令數據並將其發送給處理器側接口 213。處理器側接口 213將從命令檢查器208、命令地址接收器209及命令數據接收器210接收的具體命令、命令地址和命令數據組合成遵循JTAG協議的調試命令並將其發送給處理器調試接口106。處理器107執行該調試命令,完成後將應答或數據返回到處理器側接口 213 ;數據返回器211接收返回的數據並將該數據放到命令通訊器207中;應答返回器212接收應答並將該應答放到命令通訊器207中;數據接收器205接收命令通訊器207裡的數據並交給調試器側接口 201 ;應答接收器206接收命令通訊器207裡的應答並交給調試器側接口 201。調試器側接口 201將數據和/或應答發送到調試器接口 101,調試器100因此得知調試命令的執行情況。這樣,仿真器就執行了一條調試器發來的調試命令。調試器按照上述方式不斷進行調試直到退出。值得注意的是,在此過程中,調試器接口 101發出的是遵循RSP協議的調試命令;調試器側接口 201接收該遵循RSP協議的調試命令,並且提取其中包含的具體命令、命令地址和命令數據以分別由命令發送器202、命令地址發送器203和命令數據發送器204讀取。命令通訊器207負責在C語言實現的組件202、203和204與HDL實現的組件208、209和210之間進行溝通,使得數據能夠從調試器側傳遞到處理器側。在處理器側接口 213處,將所述具體命令、命令地址和命令數據重新組合成遵循JTAG協議的調試命令以供處理器107執行。這樣,實現了從遵循RSP協議的來自調試器101的調試命令到遵循JTAG協議的可由處理器107執行的調試命令的轉換。類似地,在處理器107執行完命令返回應答或數據的時候,該應答或數據也要經過類似的從JTAG協議到RSP協議的轉換過程。現在參照圖3,圖3示出根據本發明的處理器仿真調試方法300的流程圖。方法300開始於步驟302,在該步驟302處執行初始化過程,其中例如復位調試器側接口 201和處理器側接口 214。復位完成後,調試器接口啟動RSP服務。在步驟304,接收來自調試器100的調試命令。在步驟306,將該調試命令轉換為處理器調試接口 106可用的調試命令,
7例如將遵循RSP協議的調試命令轉換為遵循JTAG協議的調試命令。在步驟308,將經過轉換的調試命令發送到處理器調試接口 106。在步驟310,處理器執行調試命令並將結果返回到調試器。在步驟312,該方法結束。對於不同的調試命令,可以重複上述過程。下面描述根據本發明的兩個具體實施例。實施例1.調試器復位處理器。調試器100向處理器107發送復位命令。調試器接口 101將遵循RSP協議的復位命令發送到調試器側接口 201。調試器側接口 201按照RSP協議接收、提取出該復位命令並將其交給命令發送器202。命令發送器202將復位命令放入到命令通訊器207中,命令檢查器208檢查到命令通訊器207中存在命令,然後取出命令通信器207裡的命令並且分析得知該命令是復位命令。命令檢查器208然後將復位命令發送到處理器側接口 213。處理器側接口 213對該復位命令進行處理以使其遵循JTAG協議並且將遵循JTAG協議的復位命令發送到處理器調試接口 106。處理器107執行復位,完成後返回成功狀態(即應答)到處理器調試接口 106。處理器調試接口 106按照JTAG協議將該應答發送給處理器側接口 213。處理器側接口 213接收該應答並將其發送到應答返回器212。應答返回器212將應答放入命令通訊器207,應答接收器206從命令通訊器207中接收該應答。之後,調試器側接口 201對該應答進行處理以使其遵循RSP協議並且將該應答發送到調試器接口 101。這樣,調試器100裡看到程序重新開始執行。實施例2.調試器中斷處理器執行。調試器100向處理器107發出中斷處理器執行的命令。調試器接口 101將遵循RSP協議的中斷命令發送到調試器側接口 201。調試器側接口 201按照RSP協議接收、提取出該中斷命令並將其交給命令發送器202。命令發送器202將中斷命令放入到命令通訊器207中,命令檢查器208檢查到命令通訊器207中存在命令,然後取出命令通信器207裡的命令並且分析得知該命令是中斷命令。命令檢查器208然後將中斷命令發送到處理器側接口 213。處理器側接口 213對該中斷命令進行處理以使其遵循JTAG協議並且將遵循JTAG協議的中斷命令發送到處理器調試接口 106。處理器107中斷執行,完成後返回成功狀態(即應答)到處理器調試接口 106。處理器調試接口 106按照JTAG協議將該應答發送給處理器側接口 213。處理器側接口 213接收該應答並將其發送到應答返回器212。應答返回器212將應答放入命令通訊器207,應答接收器206從命令通訊器207中接收該應答。之後,調試器側接口 201對該應答進行處理以使其遵循RSP協議並且將該應答發送到調試器接口101。這樣,調試器100裡看到處理器中斷執行。
權利要求
1.一種利用調試器對處理器仿真進行調試的方法,其中所述調試器包括調試器接口,所述處理器包括處理器調試接口,該調試方法包括步驟a接收由調試器通過調試器接口發送的調試命令;步驟b將該調試命令轉換為處理器調試接口可用的調試命令;以及步驟c將經過轉換的調試命令傳送到處理器調試接口。
2.根據權利要求1所述的處理器仿真調試方法,其中所述方法進一步包括所述處理器執行所述經過轉換的調試命令並返回數據或應答,其中所述數據或應答表示處理器執行所述調試命令的結果或狀態。
3.根據權利要求2所述的處理器仿真調試方法,其中所返回的數據或應答被轉換成所述調試器接口可用的格式並被發送到所述調試器接口。
4.根據權利要求1所述的處理器仿真調試方法,其中在接收步驟之前,初始化所述調試器接口和所述處理器調試接口。
5.根據權利要求1所述的處理器仿真調試方法,其中所述方法進一步包括對於不同的調試命令,重複執行所述步驟a、b和C。
6.一種對處理器仿真進行調試的調試系統,所述調試系統包括調試器,其具有調試器接口 ;以及仿真調試裝置,其與所述調試器接口和所述處理器的處理器調試接口耦合,用於將來自調試器的調試命令轉換成處理器可用的調試命令並將經過轉換的調試命令發送到所述處理器調試接口。
7.根據權利要求6所述的調試系統,其中,所述仿真調試裝置還被配置為將處理器執行調試命令所返回的數據或應答轉換成調試器可用的格式並將經過轉換的數據或應答發送到調試器接口。
8.根據權利要求6所述的調試系統,其中,所述仿真調試裝置包括調試器側接口、處理器側接口和調試命令通訊機構,其中調試器側接口和處理器側接口分別耦合到所述調試器接口和所述處理器調試接口,所述調試命令通訊機構用於在調試器側接口和處理器側接口之間傳遞命令和數據。
9.根據權利要求8所述的調試系統,其中,所述調試命令通訊機構包括命令通訊器,用於存放命令和數據;命令發送器,用於將調試命令放入命令通訊器中;命令檢查器,用於檢查所述命令通訊器中是否存在調試命令並且如果存在則取出所述命令;數據返回器,用於將處理器執行調試命令返回的數據放入命令通訊器中;應答返回器,用於將處理器執行調試命令返回的應答放入命令通訊器中;數據接收器,用於接收命令通訊器中由數據返回器放入的數據並將該數據發送到調試器接口 ;以及應答接收器,用於接收命令通訊器中由應答返回器放入的應答並將該應答發送到調試器接口。
10.根據權利要求9所述的調試系統,其中,所述調試命令通訊機構還包括命令地址發送器,用於將與調試命令有關的命令地址放入命令通訊器中;命令數據發送器,用於將調試命令的命令數據放入命令通訊器中;命令地址接收器,用於從命令通訊器中接收所述命令地址;以及命令數據接收器,用於從命令通訊器中接收所述命令數據。
11.根據權利要求6所述的調試系統,其中,所述處理器調試接口包括標準JTAG接口並且根據JTAG協議操作。
12.根據權利要求6所述的調試系統,其中,所述調試器接口包括GDB接口並且根據RSP協議來操作。
13.根據權利要求9所述的調試系統,其中所述命令通訊器由PLI或VPI來實現。
14.根據權利要求9所述的調試系統,其中所述調試器側接口、命令發送器、命令地址發送器、數據接收器和應答接收器由程式語言來實現,並且所述命令檢查器、命令地址接收器、命令數據接收器、數據返回器和應答返回器由HDL來實現。
15.根據權利要求9所述的調試系統,其中,所述處理器使用HDL來描述。
16.根據權利要求14或15所述的調試系統,其中所述HDL包括verilog或VHDL。
全文摘要
本發明公開了一種用於處理器仿真調試的方法。所述處理器仿真調試方法包括接收由調試器發送的調試命令;將調試命令轉換為處理器調試接口可用的調試命令;以及將經過轉換的調試命令傳送到處理器調試接口。本發明提出的處理器仿真調試方法,通過在原始碼仿真平臺上建立調試器接入的接口,使得處理器在仿真運行時使用調試器進行交互調試。比起傳統的處理器仿真調試方法來,本方法更適合對大型軟體(如作業系統等)進行調試。本發明還公開了一種處理器仿真調試裝置。
文檔編號G06F11/36GK102567196SQ20101060638
公開日2012年7月11日 申請日期2010年12月27日 優先權日2010年12月27日
發明者楊耀武 申請人:北京國睿中數科技股份有限公司