專利名稱:微處理器的制作方法
技術領域:
本發明涉及一種微處理器和調試系統。該調試系統用于跟蹤程序計數器的功能和通知用戶當前的地址或數據已被存取。
背景技術:
圖1是根據現有技術實現的調試系統,稱為內部電路仿真器。
該系統包括用戶目標系統500和用于調試目標系統500的調試器505,目標系統500含有微處理器501,存貯器503以及輸入輸出部件502,調試器含有調試微處理器506與監控程序存貯器507。
為調試目標系統500,要移去或禁止微處理器501工作,而調試器505的插針連到微處理器501,使得微處理器506能代替微處理器501的操作。使微處理器506執行貯存在存貯器507的監控程序,以實現對保存在存貯器503中的用戶程序的控制。
微處理器506執行用戶程序,并存取存貯器503的數據與輸入輸出部件502。調試器505含有跟蹤存貯器508,使得微處理器506能夠提供關于內部狀態的跟蹤信息。例如,可以提供通常微處理器501經處理器總線504不能提供的程序計數器的數值。
然而,圖1的現有技術必須把目標系統500中的微處理器501的所有引線連到調試器505。例如,微處理器501有70條引線,用于30條地址信號線、4條字節允許信號線。1條讀信號線,1條寫信號線、1條讀確認信號線。1條寫確認信號線和32條數據信號線。調試器505具有用于這些引線的插針,成本昂貴,且工作不穩定。為了能存取目標系統500的存貯器503和調試器505的存貯器507,微處理器506必須從一組總線轉換到另一組總線,因而,不能應用于高速微處理器。
如果目標微處理器具有外圍元件,并且可能有不同的引線排列,這樣,調試器必須具有同樣引線排列的探針。當調試器505的探針連到目標系統500時可能影響和使得目標系統500信號不穩定。
圖2是根據另一種現有技術實現的調試系統,稱為只讀存貯器監控程序。
用戶目標系統510具有一個連到宿主機517的串行接口,存貯器513貯存監控程序514,微處理器511執行監控程序,訪問存貯器514、輸入輸出部件515和寄存器516,使用軟件斷點指令執行和控制用戶程序。
這種現有技術,借用用戶存貯器513貯存監控程序514。如果目標系統510的存貯系統不完善,則監控程序514本身也將不穩定。如果存貯器513的容量較小,則將沒有存放監控程序514的空間。由于監控模式是由用戶中斷啟動,則某些程序將不能被調試。雖然安裝在目標系統510上的串行接口512對于調試是必不可少的,但調試之后,則不再使用。這種現有技術的調試性能不好,因為它沒有硬件斷點也不能跟蹤程序計數器。
圖3仍然是根據另一種現有技術的調試系統。
用戶目標系統520具有微處理器521,該微處理器含有串行接口526和定序器525。串行接口526與調試工具529通信。調試工具529向接口526發送信號,而定序器525對信號進行解釋,為了影響信號,定序器525暫停用戶程序的執行,存取寄存器528使用總線控制器527存取輸入輸出部件523和存貯器524,并控制用戶程序。串行接口526通常不能與宿主機530直接通信。因此,調試工具529要把來自宿主機530的命令轉換成微處理器521能理解的信號,而把來自微處理器521的信號轉換成宿主機530能理解的數據格式。
微處理器521含有必須訪問微處理器521和調試工具529的定序器525。這樣,這種現有技術由于采用復雜的連接邏輯,而使芯片面積增加。如果目標系統520要提供復加的寄存器,由于復雜的工作,必須相應地修改定序器525。這種現有技術不能跟蹤程序計數器。
如上所述,這些現有技術不能跟蹤程序計數器,即使他們能夠跟蹤,他們必須通過處理器總線,在調試處理器與目標系統之間連接許多信號。根據圖1的現有技術,調試程序505的微處理器506必須訪問存貯器503和目標系統500中的輸入輸出部件502,其困難在于控制這些存取操作的時序。
圖2的現有技術是在用戶存貯器513中存放監控程序,它減少用戶存貯的空間。用這種現有技術進行調試是不可靠的和不充分的。
圖3的現有技術是在目標系統520中的微處理器521中包含定序器525,對來自調試工具529發送的信號進行解釋并執行。換句話說,這種現有技術涉及目標系統與調試工具之間的復雜的連接。如果要修改處理器521,則要做復雜的工作,對定序器525進行修改。
圖2和圖3的現有技術均沒有觸發功能。雖然圖1的現有技術在調試微處理器506可能有觸發功能,但也要有用于提供觸發信息的附加信號。
發明內容
本發明的目的在于提供一個配置在用戶目標系統中的微處理器,用于以目標系統與調試器之間的少量信號實現調試功能。
本發明的另外目的在于提供一個配置在用戶目標系統中的微處理器,借助在目標系統上微處理器的操作,方便地存取目標系統的存貯器和輸入輸出部件。實現調試功能。
本發明的其它目的在于提供一個配置在用戶目標系統中的微處理器,以少量的信號實現跟蹤程序計數器的調試功能。
本發明的其它目的還在于提供一個配置在用戶目標系統中的微處理器,以最少的硬設備通過共享地址、通過帶有硬件斷點功能和觸發功能的數據比較器、以及共享具有程序計數器信息和觸發器信息的輸出信號,實現調試功能。
為了達到這些目的,本發明的第一個方面是一種微處理器,它具有處理機內核(代碼塊)和調試模塊。處理機內核執行用戶程序和監控程序,以便調試用戶目標系統。調試模塊通過內部調試接口和處理器總線連到處理機內核。調試模塊具有一個接口,通過它處理機內核執行保存在一個在調試工具內的監控程序,調試模塊還有一個用于向處理器內核發出中斷和異常請求的運行控制器,用它把處理器內核從用戶程序切換到監控程序。
本發明的第二方面是一個調試系統,在此系統中,調試器存儲一個監控程序,用于調試用戶目標系統。目標系統包括微處理器、存貯器和輸入/輸出單元。微處理器具有處理機內核和調試模塊。處理機內核執行用戶程序或監控程序。調試模塊通過內部調試接口和處理器總線連接到處理機內核,通過外部調試接口連接到調試器。調試模塊的接口能使得處理機內核執行監控程序。調試模塊還有運行控制器,用于向處理機內核發出中斷和異常請求,把處理機內核從用戶程序切換到監控程序。存貯器通過處理器總線與微處理器相連,并存貯對于微處理器執行用戶程序所必要的信息。輸入/輸出單元通過處理器總線連接到微處理器。
根據本發明的第一方面和第二方面,目標系統的微處理器具有調試功能,以減少目標系統與調試器之間的信號數量。根據本發明的第一方面和第二方面,在調試期間,微處理器操作,方便地訪問目標系統的存儲器和輸入/輸出單元。
本發明的第三方面是提供一種微處理器,它具有一個能執行程序的處理機內核和能跟蹤程序計數器的跟蹤器。跟蹤器通過內部調試接口連接到處理機內核,提供程序計數器信號,表示處理機內核將要執行的指令地址,傳送輸出信號的信號線的數量要少于指令地址的位數。
根據本發明的第三部分,目標系統的微處理器具有調試功能,以減少用于跟蹤程序計數器的接口信號的數目。
本發明的第四方面是提供一種微處理器,它具有執行程序的處理機內核、斷點電路和程序計數器跟蹤器。當存貯的地址與設置的地址相符合、或當被存取的地址和數據與設置的地址和數據相符合,則斷點電路向處理機內核提供斷點請求和觸發請求。跟蹤器提供一個觸發請求已是可用的外部狀態信號信息。
根據本發明的第四方面,目標系統的微處理器具有調試功能,地址比較器共享硬件的斷點功能和觸發功能,跟蹤器的輸出用于提供觸發信號,以使硬件減至最低限度。
根據本發明,這里提供一種微處理器,其特征在于,包括一個處理器內核,用以執行程序;一個中斷電路,用以在一個存取地址與一個設定的地址相符合時或在一個存取地址和數據與一個設定地址和數據相符合時,產生一個中斷請求或設置一個觸發請求信號送到所述的處理器內核;和一個程序計數器跟蹤器,用以提供一個外部狀態信號,用以指示在中斷電路設置同樣信號之后觸發請求信號已經發出。
本發明的這些目的和其它的目的、特征和優點從下文描述的優選實施例并參照附圖將會更加明了。
圖1示出根據一個現有技術的、用于調試用戶目標系統的調試系統。
圖2示出根據另一現有技術的、用于調試用戶目標系統的調試系統。
圖3示出根據又一個現有技術的、用于調試用戶目標系統的調試系統。
圖4示出根據本發明的一個實施例的調試系統和微處理器。
圖5示出根據所述實施例的調試模塊。
圖6示出根據圖4所示的實施例的寄存器電路。
圖7示出根據圖6所示的寄存器電路的調試控制寄存器(DCR)。
圖8示出根據圖6所示的寄存器電路的指令斷點地址0寄存器(IBA0)。
圖9示出根據圖6所示的寄存器電路的指令斷點控制0寄存器(IBC0)。
圖10示出根據圖6所示的寄存器電路的指令斷點狀態寄存器(IBS)。
圖11示出根據圖6所示的寄存器電路的數據斷點地址0寄存器(DBA0)。
圖12示出根據圖6所示的寄存器電路的數據斷點控制0寄存器(DBC0)。
圖13示出根據圖6所示的寄存器電路的數據斷點狀態寄存器(DBS)。
圖14示出根據圖6所示的寄存器電路的處理器總線斷點地址0寄存器(PBA0)。
圖15示出根據圖6所示的寄存器電路的處理器總線斷點數據0寄存器(PBD0)。
圖16是圖6所示的寄存器電路的處理器總線屏蔽0寄存器(PBM0)。
圖17是圖6所示的寄存器電路的處理器總線控制0寄存器(PBC0)。
圖18是圖6所示的寄存器電路的處理器總線斷點狀態寄存器(PBS)。
圖19是圖5所示的調試模塊的指令/數據地址斷點電路。
圖20是圖5所示的調試模塊的處理器總線斷點電路。
圖21是圖5所示的調試模塊的串行監控總線電路。
圖22是串行監控總線電路讀操作的定時圖。
圖23是串行監控總線電路寫操作的定時圖。
圖24是根據指令CFC0的串行監控總線電路讀操作的定時圖。
圖25是根據指令CTC0的串行監控總線電路寫操作的定時圖。
圖26是圖21示出的串行監控總線電路的操作流程圖。
圖27是串行監控總線電路的讀操作流程圖。
圖28是串行監控總線電路的寫操作流程圖。
圖29是圖5示出的調試模塊的程序計數器跟蹤器。
圖30是根據轉移指令程序計數器輸出的定時圖。
圖31是根據間接跳轉指令程序計數器輸出的定時圖。
圖32是根據異常和間接跳轉指令的程序計數器輸出的定時圖。
圖33示出指令/數據地址跟蹤觸發器的時間圖。
圖34示出響應異常產生指令而產生的指令/數據地址跟蹤觸發器的定時圖。
圖35示出響應間接指令而產生的指令/數據跟蹤觸發器的定時圖。
圖36示出當調試異常發生時的輸出信號PCST[2:0]的定時圖。
圖37示出當調試異常發生的同時還提供目標程序計數器的輸出時的信號PCST[2:0]的定時圖。
圖38示出調試方式之后在正常方式被恢復時的信號PCST[2:0]的定時圖。
圖39示出目標程序計數器的輸出的定時圖。
圖40示出下一個間接轉換發生而且目標程序計數器提供輸出時的定時圖。
圖41示出異常發生的同時目標程序計數器提供輸出的定時圖。
圖42示出圖5所示的調試模塊的外部接口電路。
圖43示出擴展的IBS寄存器。
圖44示出根據本發明的另一個實施例的調試系統。
具體實施例方式調試系統具有用戶目標系統70和調試器60。
目標系統70具有微處理器10、存貯器40和輸入輸出部件50。微處理器10具有調試功能。
微處理器10具有處理機內核20和調試模塊30。處理機內核20通過處理機總線80訪問存貯器40和輸入/輸出部件50并執行程序。處理機內核20通過內部調試接口和處理機總線80連接到調試模塊。調試模塊30通過外部調試接口連接到調試器60。
調試系統采用調試方式執行監控程序;還采用正常方式執行用戶程序。
〔調試方式〕處理機內核20產生調試異常,或者產生調試復位以啟動調試方式。處理機內核20跳轉到調試異常向量地址FF20-0200或者跳轉到調試復位向量地址FF20-0000并設置(assert)調試方式信號DM。通過這些向量地址在調試器60中訪問存貯器。處理機內核20通過調試模塊30去執行存放在調試程序60中的監控程序。監控程序通過指定用戶程序首地址和末地址以及對存貯器和寄存器讀、寫執行和控制用戶程序。處理機內核20可以通過執行返回指令返回到正常方式并執行用戶程序。這樣,處理機內核20跳轉到由返回指令所指定的地址,并對調試方式信號DM取反。
〔正常方式〕在正常方式下,調試系統執行用戶程序,同時,跟蹤程序計數器。通過產生一個調試異常,或者通過硬件斷點、軟件斷點或調試中斷產生的用于處理機內核20的調試復位信號可以使調試系統從正常方式轉換到調試方式。
在正常方式下,能夠對程序計數器跟蹤功能、硬件斷點功能、軟件斷點功能、調試中斷功能、調試復位功能和跟蹤觸發的功能進行解釋。
當處理機內核20執行存放在存貯器40的用戶程序的同時,程序計數器跟蹤功能對程序計數器中的值進行跟蹤。在處理機內核20執行用戶程序時,程序計數器信息被發送到內部調試接口,調試模塊30處理該信息并通過外調試接口將已處理的信息送到調試器60。
當有預設定地址的指令在執行、或當預設定地址的數據被存取時,硬件斷點功能產生一個調試異常,使得處理機內核20執行監控程序。更確切地說,就是調試模塊30對處理機內核20執行的指令的地址與存放在調試模塊30的地址進行比較、或者把處理機內核20存取數據的地址與存放在調試模塊30的數據地址進行比較,或是把處理機內核20提供的數據與存貯在調試模塊30的數據進行比較,如果他們之間彼此符合,調試模塊向處理機內核20發出調試異常請求或調試中斷請求。
軟件斷點功能產生一條導致調試異常的軟件斷點指令,使得處理機內核20執行監控程序。
調試中斷功能設置一個產生調試異常的調試中斷信號,使得處理機內核20執行監控程序。
調試復位功能設置一個使調試復位的調試復位信號,對處理機內核20和調試模塊30的內部狀態初始化。然后,處理機內核20進行調試方式,并從調試復位向量地址FF20-0000,啟動調試程序。
跟蹤觸發功能使得微處理器10發出一個表明有預設定地址的指令執行或預設定地址的數據被存取的外部信號。為了響應該信號,調試器60接通/關斷程序計數器跟蹤功能。在調試模塊30把被處理器內核20執行的指令地址與存貯在調試模塊30的指令地址進行比較,或把被處理器內核20存取的數據的地址與存貯在調試模塊30的數據地址進行比較,或是把從處理器內核20發送到內部調試接口和處理機總線80的數據與存貯在調試模塊30的數據進行比較之后,如果它們之間彼此相符合,向調試器60提供觸發器信息,實現跟蹤觸發功能。
調試模塊30的詳細說明。
圖5是調試模塊30的內部框圖。
調試模塊30含存指令/數據地址斷點電路31、程序計數器跟蹤器32、處理機總線斷點電路33、串行監控總線電路34、寄存器電路35、外部接口電路36和時鐘發生器37。
指令/數據地址斷點電路31通過內部調試接口連到處理機內核20。電路31把處理機20提供的指令地址與設置在寄存器電路35的指令地址比較,如果他們相符合,向處理器內核20提供指令地址斷點異常請求。電路31還把處理器內核20提供的數據地址與設置在寄存器電路35的數據地址相比較,如果他們彼此相符合,向處理機內核20提供一個數據地址斷點異常請求。
程序計數器跟蹤32通過內部調試接口連接到處理機內核20,以便處理由處理機內核20提供的程序計數器跟蹤信息,并將已處理的信息提供給外部接口電路36。
處理機總線斷點電路33通過處理器總線80連到處理機內核20。電路33監控在處理機總線80的總線周期,當用于設置在寄存器電路35中的地址和數據的總線周期進行時,向處理機內核20發出異常請求。
串行監控總線電路34通過處理器總線80連到處理機內核20,并且當處理機內核20執行調試器60的監控程序時,起接口作用。
寄存器電路35包括控制寄存器,用于控制調試模塊30各種功能。寄存器35通過處理器總線80和內部調試接口連接到處理機內核20,使得處理機內核20能夠讀、寫控制寄存器的內容。控制寄存器的內容被送到調試模塊30的各個單元和處理機內核20,以控制調試功能。
外部接口電路36使調試模塊30的程序計數器跟蹤32和串行監控總線電路34以及處理機內核20與調試器60相接口。
時鐘發生器37將時鐘信號CLK分頻,并向串行監控總線電路34提供時鐘信號CLK2。
〔外部信號〕調試模塊30采用下面8種專用的接口信號與外部調試器60通信1.SDAD/TPC(輸出)2.SDI/DINT*(輸入)3.DCLK(輸出)4.DRESET*(輸入)5至7、PCST〔2:0〕(輸出)8.DBGE*(輸入)(1)、調式時鐘信號DCLK(輸出)這個信號是送到調試器60的時鐘輸出信號,用來控制串行監控總線和程序計數器跟蹤接口的定時。用于串行監控總線的操作,這個信號是由處理機內核20的操作時鐘信號的頻率二分頻形成的。
(2)、調試復位信號DRESET*(輸入到上拉(pull-up)端鈕)。
這個信號是低有效的信號(low-active),它的設置使調試模塊30初始化,而無須考慮輸入信號DBGE*。當不使用調試器60時,該信號端鈕斷開。
(3)、程序計數器跟蹤狀態信號PCST〔2:0〕(輸出)這個信號表示下列程序計數器跟蹤狀態和串行監控總線方式111流水線失速狀態(STL)110已獲取(Taken)轉移/跳轉狀態(JMP)(具有程序計數器輸出)101已獲取轉移/跳轉狀態(BRT)(沒有程序計數器輸出)100異常狀態(EXP)(具有異常向量碼輸出)011順序異常狀態(SEQ)(指令運行)010在流水線失速情況下,跟蹤觸發器輸出狀態(TST)001運行時,跟蹤觸發器輸出狀態(TSQ)000調試方式(DBM)(0低電平,1高電平)(4)、調試器允許信號DBGE*(輸入到上拉端鈕)這個信號指示是否調試器被連接。如果調試器60斷開,信號是高;如果調試器被連接,則信號是低。
如果信號DBGE*是高,表示調試器斷開,處理器內核20的信號DEV是低,并且調試異常向量地址是FF200200。用戶復位信號RESET*使調試模塊30的功能初始化,并且禁止調試器60的功能。這時,輸出信號SDA0/TPC、DCLK和PCST〔2:0〕變成高。
如果信號DBGE*是低,則表示調試器60接通,信號DEV是高,調試異常向量地址是FF20-0200(在監控區域)。用戶復信號不對調試模塊30初始化。
(5)、串行數據和地址輸出/目標程序計數器信號SDA0/TPC(輸出)當信號PCST〔2:0〕表示調試方式(DBM)時,這個信號做為串行數據和地址輸出信號SDA0,當信號PCST〔2:0〕不表示調試方式時,則這個信號做為目標程序計器信號TPC。
當信號PCST〔2:0〕表示調試方式時,則信號SDA0以串行方式,一位一位地提供數據、地址、讀/寫和字節允許信號。在一個總線周期開始之前,為時鐘周期提供一個低電平起始位信號。
在讀操作時,按低電平起始位,地址位A〔2〕到A〔19〕,讀/寫位R/W*和字節允許位BE〔0〕*到BE〔3〕*的順序提供信號。在寫操作時,按低電平起始位,A〔2〕到A〔9〕,R/W*,BE〔0〕*到BE〔3〕*和數據位D〔0〕到D〔31〕。
當信號PCST〔2:0〕表示正常方式時,則信號TPC提供轉移/跳轉指令的目標地址以及異常/中斷的向量數。目標地址從位A〔2〕到位A〔31〕順序提供。
(6)、串行數據輸入/調試中斷信號SDI/DINT*(輸入到上拉端鈕)當信號PCST〔2:0〕表示調試方式時,則這個信號做為串行監控總線接口信號SDI;當信號PCST〔2:0〕表示正常方式時,則這個信號做為程序計數器跟蹤接口信號DINT*。
信號SDI是數據輸入信號,在讀操作中,當接收一個在時鐘周期內為低的外部起始位時,數據輸入操作從下一個時鐘開始。當在寫操作中有低電平輸入時,則總線周期結束。
在讀操作中,數據各位按低電平起始位,數據位D〔0〕到D〔31〕的順序提供。在寫操作中,僅接收低電平結束位。
信號DINT*是來自調試器60的調試中斷輸入信號。當不使用調試器60時,則端鈕是斷開的。
圖6是寄存器電路35的詳圖。
寄存器電路35由地址譯碼器351和寄存器部位352組成。
地址譯碼器351接收經由處理器總線80從處理器內核20送來的地址輸入信號A〔31:0〕、讀信號RD*、寫信號WR*、調試方式信號DM和內核時鐘信號CLK。當讀寄存器部位352的一個寄存器時,地址譯碼器351接收指定寄存器的設備地址碼,斷言一個對應于該寄存器的寄存器讀信號,并斷言一個送到處理器內核20的讀確認信號RDACK*。
當向寄存器部件352寄存器按給定地址寫入數據時,地址譯碼器351對應于該寄存器的寄存器寫信號、讀確認信號RDACK*和寫確認信號WRACK*。
在正常方式下,寄存器部件352是不可存取的。這樣,在讀總線周期地址譯碼器351只設置送到處理器內核20的讀確認信號RDACK*,而在寫總線周期,僅設置送到處理器內核20的寫確認信號WARCK*,因此,讀出的值是不確定的,而寫入數據也是無效的。
如果寄存器DCR的存貯保護位MP被調置,即使在調試方式下,寄存器部件352的寄存器,除了寄存器DCR外都是不可存取的。這樣,在讀總線周期,地址譯碼器351只設置讀確認信號RDACK*;在寫總線周期僅設置寫確認信號WRACK*,因此,讀出來的值是不確定的,寫入的數據也無效。
表1 是地址譯碼的操作
寄存器部件352包括調試控制寄存器(DCR)指令。斷點狀態(IBS)寄存器、數據、斷點狀態(DBS)寄存器、處理器總線斷總狀態(PBS)寄存器、指令斷點地址0(IBA0)寄存器、指令、斷點控制0(IBC0)寄存器,數據斷點地址0(DBA0)寄存器、數據、斷點控制0(DBC0)寄存器、處理器總線斷點地址0(PBA0)寄存器、處理器總線斷點數據0(PBD0)寄存器、處理器總線斷點數據屏蔽0(PBM0)寄存器和處理器總線斷點控制0(PBC0)寄存器。
當調試復位信號DRESET*被設置,或是當為高電平,而表示調試器60斷開的信號DEGE*用戶復位信號RESET*激活時,則所有寄存復位。
解釋寄存器功能圖7是調試控制寄存器(DCR)跟蹤方式位TM(復位到0)這一位規定程序計數器跟蹤操作0實時提供程序計數器跟蹤信息1提供完整的程序計數器跟蹤信息(不保證實時操作)。
位TM被送到程序計數器跟蹤器32。
屏蔽用戶復位MRST(復位到0)這一位規定用戶復位屏蔽0調試異常時,屏蔽用戶復位1調試異常時,允許用戶復位位MRST被送到外部接口電路36。
存貯保護位MP(復位到1)
0在調試方式下,允許對監控區進行寫操作。
1在調試方式下,除了寄存器DCR阻止寫操作之處,保護監控區域(FF20-0000到FF3F-FFFF)位MP被送到地址譯碼器351和串行監控總線電路34。
屏蔽非屏蔽中斷位MNmI(復位到1)0屏蔽處理器內核20的NmI。
1允許NmI。
位MVmI被送到處理器內核20。
屏蔽中斷位MInt(復位到1)0屏蔽處理器內核20的外中斷(Int〔5:0〕*)1允許外中斷(Int〔5:0〕*)位MInt被送到外部接口電路36。
Endian存貯器位ENM。
當用戶進行復位操作時,這一位表示Endian信號的值,這一位是只讀位,對該位的寫操作是無效的。
0小的endian。
1大的endian。
當用戶復位信號RESET*為低,在內核時鐘信號上升沿,通過鎖存endian信號形成位ENM。
暫停狀態位HIS當信號DINT*有效,這一位表示暫停信號的值。位HIS是只讀位,對這一位的寫操作是無效的。
0非暫停狀態1暫停狀態通過在調試中斷信號DINT的上升沿鎖住暫停信號形成HIS位。
打盹(doze)狀態位DZS。
當信號DINT*有效這一位表示打盹信號的值。該位是只讀位,對這一位的寫操作是無效的。
0非打盹狀態1打盹狀態在調試中斷信號DINT*的下降邊鎖存打盹信號形成位DZS。
圖8是指令斷點地址0寄存器IBA0。
指令斷點地址字段IBA。
寄存器IBA0的字段存貯指令斷點地址,它是虛擬地址。字段IBA送到指令/數據地址斷點電路31。
圖9是指令斷點控制0寄存器IBC0。
斷點允許位BE(復位到0)這一位規定指令地址斷點功能的有效性。
0禁止指令地址斷點功能。
1允許指令地址斷點功能。
如果將被運行的指令的虛擬地址與設置在寄存器IBA的地址相符合,且當位BE為1,則向處理器內核20發出指令斷點請求,使寄存器IBS的位、BS0置位。(處理器內核20產生指令地址斷點異常,剛好在運行的指令地址符合之前)位BE送往到斷點電路31。
跟蹤觸發允許位TE(復位置0)。
這一位表示指令地址跟蹤觸發功能的有效性。
0禁止指令地址跟蹤觸發功能
1允許指令地址跟蹤解發功能。
如果被運行的指令的虛擬地址與寄存器IBA0地址設置相符合,并且表明允許指令地址跟蹤觸發功能的位TE為1,則信號PCST〔2:0〕代表跟蹤觸發的輸出狀態TST(0/0)或TSQ(001),使得寄存器IBS的位BS0置位。位TE送往斷點電路31。
圖10是指令中斷狀態寄存器IBS中斷通道號字段BCN該字段表示一個指令斷點的通道號。它是只讀字段,對該字段的寫操作將是無效的。
0000空(保留)00011個通道111115個通道(保留)斷點狀態0位BS0這是一個表明產生指令地址、斷點或指令地址跟蹤觸發的狀態位。
0無指令地址斷點,也沒有通道0的指令地址跟蹤觸發。
1指令地址斷點異常的發生或指令地址跟蹤觸發并且寄存器IBC0中位BE為1或TE為1則表明指令的虛地址與設置地址相符合。
通過向BS0寫0將BS0清除。當一個從斷點電路31發出的BS0置位信號被調置則BS0被置位。
圖11是數據斷點地址0寄存器DBA0數據斷點地址字段DBA。
該字段存放一個數據斷點地址,這個地址是虛地址。這個字段送往斷點電路31。
圖12是數據斷點控制0寄存器PBC0。
斷點允許位BE(復位置0)這個位規定數據地址斷點功能的有效性。
0禁止數據地址斷點功能。
1允許數據地址斷點功能若被存取的數據的虛地址與在寄存器DBA0中設置的地址相符合且寄存器DBA0的位BE為1,將產生一個數據斷點請求送往處理器內核20,并置位寄存器DBS的位BS0。位BE被送往斷點電路31。
跟蹤觸發允許位TE(復位置0)這個位規定數據地址跟蹤觸發功能的有效性。
0禁止數據地址跟蹤觸發功能1允許數據地址跟蹤觸發功能若被存取的數據的虛地址與寄存器DBA0中設置的地址相符合,并且位TE為1,則表明允許數據地址跟蹤觸發功能。信號PCST〔2:0〕表示跟蹤觸發輸出狀態TST(0/0)或TSQ(001),并且寄存器DBS的位BS0被置位。位TE被送往斷點電路31。
圖13是數據斷點狀態寄存器DBS。
斷點通道號字段BCN該字段表明數據斷點的通道號。它是只讀的,對該字段的寫操作是無效的。
0000空(保留)。
00011個通道。
111115個通道(保留)斷點狀態0位BS0。
這是一個表明一個數據地址斷點或數據地址跟蹤觸發已經發生的狀態位。
0沒有數據地址斷點或通道0的數據地址跟蹤觸發。
1在數據的虛地址與設置地址相符合,并且位BE為1或寄存器DBC0中的TE為1時發生了數據地址斷點異常或數據地址跟蹤觸發。
通過向BS0寫0將BS0清除。當從斷點電路31發出的BS0置位信號被設置后,BS0被置位。
圖14是處理器總線斷點地址寄存器PBA0。
處理器總線斷點地址字段PBA。
該字段存儲處理器總線斷點跟蹤觸發功能的斷點地址。這個地址是物理地址。該字段PBA被送往處理器總線斷點電路33。
圖15是處理器總線斷點數據0寄存器PBD0。
處理器總線斷點數據字段PBD。
該字段存放處理器總線斷點/跟蹤觸發功能的斷點數據。字段PBD被送往處理器總線斷點電路33。
圖16是處理器總線屏蔽0寄存器PBM0。
處理器總線斷點數據屏蔽字段PBM。
該字段表示禁止(屏蔽)某些存儲在寄存器PBD0中的數據比較的位。這些位是根據處理機總線斷點/跟蹤觸發功能而設置的位。
0允許寄存器PBD0中的相應位進行比較。
1禁止寄存器PBD0中的相應位進行比較。
字段PBM被送往處理器總線斷點電路33。
圖17是處理器總線控制0寄存器PBC0。
斷點允許位BE(復位置0)這一位規定處理器總線斷點的有效性。
0禁止處理器總線斷點。
1允許處理器總線斷點。
若一個地址和數據與設置的值相符合,則一個調試中斷請求被發送給處理器內核20,位BE被送往處理器總線斷點電路33。
跟蹤觸發器允許位TE(復位置0)。
該位規定一個處理器總線跟蹤觸發的有效性。
0禁止處理器總線跟蹤觸發。
1允許處理器總線跟蹤觸發。
若一個地址和數據與設置的值相符合,那么信號PCST〔2:0〕代表跟蹤觸發輸出狀態TST(0/0)或TSQ(001)。位TE被送往處理器總線斷點電路33。
從非高速緩存區取指令位IFUC。
該位規定一個地址和數據是否和設定值比較,用于從非高速緩存區取指令。
0禁止比較。
1允許比較位IFUC被送往處理器總線斷點電路33。
從非高速緩存區數據加載位DLUC。
該位規定高速緩存區加載的數據是否進行地址和數據的比較。
0禁止比較。
1允許比較。
位DLUC被送往處理器總線中斷電路33。
存儲數據到非高速緩存區位DSUC。
該位表示當數據被存儲到非高速緩存區時,是否進行地址和數據的比較。
0禁止比較。
1允許比較。
位DSUC是被送往處理器總線斷點電路33。
存儲數據到高速緩存區位DSCA。
該位規定當數據被存儲到高速緩存區時,是否進行地址和數據的比較。
0禁止比較。
1允許比較。
位DSCA被送往處理器斷點電路33。
圖18是處理器總線斷點狀態寄存器PBS。
斷點通道號字段BCN。
該字段規定處理器總線斷點的通道號。
00000通道(保留)。
00011通道…111115通道(保留)斷點狀態0位BS0(復位置0)這是一個表示是否發生了處理器總線斷點或一個處理器總線跟蹤觸發的狀態位。
0沒有通道0的處理器總線斷點或處理器總線跟蹤觸發。
1通道0的處理器總線斷點或處理器總線跟蹤觸發,且BE是1或在寄存器PBE0中位TE被置1。
通過向BS0寫0將它清除。若位BE為1,到處理器內核20的斷點調試請求也被清除。當一個從處理器總線斷點電路33發出的BS0置位信號被設置,位BS0被置位。
圖19是指令/數據地址斷點電路31,該電路具有一個指令地址比較器311、一個數據地址比較器312和“與”電路313、314、315和316。
若斷點允許位BE或寄存器IBC0中的觸發允許位TE被置位,并且一個從處理器內核20發出的指令地址允許信號被設置,那么,比較器311將從處理器內核20來的輸入指令地址和存儲在寄存器IBA0中的地址進行比較。若它們符合,則比較器311給寄存器IBS中的位BS0提供一個信號使它置位,若寄存器IBC0中的BE位在這時置位,“與”電路313的輸出被設置,則提供給處理器內核20一個指令地址斷點請求。若寄存器IBC0的TE位被置位,“與”電路314的輸出被設置,則提供給程序計數器跟蹤器32一個指令地址跟蹤觸發請求。
若寄存器DBC0的位BE或TE被置位,并且若一個從處理器內核20發出的數據地址允許信號被設置,那么,比較器312對從處理器內核20發出的輸入數據地址與存儲在寄存器DBA0中的地址進行比較。若它們相符合,比較器312提供一個信號來置位寄存器DBA0中的位BS0。若寄存器DBC0中的位BE在這時置位,“與”電路315的輸出被設置,則提供一個數據地址中斷請求給處理器內核20。若寄存器DBC0的位TE被置位,“與”電路316的輸出被設置,則提供一個數據地址跟蹤觸發請求給程序計數器跟蹤器。
圖20是處理器總線斷點電路33的詳圖。
電路33監控處理器總線的總線操作,并且若在寄存器中發生了用于地址和數據設置的總線操作,電路33則提供一個調試中斷請求給處理器內核20。
電路33具有一個處理器總線地址比較器331,一個帶有屏蔽的數據比較器332和“與”電路333,334和335。
當寄存器PBC0的斷點允許位BE或觸發允許位TE被置位,比較器331將處理總線中的地址和在設置在寄存器PBA0中的地址進行比較。寄存器PBC0的位DSCA,DSUC,DLUC和IFUC規定關于非高速緩存區/高速緩存區、存儲數據/加載數據和指令獲取的比較的有效性。表2是比較器331的操作。它們是根據信號ID(指示是否為指定獲取或數據存取),讀信號RD*,寫信號WR*,和信號CACHE*而進行的。
表2
在讀信號RD*為低的讀總線周期中,數據比較器332將從處理器總線80輸入的數據DIN〔31:0〕和在寄存器PBD0中存儲的數據進行比較,它只比較那些在寄存器PBM0中相應位為0的位。在寫信號WR*為低的寫總線周期中,比較器332將處理器總線80的輸出數據DOUT〔31:0〕和在寄存器PBD0中存儲的數據進行比較。它只比較在寄存器PBM0中相應位為0的那些位。
若比較器331和332的每個輸出均為高,亦既,如果地址和數據與設置的地址和數據相符合。“與”電路333的輸出被設置,則請求寄存器電路35設置寄存器PBS的位BS0。若這時寄存器PBC0的位BE被置位,“與”電路334的輸出被設置,則提供給處理器內核20一個調試中斷請求。若寄存器PBC0的TE位被置位,則“與”電路335的輸出被設置,發出處理器總線跟蹤觸發請求給程序計數器跟蹤器32。
圖21是串行監控總線電路34的詳圖。電路34具有一個串行監控總線控制器341,一個串行輸出電路342和一個串行輸入電路343。
串行監控總線控制器341以處理器總線80接收數據輸出信號DOUT〔31:0〕、地址信號A〔31:20〕、讀信號RD、寫信號WR*、協處理器讀信號CPRD*、協處理器寫信號CPWR*和調試方式信號DM、控制器341也接收來自時鐘發生器37產生的時鐘信號CLK2、寄存器電路35的寄存器DCR的MP位以及外部接口電路產生的信號SDI。
控制器341向處理器總線80提供一個讀確認信號RDACK*。寫確認信號WRACK*。協處理器讀確認信號CPRDACK*、和協處理器寫確定信號CPWRACK*、控制器341向串行輸出電路342提供一個串行監控總線讀/寫信號,串行監控總線字節允許信號、串行監控總線數據信號、和用于電路342的輸出移位寄存器的數據加載信號和輸出移位信號,控制器341向串行輸入電路343提供用于輸入移位寄存器345的輸入移位信號和用于輸出緩沖區346的輸出允許信號。串行監控總線讀/寫信號在讀總線操作期間為高,在寫總線操作期間為低。
當一個從控制器341到輸出移位寄存器344的數據加載信號被設置,一個起始位(固定值為低)、地址位A〔1〕到A〔19〕,串行監控總線讀/寫信號,串行監控總線字節允許信號,串行監控總線數據信號被從LSB加載到輸出移位寄存器344。當到寄存器344的輸出移位信號被設置,寄存器344中的值以MSB向LSB移動一位。MSB被置為高。輸出移位寄存器344的LSB的值由輸出信號SDA0來進位。
當從控制器341到輸入移位寄存器345的輸入信號被設置,寄存器345的值從LSB向MSB移動一位,輸入信號SDI的值被置于LSB中。
圖21中的串行監控總線電路34的操作將被解釋如下當處理器內核20在調試方式下存取從0XFF200000到0XFF2F-FFFF這個區域;或當協處理器在調試方式下執行讀/寫操作(CTC0,CFC0),通過串行監控總線電路34存取調試器60中的存儲器。使用串行監控總線的寫操作期間。電路34以串行方式一位一位地提供一個地址信號,一個總線控制信號和一個數據信號做為輸出信號SDA0在讀操作期間,電路34以串行方式一位一位地提供一個地址信號,一個總線控制信號做為輸出信號SDA0。并接收通過輸入信號SDI進位的數據。
串行監控總線電路34的操作按照時鐘信號CLD2進行。CLK2是通過將處理器內核20的操作時鐘信號CLK進行一次分頻得到的。
a)通過讀/寫總線操作存取在讀總線操作期間,處理器內核20提供地址A〔31:0〕來存取和設置信號RD*、當讀確認信號RDACK*被設置時,數據DIN〔31:0〕被讀出并且總線操作結束。
在寫總線操作期間,處理器內核20發送一個存取地址A〔31:0〕和一個要寫入的數據〔31:0〕并設置信號WR*。當寫確認信號WRACK*被設置時,總線操作結束。
若在調試方式下,處理器內核20對下面提到的監控區域執行總線操作,那么調試器60通過串行監控總線電路34被訪問。
監控區域在0XFF20-0000與0XFF2F-FFFF之間擴展了1兆。
(A〔31:20〕)=1111-1111-0010(0低,1高)例如,寫總線操作用存儲指令(SW)操作將數據寫入存儲器。下面是一個存儲指令的例子SWr80X0004(r9)在這個例子中,一個存儲器地址是通過向通用寄存器r9加一個16位偏移量0X0004來獲得。要訪問監控區域,通用寄存器的值必須提前設置到0XFF20-0000到0XFF2F-0000之間。
串行監控總線電路34,從低位中提供地址信號A〔19:2〕,在讀操作期間提供高電平信號或在寫操作期間提供低電平信號作為輸出信號SDA0。此后,字節允許信號BE〔3:0〕*從低位開始提供。在讀操作期間,32位數據做為輸入信號SDI被接收,并以數據DIN〔31:0〕提供給處理器總線80。在寫操作期間,從處理器總線80來的數據DOUT〔31:0〕由輸出信號SDA0來進位。
從處理器內核20來的18位地址信號A〔19:2〕、用來存取1兆的內存空間。
處理器內核20的字節允許信號BE〔3:0〕送到串行監控總線,用以存取一個字節、半個字或三個字節,即使是進行字節、半字或三字節訪問時,串行總線仍然傳送32位的數據D〔31:0〕。當寫字節、半字或三字節數據時,信號BE〔3:0〕中與數據D〔31:0〕中有用字節對應的位將被設置。在進行讀操作時,與信號BE〔3:0〕中非有效位對應的字節將被微處理器內核20忽略。
如果DCR寄存器的MP位為1,監控區處于調試方式的保護之下,則對從FF20-0000到FF2F-FFFF區域內的寫操作將被忽略。在這種情況下,串行監控總線電路34只向微處理器內核20返回WRACK*信號,用以終止總線操作。
在調試方式下,當讀取FF20-0000至FF2F-FFFF區的數據時,將從串行監控總線得到正確的數值,而不必考慮MP位的值。
在正常方式下,對FF20-0000至FF2F-FFFF監控區的寫操作將被忽略,而且讀操作的結果是不確定的。此時串行監控總線電路34返回WRACK*或RDACK*信號到處理器內核20并結束總線操作。
b)協處理器總線操作的存取(CTC0/CFC0)當執行CFC0指令時,處理器內核20執行協處理器的讀總線操作,而執行CTC0指令時,是協處理器的寫總線操作。在協處理器總線操作時,CFC0和CTC0指令被提供給處理器總線的地址A〔31:0〕,如下所示A〔31:0〕COP0 CT rt rd 0A〔31:0〕COP0 CF rt rd 0CFC0(0低電平,1高電平)rt通用寄存器rd協處理器的控制寄存器(對于串行監控無意)在協處理器讀操作時,處理器內核20設置CPRD*信號,而當協處理器讀確認信號CPRDACK*被設置時,讀取數據DIN〔31:0〕并結束總線操作。
在協處理器寫操作時,處理器內核20設置CPWR*信號,并提供一個處理器內核20中的通用寄存器的值,做為數據總線信號DOUT〔31:0〕。當協處理器寫確認信號CPWRACK*設置時,處理器內核20結束總線操作。
處理器內核20用指令CTC0和CFC0執行協處理器總線操作,通過串行監控總線存取調試器60。
串行監控總線電路34提供每個周期傳送一位的總線周期信號,做為輸出信號SDA0。處理器內核20的地址信號A〔19:2〕從低位提供。此后,在協處理器讀操作時,是一個高電平信號,而協處理器的寫操作時是低電平信號。串行監控總線的字節允許信號是四個時鐘周期的低電平信號,與處理器總線的BE〔3:0〕信號無關。
對CFC0指令的響應是接收32位的輸入信號SDI并作為數據信號DIN〔31:0〕提供給處理器總線。而對GTC0指令的響應是把處理器總線的輸出信號DOUT〔31:0〕作為輸出信號SDA0。
在調試方式下,串行監控總線的寫操作按照GTC0指令執行,不考慮監控區的保護,即不考慮DCR寄存器MP位的值。同樣地,串行監控總線的讀操作按照指令CFC0執行。
在正常方式下,根據GTC0指令,寫操作將被忽略,根據CFC0指令讀操作的結果則是不確定的,調試模塊只返回CPRDACK*和CDWRACK*信號到處理器內核20并結束總線操作。
串行監控總線操作的時序圖解釋如下a)串行監控總線的讀操作。
圖22是串行監控總線讀操作的時序圖。
(1)在周期1中,處理器內核20啟動0XFF2F-FFFF到0XFF2F-FFFF(A〔31:20〕=1111-1111-0010)的讀操作,處理器內核20提供地址A〔31:0〕進行存取并設置信號RD*,同時設置用于指明所讀字節位置的字節允許信號BE〔3:0〕。
(2)在周期2中,串行監控總線電路34確認啟動讀操作,并提供由時鐘信號CLK2形成的一個時鐘周期的低電平信號作為輸出信號SDA0,CLK2是通過內核時鐘信號GLK=分頻得到的。
(3)在周期3到25中,電路34提供地址位A〔2〕到A〔19〕,一個高電平位(指明讀操作),和處理器內核20的字節允許位BE〔0〕*到BE〔3〕*作為輸出信號SDA0,每個CLK2的周期傳一位。
(4)在周期n中,調試器60在輸出數據前提供一個時鐘周期的低電平,作為信號SDI。在接收到低電平信號后,電路34在周期n+1到n+32中,以每個時鐘周期一位和速度接收數據D〔0〕到D〔3〕。
(5)在周期n+33中,電路34向處理器內核20設置確認信號RDACK*并提供所讀的32位數據D〔31:0〕,作為數據信號DIN〔31:0〕。
(6)在周期n+33中,處理器內核20讀取數據信號DIN〔31:0〕,讀操作結束。
b)串行監控總線的寫操作。
圖23是串行監控總線寫操作的時序圖。
(1)在周期1中,處理器內核20啟動0XFF20-0000至0XFF2F-FFFF(A〔31:20〕=1111-1111-0010)的寫操作。處理器內核20提供一個存取地址A〔31:0〕并設置信號WR*,同時設置字節允許信號BE〔3:0〕指明所寫數據的字節位置。
(2)在周期2中,串行監控總線電路34確認寫操作的開始并提供時鐘信號CLK2的一個時鐘周期的低電平,作為輸出信號SDA0。
(3)在周期3到57,電路34提供地址位A〔2〕到A〔19〕、一個低電平(指明寫操作)、字節允許位BE〔0〕*到BE〔3〕*作為輸出信號SDA0,并寫入由處理器內核20提供的數據DOUT〔0〕到DOUT〔31〕。
(4)在周期n,調試器60結束寫數據并提供一個時鐘周期的低電平,作為輸入信號SDI。
(5)在周期n+1,電路34檢測低電平信號并設置寫確認信號WRACK*到處理器內核20。
(6)在周期n+1,處理器內核20結束寫操作。
c)按指令CFC0進行讀總線操作。
圖24是根據指令CFC0的讀總線操作的時序圖。
(1)在周期1,處理器內核20根據指令CFC0啟動協處理器讀總線操作,向處理器總線提供地址A〔31:21〕=0100 0000010并設置信號CPRD*。
(2)在周期2,串行監控總線電路34確認讀操作的開始并提供由CLK2信號確定的一個時鐘周期的低電平信號作為輸出信號SDA0。
(3)在周期3到20,電路34提供地址A〔31:21〕的地址位A〔2〕~A〔19〕作為輸出信號SDA0。在周期21,輸出一個時鐘周期的高電平信號指明是讀操作。在周期22至25,輸出四個時鐘周期的低電平信號而不考慮處理器總線的字節允許信號。
(4)在周期n,調試器60在提供數據之前輸出一個時鐘周期的低電平信號作為輸入信號SDI,電路34接收到低電平信號后,在n+1到n+32周期讀數據D〔0〕到D〔31〕。
(5)在周期n+33,電路34設置協處理器讀確認信號CPRDACK*到處理器內核20,并提供數據總線信號DIN〔31:0〕和要讀取的32位數據D〔31:0〕。
(6)在周期n+33,處理器內核20讀信號DIN〔31:0〕并結束協處理器讀總線操作。
d)根據指令CTC0的寫總線操作。
圖25是根據CTC0指令進行寫總線操作的時序圖。
(1)在周期1,處理的內核20根據指令CTC0啟動協處理器寫總線操作,提供一個處理器總線地址A〔31:21〕=0100-0000-110,并設置信號CPWR*。
(2)在周期2,串行監控總線電路34確認寫操作的開始并提供一個由信號CLK2確定的一個時鐘的低電平,作為輸出信號SDA0。
(3)在周期3到20,電路34提供地址A〔31:21〕的地址位A〔2〕至A〔19〕作為輸出信號SDA0。在周期21,輸出一個時鐘周期的低電平信號指明為寫操作。在周期22至25,輸出信號SDA0變為四個時鐘周期的低電平信號而不考慮處理器總線的字節允許信號。在周期26至57,輸出信號SOAD提供數據總線的輸出位DOUT〔0〕至DOUT〔31〕。
(4)在周期n中,調試器60完成寫數據并提供一個時鐘的低電平作為輸入信號SDI。
(5)在周期n+1,電路34檢測該低電平信號,并設置協處理器寫確認信號CPWRCK*到處理(6)在周期n+1,處理器內核20結束協處理器寫總線操作。
圖26是串行監控總線控制器341的操作的流程圖。
控制器341監控處理器總線80的操作。
(1)在步驟S120,S124和S125,串行監控總線讀操作啟動,因為,有一個地址A〔31:20〕=0XFF2,讀電平RD*(低)被設置,信號DM是高電平指明為調試方式。
(2)在步驟S120,S124,S132和S133,設置處理器內核20的RDACK信號以結束總線操作,盡管A〔31:20〕=0XFF2并設置了RD*信號(低電平),但因為DM信號為低電平,則表示正常方式。
(3)在步驟S120、S121,S126和S127,串行監控總線的寫操作啟動,因為A〔31:20〕=0XFF2,寫信號WR*(低)被設置,信號DM為高指明是調試方式,而且寄存器DCR的MP位為0,指明為寫允許狀態。
(4)在步驟S120、S121,S126,S134和S135,設置微處理器內核20的WRACK*信號結束總線操作。盡管A〔31:20〕=0XFF2并且設置了寫信號WR*(低),但因為信號DM為低指明為正常方式,或寄存器DCR的MP位為1指明為寫禁止狀態。
(5)在步驟S120、S122,S128和S129,串行監控總線的協處理器讀操作開始,因為A〔31:21〕=0100-0000-010,用于指令CFC0的協處理器讀總線信號CPRD*被設置,而且信號DM為高指明為調試方式。
(6)在步驟S120,S121,S128,S136和S137,處理器內核20的CPRDACK*信號被設置,則結束總線操作。雖然A〔31:21〕=0100-0000-010且用于指令CFC0的CPRD信號(低)被設置,但是,因為信號DM為低,指明是正常方式。
(7)在步驟S120,S121,S122,S123,S130和S131,串行監控總線的協處理器讀操作啟動,因為A〔31:21〕=0100-0000-110,指令CTC0的協處理器寫總線操作信號CPWR(低)被設置,且信號DM為高指明為調試方式。
(8)在步驟S120,S121,S122,S123,S138和S139,設置處理器內核20的CPWRACK*信號以結束總線操作。盡管A〔31:21〕=0100-0000-110且設置了指令CTC0的信號CPWR*(低),但因為信號DM為低說明是正常方式。
圖27是串行監控總線電路34進行讀操作的流程圖。
在讀操作中,串行監控總線控制器341在周期1中,向輸出移位寄存器344提供高電平的串行監控總線讀/寫信號,串行監控總線字節允許信號BE〔3:0〕和高電平的串行監控總線數據信號,并設置一個數據裝入信號。
根據指令CFC0,在協處理器讀總線操作中,串行監控總線控制器341向輸出移位寄存器344提供高電平的串行監控總線讀/寫信號,低電平的字節允許信號,高電平的串行監控總線數據信號,并設置數據裝入信號。移位寄存器334鎖存這些值和位于LSB的低電平信號。
輸出信號SBA0置為低,控制器341在周期2中,設置輸出移位信號。
從周期3至周期25,控制器341設置輸出移位信號。寄存器344在周期1鎖存的位,以每個時鐘周期一位的速度送出,作為輸出信號SDA0。
從周期26至周期n,控制器341等待被設置的輸入信號SDI變為低電平。
從周期n+1至周期n+32,控制器341設置輸入移位信號到串行輸入電路343,而輸入信號SDI送輸入數據D〔0〕至D〔31〕再到輸入移位寄存器345。
在周期n+33,控制器341在讀操作中,設置處理器總線的讀確認信號RDACK*。在協處理器讀總線操作中,控制器341設置協處理器讀確認信號CPRDACK*。輸出允許信號到串行輸入電路343被設置,輸入寄存器345中的數據D〔31:0〕由數據總線輸入信號DIN〔31:0〕傳送。
圖28是串行監控總線電路34寫操作的流程圖。
在寫操作中,串行控制總線控制器341在周期1中,向輸出移位寄存器344提供低電平的串行監控總線讀/寫信號,串行監控總線字節允許信號BE〔3:0〕和串行監控總線的數據信號DOUT〔31:0〕,并設置數據裝入信號。
根據指令GTC0在協處理器的寫總線操作中,控制器341向寄存器提供低電平的串行監控總線讀/寫信號,4位低電平的串行監控總線字節允許信號和串行監控總線數據信號DOUT〔31:0〕,并設置數據裝入信號。寄存器344在周期1鎖存這些數值和位于LSB的低電平信號。
在周期2,輸出信號SDA0置為低,控制器341設置輸出移位信號。
從周期3至57,控制器341設置輸出移位信號。寄存器344在周期1鎖存的數據由輸出信號SDA0以每個時鐘周期一位的速度傳送。
從周期58至n,控制器341等待被設置的輸入信號SDI變為低。
在周期n+1,控制器341在寫操作中,向處理器總線設置寫確認信號WRACK*,若為協處理器總線操作,控制器341設置協處理器寫確認信號CPWRACK*。
下面介紹程序計數器跟蹤器32。
間接跳轉,直接跳轉和轉移定義如下間接跳轉跳轉的目標地址是存貯于寄存器或內存中的值,也就是,跳轉指令本身不指明跳轉的目標地址。
直接跳轉跳轉指令的目標地址由程序計數器和指令中的編碼確定。
轉移(或條件轉移)這一類跳轉指令的目標是由程序計數器與指令中幾部分代碼和共同確定。轉移是否實際執行取決于條件,若轉移被實際執行則稱之為“進入轉移”,否則稱為“末進入轉移”。
圖29是程序計數器跟蹤器32的詳圖。
跟蹤器32接收來自處理器內核20下列信號調試方式信號DM該信號說明當前方式是調試方式還是正常方式。
流水線執行信號該信號指示指令的執行。
30位的目標程序計數器〔31:2〕信號這些信號指明轉移或跳轉指令的目標地址或是異常處理的向量地址。當設置間接跳轉、直接跳轉、轉移進入和異常發生信號時,則該信號有效。
間接跳轉信號該信號表示執行了一個間接跳轉。
直接跳轉信號該信號表示執行了一個直接跳轉。
轉移進入信號該信號表示執行了一條轉移指令并進入轉移。
異常發生信號該信號表示異常已經發生。
跟蹤器32向處理器內核20提供如下信號以全面跟蹤程序計數器。
流水線失速請求信號該信號阻塞了處理器內核20的流水線處理,從而完全地讓目標程序計數器產生輸出。當跟蹤器32正在接收目標程序計數器的間接跳轉信號時發生了下一個間接跳轉,則跟蹤器32設置流水線失速請求信號,停止處理器內核20的流水線處理。一旦目標程序計數器的信號完成,流水線失速請求信號被取消,灰復流水線處理。
跟蹤器32接收來自指令/數據地址斷點電路31或處理器總線斷點電路33的觸發請求。跟蹤器32接收DCR寄存器的TM位和調試允許信號DBGE*。若DBGE*信號被設置為低電位,它表示調試器60有效。
跟蹤器32在正常方式下,把處理器內核20提供的程序計數器跟蹤信息轉換成一位的程序計數輸出TPC和一個三位狀態信號PCST〔2:0〕,供調試器60使用。
下面說明信號PCST〔2:0〕和TPCa)PCST〔2:0〕指令的執行狀態由信號PCST〔2:0〕以每個時鐘一位的速度傳送(0低,1高)。
111流水線失速狀態(STL)
該狀態說明當沒有跟蹤觸發請求時,則指令的執行尚未完成。
110轉移/跳轉進入狀態(JMP)(用程序計數器輸出)該狀態表示執行了進入轉移或跳轉指令,且目標地址將由信號TPC傳送。
101轉移/跳轉進入狀態(BRT)(沒有程序計數器輸出)該狀態表明執行了進入轉移或直接跳轉指令,但信號TPC不傳送目標地址。
100異常狀態(EXP)(異常向量碼輸出)該狀態表示出現了一個異常,異常處理的向量碼將由信號TPC傳送。
011順序執行狀態(SEQ)(指令執行)該狀態表示在JMP,BRT或TSQ狀態下執行指令。當轉移指令沒有進入時也建立這一狀態。
010流水線失速中的跟蹤觸發器輸出狀態(TST)該狀態表明地址跟蹤觸發器或處理器總線跟蹤觸發器在指令仍在執行中的一個時鐘周期發生了請求。
000調試方式(DBM)在正常方式下不能達到該狀態。
信號TPC用來提供轉移或跳轉指令的目標地址。在信號PCST〔2:0〕指明狀態″110″(JMP)的時鐘周期里,目標地址從低位A〔2〕開始以每個時鐘周期一位的速度傳送。在信號PCST〔2:0〕指明狀態″100″(EXP)的時鐘周期時,一個三位的異常向量從低位開始按代碼(0),代碼(1),代碼(2)的順序以每個時鐘一位的速度傳送。異常向量地址和三位代碼如下所示
向量地址代碼(2:0)ReSet,Nmi BFC0-0000 4(100)UTLB(BEV=0)8000-0000 0(000)UTLB(BEV=1)BFC0-0100 6(110)其它(BEV=0)8000-0080 1(001)其它(BEV=1)BFC0-0180 7(111)由于目標地址由信號TPC一位一位地按順序發送,在當前轉移/跳轉指令正由TPC信號傳送時,可能發生下一條轉移指令,跳轉指令或異常,TPC信號傳送的目標地址的優先權如下a)當傳送目標程序計數器信號時,產生了一個新的間接跳轉指令,則停止當前的目標程序計數器信號,開始新的間接跳轉指令的目標程序計數器信號。
b)當傳送目標程序計數器信號時發生了異常,則掛起目標程序計數器信號,傳送三位的異常向量碼,然后灰復被掛起的信號。
c)當傳送目標程序計數器信號時發生了新的直接跳轉或轉移指令,不傳送直接跳轉或轉移指令的目標地址。只有當不傳送目標程序計數器信號時,才能傳送直接跳轉或轉移指令的目標程序計數器信號。
下面結合圖示介紹程序計數器跟蹤輸出的示例。
(例1)轉移指令的程序計數器跟蹤。
圖30是用于轉移指令程序計數器跟蹤信號的示例。
當第一個進入的轉移指令″beq″執行時,輸出信號TPC沒有傳送目標程序計數器信號,信號PCST〔2:0〕指明狀態TMP,信號TPC開始為指令″beq″傳送目標程序計數器信號,作為對非進入轉移指令″bne″的響應,信號PCST〔2:0〕指明狀態碼SEQ,作為對再次進入轉移指令″bne″的響應信號TPC并不傳送目標程序計數器信號,因為信TPC正為第一條轉移指令″beq″傳送目標程序計數器信號。這時,信號PCST〔2:0〕指明狀態為BRT。
(例2)間接跳轉指令的程序計數器跟蹤。
圖31是用于間接跳轉指令的程序計數器跟蹤信號示例。
作為對第一條間接跳轉指令″jr1″的響應,信號PCST〔2:0〕指明狀態為JMP,信號TPC開始傳送目標程序計數器信號。作為對非進入轉移指令″bne″的響應,信號PCST〔2:0〕指明狀態為SEQ,作為對第二條間接轉移指令″jr2″的響應,信號TPC停止傳送第一條間接跳轉指令″jr1″的目標程序計數器信號,開始為第二條指令″jr2″傳送目標程序計器信號。這時,信號PCST〔2:0〕指明狀態為JMP。
(例3)異常和間接跳轉指令的程序計數器跟蹤。
圖32是異常和間接跳轉指令的程序計數器跟蹤示例。
作為對軟件斷點指令″break″的響應,產生一個異常,信號PCST〔2:0〕指明狀態為EXP,這時,信號TPC開始傳送異常向量代碼,在非進入轉移指令″bne″,信號PCST〔2:0〕指明狀態SEQ,在間接跳轉指令″jr2″,信號TPC傳送用于″jr2″指令的目標程序計數器信號,該信號PCST〔2:0〕指明狀態JMP。
下面介紹信號PCST〔2:0〕的跟蹤觸發狀態TSQ或TST。
當地址和數據在同一總線周期出現時,發生一個指令/數據地址斷點或處理器總線斷點,產生一個表示狀態TSQ或TST的信號PCST〔2:0〕。
當指令地址跟蹤觸發請求、數據地址跟蹤觸發請求或處理器總線跟蹤觸發請求產生時,信號PCST〔2:0〕指明狀態為TSQ或TST。若信號PCST〔2:0〕可能在將要表明狀態SEQ或STL的時鐘周期里指明狀態TSQ或TST。
a)指令/數據地址跟蹤觸發發生時,信號PCST〔2:0〕指明狀態為TSQ。若跟蹤觸發由進入轉移指令、跳轉指令或不使信號PCST〔2:0〕指明狀態SEQ的指令產生時,跟蹤觸發的輸出將被推遲。若沒有跟蹤觸發請求,信號PCST〔2:0〕在即將表示狀態SEQ或STL的時鐘周期里,表示狀態TSQ或TST。
(例1)指令/數據地址跟蹤觸發示例。
圖33是指令/數據地址跟蹤觸發的示例。
作為對產生指令跟蹤觸發或數據地址跟蹤觸發或數據地址跟蹤觸發的指令″add″的響應,信號PCST〔2:0〕指明狀態TSQ。
(例2)由異常引起的指令/數據地址觸發的示例。
圖34是由異常引起的指令/數據地址觸發的示例。
如果軟件斷點″break″產生時了指令地址跟蹤觸發或數據地址跟蹤觸發,信號PCST〔2:0〕指明狀態EXP,在下一個時鐘周期,指明用于流水線失速的跟蹤觸發狀態TST。
(例3)由間接跳轉指令引起的指令/數據地址跟蹤觸發的示例。
當間接跳轉指令″jr2″引起指令地址跟蹤觸發或數據地址跟蹤觸發時,信號PCST〔2:0〕指明狀態為JMP。在下一個時鐘周期里,指明用于指令執行條件的跟蹤觸發狀態TSQ。
b)處理器總線跟蹤觸發當發生一個處理器總線跟蹤觸發請求時,信號PCST〔2:0〕指明狀態TSQ或TST。若信號PCST〔2:0〕正指明狀態JMP、BRT或EXP時,跟蹤觸發狀態TSQ或TST將被推遲,若沒有跟蹤觸發請求時,信號PCST〔2:0〕將在本應指明狀態SEQ或STL的下一個時鐘周期里指明狀態為TSQ或TST。
下面介紹調試方式狀態DBM的產生若處理器內核20引起一個調試異常或調試復位,則設置高電平的調試方式信號DM進入調試方式。然后,跟蹤器32提供信號PCST〔2:0〕表明調試方式狀態DBM。
圖36是當調試異常出現時,信號PCST〔2:0〕的輸出時間圖。
當沒有提供目標程序計數器信號時,在引起調試異常的指令結束后,立即啟動調試方式,提供出調試異常發生前的程序計數器跟蹤信息。
圖37是當調試異常發生時,傳送目標程序計數器信號的PCST〔2:0〕的時序。
在這種情況下,在目標程序計數器信號結束后,啟動調試方式,提供出直到調試異常即將發生前的指令的程序計數器跟蹤信息。當目標程序計數器信號傳送的同時,信號PCST〔2:0〕指明狀態為STL。
圖38是從調試方式返回時信號PCST〔2:0〕的時序。
調試方式一直持續到由調試異常或調試方式發送的返回指令DERET的轉移延遲間隙指令出現為止。正常方式從DERET指令的一條目標指令開始,啟動程序計數器跟蹤。
回到圖29,解釋跟蹤器32。
跟蹤器32有一個程序計數器跟蹤控制器321,一個目標程序計數移位寄存器322,一個異常向量編碼器323,一個異常編碼移位寄存器324和一個選擇器325。
控制器321還有一個異常編碼輸出狀態位326和一個目標程序計數器輸出計數器329。
下面說明跟蹤器321的操作。
表3是當寄存器DCR的TM位為0時,信號PCST〔2:0〕的輸出。在表3中,″1″表示有效狀態,″X″表示″無關″狀態。
表3
在該表中,觸發請求信號是指令地址跟蹤觸發請求信號,數據地址跟蹤觸發請求信號和處理器總線跟蹤觸發請求信號的″或″。
當五位的計數器327非0時,它表示正在傳送信號TPC。當異常代碼輸出狀態位326為1時,傳送異常量時代碼。在表3中,當計數器327非0或異常代碼輸出狀態位326為1時,則內部狀態″輸出TPC或異常代碼″為1。計數器327以如下方式更新
(1)當信號TPC不傳送目標程序計數器信號,或者新的程序計數器信號將被傳送時,計數器327被請零。
(2)當信號TPC正傳送異常向量,內部狀態指明正在傳送程序計器信號時,計數器327保持不變。
(3)當計數器327達到30時將被清零。表明目標程序計數器輸出完成。
(4)除(1)、(2)、(3)的其它情況下,計數器327自增加1。此時,信號TPC正在傳送目標程序計數器信號。
當異常發生時,在三個時鐘周期內,異常代碼輸出狀態位326設置一個表示正在傳送異常代碼的內部狀態。設置狀態位326后,異常代碼移位信號和異常代碼輸出開關信號也被設置。當信號PCST〔2:0〕指明狀態EXP時,異常代碼裝入信號被設置。此時,異常向量編碼器323的輸出裝入到異常代碼移位寄存器324中,設置目標程序計數器裝入信號,信號PCST〔2:0〕指明狀態JMP。然后,目標程序計數器的值裝入到目標程序計數器移位寄存器322中。當計數器327非0,且狀態位326未設置時,則目標程序計數器移位信號被設置。
當DCR寄存器的TM位為1時,程序計數器跟蹤徹底結束。若信號DBGE*置,則TM位置位,而且在傳送用于間接跳轉指令的目標程序計數器信號時,發生了下一條間接跳轉指令,則控制器321設置流水線失速請求信號,以停止處理器內核20的流水線處理。當前的目標程序計數器傳送結束后,流水線失速信號取消并灰復流水線操作。
表4是TM位為1時,信號PCST〔2:0〕的輸出。在表4中,″1″表示有效狀態,″X″表示″無關″狀態。
表4
在傳送目標程序計數器信號時,或異常代碼過程中,由于執行間接跳轉指令而使間接跳轉信號有效時,對處理器內核20的流水線失效請求被激活。指明目標程序計數器信號或異常代碼正在傳送的內部狀態,在目標程序計數器信號開始后的30個時鐘周期里為激活態。
當控制器321的目標程序計數器裝入信號被設置時,目標程序計數器移位寄存器322裝入目標程序計數器的輸出值。當控制器321的目標程序計數器移位信號被設置時,寄存器322把它的值每次一位地從MSB移向LSB。
異常向量編碼器323,根據向量地址的位A〔29〕,A〔8〕和A〔7〕編碼出的異常向量地址。如下所示
編碼器323把目標程序計數器輸出的地址位A〔29〕,A〔8〕和A〔7〕傳送到異常代碼移位寄存器324中。
當控制器321的異常代碼裝入信號設置時,寄存器從編碼器323中裝入異常向量代碼,當控制器321的異常代碼移位信號設置時,異常代碼移位寄存器324中的值一位一位地從MSB移向LSB。
當控制器321異常代碼輸出開關信號置位時,選擇器325向信號TPC提供寄存器324的LSB。當異常代碼輸出開關信號取消時,選擇器325向信號TPC提供寄存器322的LSB。
將用參考時間圖解釋跟蹤器32的操作。
圖39是當提供了一個目標程序計數器信號時,跟蹤器32的操作。
當計數器327保持″0″并且一個間接跳轉信號,或直接跳轉信號,或進入轉移信號被設置時,則控制器321設置目標程序計數器裝入信號。
在下一個時鐘,LSB,即被裝入到寄存器322的目標地址A〔2〕被送給信號TPC。同時,信號PCST〔2:0〕指示狀態JMP,控制器321設置目標程序計數器移位信號,結果,寄存器322由MSB向LSB移一位且在下一時鐘A〔3〕位提供給信號TPC。目標程序計數器移位信號不斷地設置,把程序計數器的輸出提供給信號TPC,直到計數器327計數到30為止。當計數器327計滿30時,被清0,并且目標程序計數器移位信號被取消,結束目標程序計數器對信號TPC的輸出。
圖40是當下一個間接跳轉出現,同時目標程序計數器信號被提供時,跟蹤器322的操作。
當第二個間接跳轉出現時,計數器327被清0,目標程序計數器裝入信號被設置。在下一個時種,則LSB,即被裝入到寄存器322的目標地址A〔2〕位被送往信號TPC。同時,信號PCST〔2:0〕指示狀態JMP,且控制器321設置目標程序計數器移位信號。從下一個時鐘起,每個周期目標地址都傳送給信號TPC。
圖41是在提供了目標程序計數器信號,出現異常時的操作時間圖。
當一個目標程序計數器信號正在傳送時,異常出現信號被設置,則異常代碼裝入信號也被設置,把異常代碼裝入到異常代碼移位寄存器324中,從下一個時鐘起,異常代碼輸出狀態位326、異常代碼移位信號和異常代碼輸出開關信號被設置,用三個時鐘周期傳送異常代碼。在此期間,目標程序計數器移位信號無效。當狀態位326和異常代碼開關信號取消時,信號TPC重新傳送目標程序計數器信號。
圖42是外部接口電路36的詳圖。
外部接口電路36有一個DBM代碼測試器361,選擇器362和363,屏蔽電路364,365和366,輸出緩沖器367A367B和367C,上拉電阻輸入緩沖器368A、368B和368C以及輸入緩沖器369A和369B。
當信號PCST〔2:0〕指明調試方式狀態DBM(000),則DBM代碼測試器361設置一個輸出信號。
當DBM代碼測試器361的輸出被設置,即它是調試方式時,則選擇器362提供分頻時鐘信號CLK2。當DBM代碼測試器361輸出無效時,即它是正常方式時,則選擇器362提供內核時鐘CLK。
當DBM代碼測試器361的輸出被設置,即它是調試方式,則選擇器363提供串行監控總線34的輸出SDAD;當DBM代碼測試器361輸出無效時,即它是正常方式,則選擇器363提供跟蹤器32的信號TPC。
在調試方式下,屏蔽電路364屏蔽外部輸入信號DINT*/SDI,使得輸入到處理機內核20的信號KINT*總是無效。
當寄存器DCR的MINT位為0時,屏蔽電路365對處理機內核20置位信號Int〔5:0〕,得以屏蔽中斷。
當寄存器DCR的MRST位是0時,在調試異常處理器執行期間(信號DM為高),則屏蔽電路366屏蔽用戶復位信號RESET*。
輸出緩沖器367A向外提供選擇器362的輸出作為信號DCLK;輸出緩沖器367B向外提供選擇器363的輸出作為信號TPC/SDAD;輸出緩沖器367C向外提供跟蹤器32的信號PCST〔2:0〕作為外部信號PCST〔2:0〕。
上拉電阻輸入緩沖器368A接收外部信號DINT*/SDI,由于該緩沖器有上拉電阻,所以,當外部信號DINT*/SDI斷開時,則輸出總是高電平。上拉電阻輸入緩沖器368B接收外部信號DBGE*,由于該緩沖器有上拉電阻,所以,若外部信號DBGE*斷開時,同輸出總是高電平。上拉電阻輸入緩沖器368C接收外部信號DRESET*,由于該緩沖器有上拉電阻,所以,當外部信號DRESET*斷開時,則輸出總是高電平。
當調試器60斷開時,則外部信號DINT*/SDI,DBGE*和DRESET*也斷開,然后,這些信號成為高電平內部信號,因而,調試方式的功能被禁止。
輸入緩沖器369A接收外部中斷信號INT〔5:0〕*,輸入緩沖器369B接收外部用戶復位信號RESET*。
圖44示出根據本發明的另一實施例的微處理器和調試系統。
這個實施例的特征在于微處理器10與存貯器90和外圍電路100結合在一起,這個實施例的其它安排則與第一實施例相同。
處理機內核20通過內部處理器總線80讀存貯器90的程序,執行讀程序,從存貯器90讀數據或把數據寫入存儲器,并訪問外圍電路100。在調試方式時,處理機內核20通過調試模塊30執行調試器60的監控程序。
如果調試模塊30和調試器60的功能和接口信號的定時彼此相同,則第一實施例的調試器60將被用于第二實施例,而不必考慮聯合存貯器90和外圍電路100的差異。
如果第二實施例的微處理機內核20的功能與第一實施例的相同,則與第一實施例相同的監控程序將用于第二實施例。
上述兩個實施例使用各自的指令/數據地址斷點通道和處理器總線斷點通道。本發明則不受這種安排的限制,可以使用兩個或多個通道。圖43示出涉及15個指令地址斷點通道的寄存器IBS。
上述兩個實施例使用各自的具有位寬一位的串行監控總線。本發明不受這種安排的限制。如果許多微處理器外部信號都用于串行監控總線,則位寬可以是兩倍或更多位。
上述兩個實施例使用各自的外部信號,用于傳送目標程序計數器的輸出。本發明不受這種安排的限制。目標程序計數器的輸出可由多個外部信號傳送(如果多個外部信號可以得到的話)。
根據上述的兩個實施例,時鐘發生器37對用于處理機內核的時鐘信號CLK二分頻。本發明則不受這個限制。串行監控總線電路的時鐘信號的頻率可以和時鐘信號的相同,或整數倍或倍數2的乘方。
如上所述,本發明能使調試器的硬件與許多功能共享,并減少了連接到調試器的信號的數量。而現有技術必須采用例如30個地址信號、4個字節允許信號、1個讀信號、1個寫信號、1個讀確認信號、1個寫確認信號、32個數據信號,總共70個信號將用戶目標系統連接到調試器。換言之,本發明只用8個信號將用戶目標程序系統連到調試器,從而使插針數量降到最低限度并降低成本。
根據本發明,一個用戶目標系統的微處理器訪問存貯器和I/O單元,為了為調試器定時提供方便的條件,與調試器無關的信號不受調試的影響。如果微處理器的運行速度太高,本發明能夠降低調試工具與微處理器之間的通信速度。
與圖2的現有技術相比,本發明把監控程序存放在調試器的存貯器中,而沒有使用用戶存貯器。為了啟動監控一個目標系統,本發明使用專用的調試異常和調試復位,而不限制用戶中斷。用戶目標系統無需具有用于調試的串行接口,本發明能使用硬件斷點。
與圖3的現有技術相比,本發明無需在微處理器上安裝定序器來簡化用于調試的邏輯電路。由于本發明使用監控程來訪問寄存器,所以只要修改監控程序便可訪問附加的寄存器。
總之,本發明提供了一個帶有調試功能的用戶目標系統的微處理器,從而減少了用于連接目標系統與調試器的信號。在調試過程中,本發明運行目標系統的微處理器,使得便于訪問目標系統的存貯器和輸入/輸出部件。
根據本發明,在正常方式下,當用戶程序運行時,調試工具和調試模塊中的寄存器是不可訪問的,使得調試工具的存貯器和寄存器決不會被用戶程序破壞,從而提高了系統的可靠性。
即使在調試方式啟動之后,本發明也禁止訪問調試工具和調試模塊的控制寄存器。當一個啟動調試方式的調試異常出現時,如果用戶程序對調試工具或調試模塊的控制寄存器的寫操作不完全,通過置位寄存器DCR的MP位來禁止寫操作,這就避免了用戶程序對調試工具的存貯器和寄存器的破壞,從而提高了調試系統的可靠性。
根據本發明在調試方式下,根據指令CTCO對調試工具的寫。
權利要求
1.一種微處理器,其特征在于,包括一個處理器內核,用以執行程序;一個中斷電路,用以在一個存取地址與一個設定的地址相符合時或在一個存取地址和數據與一個設定地址和數據相符合時,產生一個中斷請求或設置一個觸發請求信號送到所述的處理器內核;和一個程序計數器跟蹤器,用以提供一個外部狀態信號,用以指示在中斷電路設置同樣信號之后觸發請求信號已經發出。
2.根據權利要求1的微處理器,其特征在于,所述的程序計數器跟蹤器對所述的處理器內核的內部狀態編碼,提供一個外部狀態信號,用以指示編碼的內部狀態;當所述的處理器內核處于第一內部狀態并且觸發請求信號已設置時,所述的程序計數器跟蹤器提供一個外部狀態信號,用以指示沒有觸發請求的內部狀態,此時不考慮已設置的觸發請求信號;和當所述的處理器內核處于第二內部狀態并且觸發請求信號已設置時,所述的程序計數器跟蹤器提供一個外部狀態信號,用以指示有觸發請求。
3.根據權利要求1的微處理器,其特征在于,所述的第一內部狀態對應于正在執行一條跳轉指令或產生了一個異常,所述的第二內部狀態對應于正在順序地執行指令或引起了流水線失速。
全文摘要
本發明涉及一種微處理器,其特征在于,包括一個處理器內核,用以執行程序;一個中斷電路,用以在一個存取地址與一個設定的地址相符合時或在一個存取地址和數據與一個設定地址和數據相符合時,產生一個中斷請求或設置一個觸發請求信號送到所述的處理器內核;和一個程序計數器跟蹤器,用以提供一個外部狀態信號,用以指示在中斷電路設置同樣信號之后觸發請求信號已經發出。
文檔編號G06F11/36GK1540518SQ20041003867
公開日2004年10月27日 申請日期1995年12月28日 優先權日1994年12月28日
發明者宮森高, 矢野達男, 男 申請人:株式會社東芝, 安捷倫技術有限公司