專利名稱:帶有軟件斷點的仿真器的制作方法
技術領域:
本發明涉及一種處理器芯片仿真器,特別是涉及一種帶有軟件斷點的仿真器。
背景技術:
處理器芯片內有用戶開發的用戶程序,在用戶程序的編寫和調試中,所使用的工具一般是處理器芯片仿真器。仿真器內使用包含產品處理器芯片各項功能的仿真芯片和存放用戶程序的存儲器,模擬產品處理器芯片的讀取和執行用戶程序的工作行為。仿真器的其他部件與仿真芯片、存儲器相互配合實現各項調試功能,包括設置/清除斷點、單步運行程序等。
斷點功能是仿真器必須具備的基本功能,也是程序調試中使用最多的調試手段之一。采用掃描鏈技術實現的仿真器中包含硬件斷點和軟件斷點這兩種斷點。硬件斷點是在仿真芯片內以寄存器資源實現的,硬件斷點寄存器內存放用戶設置了斷點的用戶程序語句地址,在用戶在程序中設置硬件斷點時寫入仿真芯片內的硬件斷點寄存器,在仿真芯片全速讀取和執行用戶程序時,仿真芯片一旦發現通過數據/地址總線讀取到的用戶程序語句地址與硬件斷點寄存器內存放的用戶程序語句地址相同,就會停止執行該地址上的用戶程序語句,進入停止狀態。用戶通過集成開發環境清除硬件斷點,僅需由仿真器清除仿真芯片中對應硬件斷點寄存器中存放的該斷點所在用戶程序語句地址即可。但是,因為硬件斷點是需要占用仿真芯片寄存器資源實現的,所以現有仿真器中一般都只支持2-4個硬件斷點,這在數量上是遠遠無法滿足程序調試需求的。因此,采用掃描鏈技術實現的仿真器中通常還帶有軟件斷點。軟件斷點實現方式是用戶在程序中設置軟件斷點時,由集成開發環境模塊(個人電腦上)記錄設置了軟件斷點的用戶程序語句地址和用戶程序語句數據,通過仿真器以僅仿真芯片能識別的非標程序語句(例如8051中的A5機器碼指令可以用來做軟件斷點)來替換存儲器內用戶程序中設置了軟件斷點的用戶程序語句地址處的用戶程序語句數據。仿真芯片開始讀取和執行用戶程序后,一旦發現通過數據/地址總線讀取到的用戶程序語句數據是預定的僅仿真芯片能識別的非標程序語句,就會停止執行數據/地址總線上的程序語句,進入停止狀態;然后由仿真器把該軟件斷點程序地址處的用戶程序語句數據(預定的僅仿真芯片能識別的非標程序語句)按照集成開發環境模塊中的記錄替換回對應的原始用戶程序語句數據,以便繼續從該斷點處執行用戶程序。用戶通過集成開發環境模塊清除軟件斷點,亦需由仿真器把存儲器內該軟件斷點程序地址處的用戶程序語句數據(預定的僅仿真芯片能識別的非標程序語句)按照集成開發環境模塊中的記錄替換回對應的原始用戶程序語句數據。
從上述實現原理可以看出,相比于硬件斷點,軟件斷點設置的個數可以不受限制,但是在設置和清除軟件斷點時,都有一次修改存儲器內用戶程序語句的過程。如果存儲器是易失性存儲器,例如SRAM (Static Random Access Memory,靜態隨機存取存儲器)等則不存在什么問題。但如果產品芯片中存放用戶程序的是非易失性存儲器,例如EEPROM(ElectricalIy Erasable Programmable Read-Only Memory,電可擦可編程只讀存儲器),FLASH(閃速存儲器)等非易失性存儲器,且為了真實仿真存儲器性能,仿真器內存儲器使用與產品處理器芯片中一致的非易失性存儲器;由于非易失性存儲器都具有按頁(128字節或512字節一頁等)且按流程(先擦除整頁后寫入等)寫入的特點,設置/清除軟件斷點也就是修改部分用戶程序語句時,需要對目標程序語句所在的存儲器頁重新按流程整頁寫入;這樣就會表現為設置/清除軟件斷點操作非常慢,與硬件斷點的設置/清除速度差距極大,影響用戶的調試感受和效率。因此,仿真器中在用戶設置斷點時一般都是優先使用硬件斷點,硬件斷點資源用完后才自動開始使用軟件斷點。此外,開始運行用戶程序前,斷點設置/清除的動作一般較為頻繁,硬件斷點用完后,使用的軟件斷點個數比較多的話,反復替換存儲器中用戶程序語句也會加大存儲器內程序修改出錯的風險。遇到軟件斷點恢復原始用戶程序語句的過程,由于程序已經停止運行,該過程用戶基本感受不到,所以基本沒有影響。發明內容
本發明要解決的技術問題提供一種帶有軟件斷點的仿真器,能夠整體上提高軟件斷點的設置/清除效率,改善用戶的調試感受和效率,降低存儲器內程序修改出錯的風險。
為解決上述技術問題,本發明的帶有軟件斷點的仿真器,包括:仿真芯片,仿真模塊,存儲器,以及用戶電腦上的集成開發環境模塊;
所述仿真芯片和仿真模塊之間通過第一標準數據/地址總線連接,所述仿真模塊和存儲器之間通過第二標準數據/地址總線連接,所述仿真芯片與仿真模塊之間還連接有一根停止標志信號線;所述仿真模塊與所述集成開發環境模塊之間通過仿真通信通道連接;
所述集成開發環境模塊記錄所有設置了軟件斷點的用戶程序語句地址和對應的原始用戶程序語句數據,構成軟件斷點信息表存放在所述集成開發環境模塊中,由該集成開發環境模塊對其進行修改;
啟動用戶程序執行后,所述仿真模塊從集成開發環境模塊中獲取軟件斷點信息表,并由軟件斷點信息表獲取各軟件斷點所對應的用戶程序語句地址和用戶程序語句數據;所述仿真模塊從存儲器中順序讀取包含軟件斷點對應用戶程序語句地址的各頁數據,暫存在仿真模塊內;所述仿真模塊以僅仿真芯片能識別的非標準程序語句,按照軟件斷點信息表替換掉該頁數據內設置了軟件斷點的各用戶程序語句地址處的用戶程序語句數據,替換后由仿真模塊把該頁數據按存儲器的寫入流程重新寫入存儲器中;所有存儲器內必要頁改寫和替換完成后,所述仿真芯片才開始讀取和執行用戶程序。
用戶程序執行過程中,一旦所述仿真芯片發現讀取到的用戶程序語句數據是所述非標準程序語句,則停止執行用戶程序語句,進入停止狀態,并通知仿真模塊已遇到軟件斷點,停止執行用戶程序;仿真模塊按照軟件斷點信息表把存儲器內用戶程序中當前軟件斷點對應用戶程序語句地址處的用戶程序語句數據替換回對應的原始用戶程序語句數據。
設置軟件斷點時只修改所述軟件斷點信息表;清除已設置的軟件斷點時,只清除所述軟件斷點信息表中相應軟件斷點所對應的用戶程序語句地址和原始用戶程序語句數據。
所述存儲器為非易失性存儲器,用于存放用戶程序;所述仿真模塊通過第二標準數據/地址總線從存儲器讀取用戶程序并通過第一標準數據/地址總線傳送給仿真芯片,供仿真芯片讀取。
所述仿真模塊通過第二標準數據/地址總線對存儲器執行頁數據讀取、擦除頁數據和寫入頁數據操作,讀取到的頁數據暫存在仿真模塊內,并能對暫存的頁數據進行修改。
采用本發明的帶有軟件斷點的仿真器,能整體上提高軟件斷點的設置/清除效率,改善用戶的調試效率,降低存儲器內程序修改出錯的風險;有助于提高仿真器系統的工作穩定性、提高用戶感受。
下面結合附圖和具體實施方式
對本發明作進一步詳細的說明:
附圖是所述帶有軟件斷點的仿真器一實施例結構示意圖。
具體實施方式
參見附圖所示,所述帶有軟件斷點的仿真器1,包括:仿真芯片2、仿真模塊3、存儲器4,以及用戶電腦上的集成開發環境模塊6和集成開發環境6中記錄的軟件斷點信息表5。仿真芯片2和仿真模塊3之間通過第一標準數據/地址總線7連接,仿真模塊3和存儲器間4通過第二標準數據/地址總線9連接。仿真芯片2與仿真模塊3之間還設有一根停止標志信號線10。仿真模塊3與用戶電腦上的集成開發環境模塊6之間通過仿真通信通道8連接。軟件斷點信息表5存放在集成開發環境模塊6中,由集成開發環境模塊6對其進行修改。
開始執行用戶程序前,用戶通過集成開發環境模塊6在程序中設置軟件斷點時,由集成開發環境模塊6記錄所有設置了軟件斷點的用戶程序語句地址和對應的原始用戶程序語句數據,構成軟件斷點信息表5,即該軟件斷點信息表5包括了設置了軟件斷點的用戶程序語句地址和對應的原始用戶程序語句數據。此時設置軟件斷點只修改集成開發環境模塊6中的軟件斷點信息表5,同樣的清除已設置的軟件斷點,也只修改(清除)軟件斷點信息表5中對應的軟件斷點用戶程序語句地址和原始用戶程序語句數據。
在用戶啟動程序執行后,先由仿真模塊3通過仿真通信通道8從集成開發環境模塊6中獲取軟件斷點信息表5。仿真模塊3通過第二標準數據/地址總線9從存儲器4中順序讀取各頁數據(僅讀取其中包含軟件斷點對應程序地址的頁,不包含軟件斷點對應程序地址的那些頁不需要讀取出來),暫存在仿真模塊3內。仿真模塊3以僅仿真芯片2能識別的非標程序語句(例如8051中的A5機器碼指令可以用來做軟件斷點),按照集成開發環境模塊6中記錄的軟件斷點信息表5替換掉該頁數據內設置了軟件斷點的各用戶程序語句地址處的用戶程序語句數據,替換后由仿真模塊3把該頁數據按存儲器4的寫入流程(先擦除后寫入等)重新寫入存儲器4中。所有存儲器4內必要頁改寫、替換完成后,仿真芯片2才開始經由仿真模塊3讀取和執行用戶程序,一旦仿真芯片2發現通過第一數據/地址總線7讀取到的用戶程序語句數據是預定的僅仿真芯片2能識別的非標程序語句,就停止執行第一標準數據/地址總線上的用戶程序語句,進入停止狀態;并通過停止標志信號10通知仿真模塊3已遇到軟件斷點停止執行用戶程序。然后,仿真模塊3按照集成開發環境模塊6中記錄的軟件斷點信息表5把存儲器4內用戶程序中當前軟件斷點對應用戶程序語句地址處的用戶程序語句數據替換回對應的原始用戶程序語句數據。
這樣,即使運行用戶程序前軟件斷點設置/清除的動作比較多,也因為在設置/清除軟件斷點時不直接對存儲器4做用戶程序語句替換操作,且寫電腦端的集成開發環境模塊6中軟件斷點信息表5的速度相對替換存儲器4中用戶程序語句的速要快很多,因此,提高了軟件斷點的設置/清除效率,改進了用戶感受,同時也降低了反復替換存儲器4中程序語句導致出錯的風險。
從上述實施過程的描述可以看出,軟件斷點設置的個數仍可以不受限制,且僅在開始執行用戶程序時才有一次按照軟件斷點信息表5修改存儲器4內部分頁內用戶程序語句的過程。特別是如果存儲器4某頁內有多個軟件斷點對應的用戶程序語句地址,在仿真模塊3從存儲器4讀取出該頁后,一次性地完成該頁內所有軟件斷點對應用戶程序語句地址的用戶程序語句替換,并一次性地按存儲器4寫入流程寫入到存儲器4中。相比于現有仿真器中每設置一個軟件斷點都需要從存儲器4內讀取出一頁數據,替換后重新按流程寫入存儲器,明顯地從整體上提升了設置效率和速度,同時該頁讀取、擦除、寫入次數的減少也降低了存儲器4中因反復操作導致出錯的風險,亦延長了存儲器4的壽命。
以上通過具體實施方式
和實施例對本發明進行了詳細的說明,但這些并非構成對本發明的限制。在不脫離本發明原理的情況下,本領域的技術人員還可做出許多變形和改進,這些也應視為本發明的保護范圍。
權利要求
1.一種帶有軟件斷點的仿真器,其特征在于,包括:仿真芯片,仿真模塊,存儲器,以及用戶電腦上的集成開發環境模塊; 所述仿真芯片和仿真模塊之間通過第一標準數據/地址總線連接,所述仿真模塊和存儲器之間通過第二標準數據/地址總線連接,所述仿真芯片與仿真模塊之間還連接有一根停止標志信號線;所述仿真模塊與所述集成開發環境模塊之間通過仿真通信通道連接; 所述集成開發環境模塊記錄所有設置了軟件斷點的用戶程序語句地址和對應的原始用戶程序語句數據,構成軟件斷點信息表存放在所述集成開發環境模塊中,由該集成開發環境模塊對其進行修改; 啟動用戶程序執行后,所述仿真模塊從集成開發環境模塊中獲取軟件斷點信息表,并由軟件斷點信息表獲取各軟件斷點所對應的用戶程序語句地址和用戶程序語句數據;所述仿真模塊從存儲器中順序讀取包含軟件斷點對應用戶程序語句地址的各頁數據,暫存在仿真模塊內;所述仿真模塊以僅仿真芯片能識別的非標準程序語句,按照軟件斷點信息表替換掉該頁數據內設置了軟件斷點的各用戶程序語句地址處的用戶程序語句數據,替換后由仿真模塊把該頁數據按存儲器的寫入流程重新寫入存儲器中;所有存儲器內必要頁改寫和替換完成后,所述仿真芯片才開始讀取和執行用戶程序。
2.如權利要求1所述的仿真器,其特征在于:在用戶程序執行過程中,一旦所述仿真芯片發現讀取到的用戶程序語句數據是所述非標準程序語句,則停止執行用戶程序語句,進入停止狀態,并通知仿真模塊已遇到軟件斷點,停止執行用戶程序;仿真模塊按照軟件斷點信息表把存儲器內用戶程序中當前軟件斷點對應用戶程序語句地址處的用戶程序語句數據替換回對應的原始用戶程序語句數據。
3.如權利要求1所述的仿真器,其特征在于:設置軟件斷點時只修改所述軟件斷點信息表;清除已設置的軟件斷點時,只清除所述軟件斷點信息表中相應軟件斷點所對應的用戶程序語句地址和原始用戶程序語句數據。
4.如權利要求1所述的仿真器,其特征在于:所述存儲器為非易失性存儲器,用于存放用戶程序;所述仿真模塊通過第二標準數據/地址總線從存儲器讀取用戶程序并通過第一標準數據/地址總線傳送給仿真芯片,供仿真芯片讀取。
5.如權利要求1或4所述的仿真器,其特征在于:所述仿真模塊通過第二標準數據/地址總線對存儲器執行頁數據讀取、擦除頁數據和寫入頁數據操作,讀取到的頁數據暫存在仿真模塊內,并能對暫存的頁數據進行修改。
全文摘要
本發明公開了一種帶有軟件斷點的仿真器,包括仿真芯片,仿真模塊,存儲器,以及用戶電腦上的集成開發環境模塊;所述仿真芯片和仿真模塊之間通過第一標準數據/地址總線連接,所述仿真模塊和存儲器之間通過第二標準數據/地址總線連接,所述仿真芯片與仿真模塊之間還連接有一根停止標志信號線;所述仿真模塊與用戶電腦上的集成開發環境模塊之間通過仿真通信通道連接,軟件斷點信息表存放在所述集成開發環境模塊中,由該集成開發環境模塊對其進行修改。本發明能夠整體上提高軟件斷點的設置/清除效率,改善用戶的調試感受和效率,降低存儲器內程序修改出錯的風險。
文檔編號G06F11/36GK103207830SQ20121000970
公開日2013年7月17日 申請日期2012年1月13日 優先權日2012年1月13日
發明者許國泰 申請人:上海華虹集成電路有限責任公司