專利名稱:用于數(shù)據(jù)處理系統(tǒng)的調(diào)試指令的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及數(shù)據(jù)處理系統(tǒng),并且更具體地,涉及用于數(shù)據(jù)處理系統(tǒng)中的調(diào)試指令。
背景技術(shù):
通常在軟件開發(fā)過程中使用調(diào)試指令以便允許執(zhí)行調(diào)試操作。一旦開發(fā)了軟件并 且用調(diào)試指令進(jìn)行了檢查,則這些調(diào)試指令被去除,以便不會引起軟件應(yīng)用中不希望的異 常。然而,這些調(diào)試指令的去除可能改變系統(tǒng)的執(zhí)行特性,這可能導(dǎo)致可預(yù)測性差的執(zhí)行。 在實時應(yīng)用中這尤其有問題。
以示例方式說明本發(fā)明,并且本發(fā)明不限于這些附圖,其中類似的參考號指示類 似的元件。出于簡化和清楚的目的示出圖中的元件,并且這些元件不必然是按比例繪制的。圖1是根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)處理系統(tǒng)的方框圖;圖2是根據(jù)本發(fā)明的一個實施例的與圖1的數(shù)據(jù)處理系統(tǒng)相關(guān)聯(lián)的處理器的方框 圖;圖3是示出了與圖1的數(shù)據(jù)處理系統(tǒng)相關(guān)聯(lián)的示例調(diào)試寄存器的圖;圖4是示出了與圖1的數(shù)據(jù)處理系統(tǒng)相關(guān)聯(lián)的示例外部調(diào)試寄存器的圖;圖5和圖6是示出了能夠由圖2的處理器執(zhí)行的示例調(diào)試指令的圖;圖7是根據(jù)本發(fā)明的一個實施例的與圖3的調(diào)試寄存器相關(guān)聯(lián)的調(diào)試控制寄存器 的圖;圖8以表格形式示出了根據(jù)本發(fā)明的一個實施例的圖7的調(diào)試控制寄存器的一部 分的功能;圖9是根據(jù)本發(fā)明的一個實施例的與圖4的外部調(diào)試寄存器相關(guān)聯(lián)的外部調(diào)試控 制寄存器的圖;圖10以表格形式示出了根據(jù)本發(fā)明的一個實施例的圖9的外部調(diào)試控制寄存器 的一部分的功能;圖11示出了用于例示根據(jù)本發(fā)明的一個實施例圖2的處理器的一部分控制電路 的方框圖;和圖12和13是使用圖5和6的調(diào)試指令的示例代碼段的圖。
具體實施例方式當(dāng)前的調(diào)試指令提供了在軟件開發(fā)處理過程中在軟件控制下有條件地進(jìn)入調(diào)試 暫停模式(即,調(diào)試模式)或引發(fā)軟件調(diào)試異常(即,調(diào)試中斷)的能力,以便允許進(jìn)行軟 件或硬件調(diào)試操作。然而,一旦完成了軟件開發(fā),仍然嵌入最終代碼中的這些調(diào)試指令將導(dǎo) 致不希望的異常,并且因此必須被去除。然而,這些調(diào)試指令的去除改變了系統(tǒng)的執(zhí)行特性。即,由于在去除調(diào)試指令之后,分支目標(biāo)、頁邊界和其它指令關(guān)系可能發(fā)生改變,代碼圖 像(code image)自身可能會改變。為了允許代碼圖像自身保持不變,并且因此可以提供更 可預(yù)測的執(zhí)行,此處討論的一個實施例提供了允許調(diào)試指令作為“無操作”指令(也被稱為 無操作指令或NOP)操作或被抑制執(zhí)行的附加控制。這允許在任意調(diào)試指令可被視為NOP 的情況下、在NOP可以如本領(lǐng)域已知那樣操作的情況下、或在可以抑制調(diào)試指令的執(zhí)行的 情況下,在應(yīng)用執(zhí)行過程中將調(diào)試指令保持在原位,其中在該應(yīng)用執(zhí)行過程中不執(zhí)行調(diào)試, 從而即使這些指令具有與調(diào)試有關(guān)的執(zhí)行語義也不執(zhí)行調(diào)試操作。另外,在一個實施例中,一種類別的調(diào)試指令允許將調(diào)試指令分組到獨(dú)立的組中, 其中每個組對執(zhí)行后將會發(fā)生的動作具有獨(dú)立的控制,從而提供了附加的調(diào)試靈活性。可 以獨(dú)立地控制這些組,并且可以由硬件或軟件調(diào)試器動態(tài)地修改所發(fā)生的動作。如此處使用的,術(shù)語“總線”用于指可用于傳輸諸如數(shù)據(jù)、地址、控制或狀態(tài)的一種 或更多種類型的信息的多個信號或?qū)Ь€??梢园凑諉蝹€導(dǎo)線、多個導(dǎo)線、單向?qū)Ь€或雙向?qū)?線示出或描述此處討論的導(dǎo)線。然而,不同的實施例可以改變導(dǎo)線的實現(xiàn)。例如,可以使用 分離的單向?qū)Ь€而不是雙向?qū)Ь€,反之亦然。另外,可以用串行或以時間復(fù)用方式傳輸多個 信號的單個導(dǎo)線取代多個導(dǎo)線。類似地,承載多個信號的單個導(dǎo)線可被分為承載這些信號 的子集的各種不同導(dǎo)線。因此,存在用于傳輸信號的許多選擇。當(dāng)涉及信號、狀態(tài)位或類似裝置分別被置于其邏輯真或邏輯假狀態(tài)時,此處使用 術(shù)語“斷言”或“設(shè)置”和“求反”(或“解除斷言”或“清除”)。如果邏輯真狀態(tài)是邏輯電平 1,則邏輯假狀態(tài)是邏輯電平0。并且如果邏輯真狀態(tài)是邏輯電平0,則邏輯假狀態(tài)是邏輯電 平1。此處描述的每個信號可被指定為正邏輯或負(fù)邏輯,其中可以用信號名稱上的橫條 或名稱后的星號(* )指示負(fù)邏輯。在負(fù)邏輯信號的情況下,該信號是低電平有效的,其中 邏輯真狀態(tài)相應(yīng)于邏輯電平0。在正邏輯信號的情況下,該信號是高電平有效的,其中邏輯 真狀態(tài)相應(yīng)于邏輯電平1。注意,此處描述的任意信號可被指定為負(fù)邏輯信號或正邏輯信 號。因此,在替換實施例中,被描述為正邏輯信號的那些信號可被以負(fù)邏輯信號實現(xiàn),并且 被描述為負(fù)邏輯信號的那些信號可被以正邏輯信號實現(xiàn)。此處使用括號指示總線的導(dǎo)線或值的位位置。例如,“總線60[7:0]”或“總線60 的導(dǎo)線[7:0] ”指示總線60的8個低位導(dǎo)線,并且“地址位[7:0] ”或“ADDRESS[7:0] ”指示 地址值的8個低位的位。在數(shù)字之前的符號“$”指示該數(shù)字被以十六進(jìn)制或基于16的形 式表示。在數(shù)字之前的符號“% ”指示該數(shù)字被以二進(jìn)制或基于2的形式表示。圖1示出了符合本發(fā)明的實施例的數(shù)據(jù)處理系統(tǒng)10。數(shù)據(jù)處理系統(tǒng)10可以是芯 片級系統(tǒng)。數(shù)據(jù)處理系統(tǒng)10可被實現(xiàn)在單個集成電路上或多個集成電路上。數(shù)據(jù)處理系 統(tǒng)10包括可被通過總線20連接的處理器12、外部調(diào)試電路14、I/O模塊16和存儲器18。 在替換實施例中,存儲器18可以是任意類型的存儲器,并且可以位于與處理器12相同的集 成電路上,或位于與處理器12不同的集成電路上。存儲器18可以是任意類型的存儲器,諸 如例如,只讀存儲器(ROM)、隨機(jī)訪問存儲器(RAM)、非易失存儲器(例如,閃存)等。另外, 存儲器18可以是位于另一個外設(shè)或從屬設(shè)備內(nèi)或不同集成電路上的存儲器或其它數(shù)據(jù)存 儲設(shè)備。外部調(diào)試電路14可被包含在與處理器12相同的集成電路上,或被實現(xiàn)為獨(dú)立于 包含處理器12的集成電路或芯片級系統(tǒng)的單獨(dú)系統(tǒng)。
圖2是與圖1的數(shù)據(jù)處理系統(tǒng)10相關(guān)聯(lián)的處理器12的方框圖。處理器12可以 包括指令管線22、執(zhí)行單元24、取指令單元26、控制電路28、通用寄存器30、加載/存儲 單元32、總線接口單元(BIU)34和內(nèi)部調(diào)試電路40。處理器12可以通過連接到BIU34的 總線20與數(shù)據(jù)處理系統(tǒng)10的其它組件通信。內(nèi)部調(diào)試電路40可被通過圖2所示的調(diào)試 端口連接到外部調(diào)試單元,諸如,符合IEEE IST0-5001的Nexus 調(diào)試單元。外部調(diào)試單 元可以包括圖1的外部調(diào)試電路14的全部或一部分。Nexus 是位于德克薩斯奧斯汀的 FreescaleSemiconductor公司的商標(biāo)。調(diào)試端口可以是串行接口,諸如JTAG,或可被實現(xiàn) 為并行端口、串行和并行端口的組合,或被實現(xiàn)為以太網(wǎng)端口。內(nèi)部調(diào)試電路40可以包括 調(diào)試寄存器42和調(diào)試控制電路44。調(diào)試寄存器42可以包括為分組為字段的位,這些字段 用于控制各種與調(diào)試有關(guān)的事件,包括指令斷點、數(shù)據(jù)斷點、檢查點以及與調(diào)試相關(guān)聯(lián)的其 它消息通信。可以在處理器12和外部調(diào)試電路14之間共享這些調(diào)試資源?,F(xiàn)在參考圖3,還可以規(guī)定調(diào)試寄存器42中的寄存器存儲一個或更多個地址比較 值、地址范圍和數(shù)據(jù)匹配值,以便實現(xiàn)指令和/或數(shù)據(jù)訪問斷點和檢查點事件和其它調(diào)試 控制準(zhǔn)則。這些地址和數(shù)據(jù)值以及各種控制準(zhǔn)則被用于確定何時處理器12出于產(chǎn)生斷點 或檢查點事件的目的而訪問一個或更多個預(yù)定指令地址或數(shù)據(jù)地址,當(dāng)內(nèi)部調(diào)試模式被使 能時,這可以引起處理器12開始調(diào)試異常的異常處理,或引起處理器12進(jìn)入調(diào)試暫停模 式,其中當(dāng)外部調(diào)試模式被使能時,處理器12對通過內(nèi)部調(diào)試電路40的調(diào)試端口由外部調(diào) 試電路14提供的命令做出響應(yīng)。作為例子,調(diào)試寄存器42可以包括各種調(diào)試控制寄存器, 包括調(diào)試寄存器43 (DBCR0、DBCR1、DBCR2、DBCR3和DBCR4)。這些調(diào)試控制寄存器可用于存 儲各類調(diào)試配置信息。調(diào)試寄存器42還可以包括指令地址比較寄存器45 (IAC1和IAC2)。 指令地址比較寄存器45可以為地址比較目的而存儲指令地址。調(diào)試寄存器42還可以包括 數(shù)據(jù)地址比較寄存器47 (DAC1和DAC2)。數(shù)據(jù)地址比較寄存器47可以為地址比較目的而存 儲數(shù)據(jù)訪問地址。調(diào)試寄存器42還可以包括調(diào)試狀態(tài)寄存器49、調(diào)試計數(shù)器51 (DBCNT1和 DBCNT2)和數(shù)據(jù)值比較寄存器53(DVC1和DVC2)。調(diào)試寄存器42可以是用戶軟件編程模型 的一部分。調(diào)試計數(shù)器51可被配置為在發(fā)生一個或更多個可以計數(shù)的事件時進(jìn)行倒計數(shù)。 當(dāng)計數(shù)值達(dá)到0時,可以發(fā)送信號表示調(diào)試計數(shù)事件,并且如果被使能,則可以產(chǎn)生調(diào)試中 斷。數(shù)據(jù)值比較寄存器53可以為數(shù)據(jù)比較目的而存儲數(shù)據(jù)值。在內(nèi)部調(diào)試模式下,由軟件管理這些寄存器資源,并且不需要使用外部調(diào)試電路。 軟件可以通過使用移動到專用寄存器指令和從專用寄存器指令移動的數(shù)據(jù)移動來配置寄 存器,專用寄存器指令是初始化各個調(diào)試寄存器以便執(zhí)行基于軟件的調(diào)試活動的軟件指 令,其中被使能的調(diào)試事件引起軟件調(diào)試中斷的發(fā)生。然后軟件中斷處理程序可以執(zhí)行由 數(shù)據(jù)處理系統(tǒng)10的軟件程序員確定的各種所希望的活動。在外部調(diào)試模式下,可將對調(diào)試寄存器42的共享調(diào)試寄存器的所有權(quán)分配給外 部調(diào)試電路14,并且當(dāng)配置的調(diào)試事件發(fā)生時,處理器12可以進(jìn)入暫停狀態(tài),并且等待將 由外部調(diào)試電路14提供的命令。當(dāng)外部調(diào)試模式被使能時,軟件不再具有對共享的調(diào)試資 源的控制。另外,如圖4所示,調(diào)試寄存器42可以包括各種外部調(diào)試控制寄存器50,諸如 EDBCRO和EDBCRl。與圖3的寄存器不同,圖4的寄存器,其可以位于調(diào)試寄存器42內(nèi)或在 處理器12內(nèi),不是用戶軟件編程模型的一部分。即,運(yùn)行在處理器12上的軟件看不到外部 調(diào)試控制寄存器50。外部調(diào)試電路14可以通過調(diào)試端口(如圖2所示)直接訪問共享的調(diào)試資源和任意專用的外部調(diào)試資源(諸如,外部調(diào)試控制寄存器50)。圖2的調(diào)試端口可 以,例如,被實現(xiàn)為JTAG TAP端口。在一個實施例中,調(diào)試寄存器42和外部調(diào)試控制寄存 器50可被映射為JTAG數(shù)據(jù)寄存器,其中用于各種JTAG指令的一個或更多個字段內(nèi)包含有 寄存器選擇編碼,JTAG指令規(guī)定了調(diào)試器通過JTAG IR和DR操作對寄存器的讀寫訪問。共享一組寄存器需要實現(xiàn)較少的處理器12資源,并且這可以為數(shù)據(jù)處理系統(tǒng)10 的用戶簡化編程模型。內(nèi)部調(diào)試電路40監(jiān)視處理器12內(nèi)的活動,并且可以響應(yīng)于基于當(dāng)前 調(diào)試寄存器42內(nèi)或處理器12內(nèi)存儲的調(diào)試配置信息檢測到一個或更多個預(yù)定狀態(tài),產(chǎn)生 一個或更多個數(shù)據(jù)斷點事件、指令斷點事件、指令執(zhí)行事件(諸如分支或陷阱捕獲事件)、 指令完成事件等。以這種操作方式,處理器12可以如同本領(lǐng)域的技術(shù)人員能夠理解那樣工 作。圖5和6示出了調(diào)試通知暫停指令的兩種形式。圖5示出了調(diào)試通知暫停(dnh) 指令,其中dnh指令的執(zhí)行如適當(dāng)?shù)恼{(diào)試控制寄存器(如果外部調(diào)試模式被使能,其可以是 EDBCRO,或如果外部調(diào)試模式未被使能,其可以是DBCR4,下面將對這兩者進(jìn)行討論)的預(yù) 定控制字段所指示那樣操作。圖6示出了允許對不同dnh2指令分組的不同類型的調(diào)試通 知暫停指令(dnh2指令)。即,dnh2指令包括指示組的字段。這種組標(biāo)識符將調(diào)試控制字 段(例如,組控制字段)與dnh2指令相關(guān)聯(lián)。例如,在圖6的所示實施例中,dnh2的組字段 是允許指示8個不同組(組0-7)中的一個的3位字段。dnh2指令的執(zhí)行如適當(dāng)?shù)恼{(diào)試控 制寄存器(如果外部調(diào)試模式被使能,其可以是EDBCR0,或如果外部調(diào)試模式未被使能,其 可以是DBCR4)的相應(yīng)組控制字段所指示那樣操作。在一個實施例中,如下面參考圖10所 述,外部調(diào)試控制寄存器50中的外部調(diào)試模式位字段用于指示處理器12是否操作于外部 調(diào)試模式下,其中外部調(diào)試器諸如外部調(diào)試電路14設(shè)置或清除這個字段,以便分別使得處 理器12操作于或不操作于外部調(diào)試模式下。在一個實施例中,當(dāng)處理器12不操作于外部 調(diào)試模式下時,認(rèn)為其操作于內(nèi)部調(diào)試模式下。注意,圖5和6所示的dnh和dnh2指令可以使用任意各種不同的格式,并且除了 操作碼(例如,dnh和dnh2指令的位0到5),子操作碼(例如,dnh和dnh2指令的位21到 31),和組標(biāo)識符(例如,dnh2指令的位18-20)之外,可以包括其它字段。例如,如圖5和6 所示,dnh和dnh2指令中的每一個還包括dui和duis字段。例如,如果處理器12被響應(yīng) dnh和dnh2指令暫停,dui字段可被發(fā)送到外部調(diào)試電路,以便標(biāo)識暫停原因。同樣,duis 字段可用于傳遞關(guān)于暫停的附加信息。圖7是與圖1的數(shù)據(jù)處理系統(tǒng)相關(guān)聯(lián)的調(diào)試控制寄存器DBCR4的圖??梢园―BCR4作為調(diào)試寄存器42的一部分,DBCR4可以位于內(nèi)部調(diào)試電路40內(nèi)。DBCR4可用于存 儲調(diào)試配置信息。雖然圖7示出了使用特定字段的本發(fā)明的具體實施例,但本發(fā)明的替換 實施例可以使用不同的字段,每個字段具有不同數(shù)目的位。僅出于說明的目的示出圖7所 示的特定字段。作為例子,DBCR4可以包括32個位。DBCR4可以包括各種字段,包括2位 組字段,諸如 GRP7C、GRP6C、GRP5C、GRP4C、GRP3C、GRP2C、GRPlC 和 GRPOCo 這些字段僅是例 子,并且DBCR4可以包括更少或附加字段。另外,這些字段可被不同地排列。DBCR4還可以 包括可以在將來使用的保留位字段0到15。作為例子,DBCR4可以是可讀/可寫寄存器,它 們可以是用戶軟件編程模型的一部分。在本發(fā)明的替換實施例中,DBCR4可以不是用戶軟 件編程模型中的控制寄存器,而是可以被實現(xiàn)在用戶軟件編程模型之外??梢允褂萌我忸愋偷拇鎯﹄娐穼崿F(xiàn)DBCR4。可替換地,一個或更多個其它調(diào)試控制寄存器(諸如在調(diào)試寄存 器42內(nèi))可以包括DBCR4的組字段而不是DBCR4。當(dāng)處理器12操作于內(nèi)部調(diào)試模式下時,DBCR4的組字段GRP1C-GRP7C中的每個可用于配置具有指示相應(yīng)組的組標(biāo)識符的dnh2指令的功能。例如,當(dāng)在內(nèi)部調(diào)試模式下時, 由GRP3C控制指示組3的dnh2指令的操作。另外,當(dāng)在內(nèi)部調(diào)試模式下時,可以使用GRPOC 來配置指示組0的這些dnh2指令和dnh指令兩者的功能。即,在一個實施例中,用于指示 dnh指令在內(nèi)部調(diào)試模式下如何操作的DBCR4的預(yù)定控制字段是GRP0C。在這個例子中,任 意dnh指令默認(rèn)指示組0(由于與dnh2指令不同,dnh指令本身中沒有用于指示特定的組 的字段)??商鎿Q地,用于指示dnh指令如何操作的DBCR4的預(yù)定控制字段可以是GRPOC到 GRP7C中的任意一個。圖8以表格形式示出了圖7的DBCR4的一部分的功能。根據(jù)一個實施例,GRP7C是 用于指示組7的dnh2指令(即,指示組7的dnh2指令)應(yīng)當(dāng)如何操作的2位字段。例如, 00的二進(jìn)制值可以指示組7的dnh2指令產(chǎn)生調(diào)試指令異常(其因此可以引起調(diào)試中斷處 理被啟動)。調(diào)試指令異常導(dǎo)致軟件中斷,并且因此作為dnh2指令(或dnh指令)的結(jié)果 產(chǎn)生的調(diào)試指令異常也可被稱為軟件調(diào)試中斷。01的二進(jìn)制值可以指示組7的dnh2指令 被視為NOP(其中如本領(lǐng)域已知的,NOP可以各種方式操作或被以各種方式實現(xiàn))。在示出 的實施例中,10和11的二進(jìn)制值保留用于將來可能的用途。在替換實施例中,GRP7C的單 個位可用于指示組7的dnh2指令產(chǎn)生軟件中斷還是被視為NOP。GRP6C到GRPlC也是2位 字段,除了 dnh2指令的相應(yīng)組之外,它們的描述與為GRP7C提供的描述相同。在一個實施 例中,GRPOC是2位字段,它用于指示dnh和組0的dnh2指令應(yīng)當(dāng)如何操作。例如,00的二 進(jìn)制值可以指示組0的dnh2指令和所有的dnh指令產(chǎn)生調(diào)試指令異常(即,軟件中斷)。 01的二進(jìn)制值可以指示組0的dnh2指令和所有的dnh指令被視為NOP。在示出的實施例 中,10和11的二進(jìn)制值保留用于將來可能的用途。在替換實施例中,GRPOC的單個位可用 于指示dnh指令和組0的dnh2指令產(chǎn)生軟件中斷還是被視為NOP。在一個實施例中,不是 作為NOP執(zhí)行dnh或dnh2指令,可以抑制這些指令的指令執(zhí)行,從而使它們不表現(xiàn)為將執(zhí) 行,即使它們可被取回并且被部分解碼。圖9是根據(jù)一個實施例,與圖1的數(shù)據(jù)處理系統(tǒng)相關(guān)聯(lián)的外部調(diào)試控制寄存器 EDBCRO的圖??梢园‥DBCRO作為外部調(diào)試控制寄存器50的一部分,外部調(diào)試控制寄存 器50可以是內(nèi)部調(diào)試電路40內(nèi)的調(diào)試寄存器42的一部分或不是調(diào)試寄存器42的一部分, 但是不能被運(yùn)行在處理器12上的軟件訪問。EDBCRO可用于存儲在外部調(diào)試模式下使用的 調(diào)試配置信息。雖然圖9示出了使用特定字段的本發(fā)明的具體實施例,但本發(fā)明的替換實 施例可以使用不同的字段,其中每個字段具有不同數(shù)目的位。僅出于說明的目的而示出圖 9所示的特定字段。作為例子,EDBCRO可以包括32個位。EDBCRO可以包括各種字段,包括 EDM 位字段、DNH EN 位字段和 2 位組字段(諸如 GRP7C、GRP6C、GRP5C、GRP4C、GRP3C、GRP2C、 GRPlC和GRP0C)。這些字段僅是例子,并且EDBCRO可以包括更少或附加字段。另外,這些 字段可被不同地排列。EDBCRO還可以包括可以在將來使用的保留位字段2到15。作為例 子,EDBCRO可以是僅可由外部調(diào)試電路通過調(diào)試端口寫的寄存器,其中外部調(diào)試電路位于 處理器12之外,但是可以在與處理器12相同或不同的集成電路上。作為例子,EDBCRO不 是用戶軟件編程模型中的控制寄存器。可以使用位于處理器12之內(nèi)或之外的任意類型的存儲電路實現(xiàn)EDBCRO??商鎿Q地,一個或更多個其它外部調(diào)試控制寄存器(諸如,在外部調(diào) 試控制寄存器50之內(nèi))可以包括EDBCRO的一個或更多個字段而不是EDBCR0。
圖10以表格形式示出了根據(jù)一個實施例的圖9的EDBCRO的一部分的功能。EDM 是用于指示使能還是禁止外部調(diào)試模式的位字段。在一個實施例中,當(dāng)禁止外部調(diào)試模式 時,認(rèn)為使能內(nèi)部調(diào)試模式。(可替換地,可以使用,諸如例如,DBCRO內(nèi)的用于內(nèi)部調(diào)試模 式的不同的使能字段)。在一個實施例中,當(dāng)設(shè)置了 EDM字段時(例如,具有二進(jìn)制值1), 處理器12操作于外部調(diào)試模式下,并且當(dāng)EDM字段被清除時(例如,具有二進(jìn)制值0),處理 器12操作于內(nèi)部調(diào)試模式下。當(dāng)EDM位52被設(shè)置為1時,例如,控制寄存器(諸如DBCR4) 被置于外部調(diào)試電路14的排它控制之下,并且數(shù)據(jù)處理系統(tǒng)10軟件不能向這些控制寄存 器寫信息??商鎿Q地,當(dāng)EDM位52被設(shè)置為1時,軟件不能寫調(diào)試控制寄存器的特定部分。 DNH_EN是使能字段,它指示使用DBCR4的組字段還是EDBCRO的組字段指示dnh和dnh2指令 的操作。即,即使處理器12操作于外部調(diào)試模式,可以清除DNH_EN以便指示應(yīng)使用DBCR4 的組設(shè)置而不是EDBCRO來指示dnh和dnh2指令的操作(其中,在一個實施例中,DBCR4的 GRPOC設(shè)置將用于dnh指令,并且與由每個dnh2指令自身指示的組相對應(yīng)的DBCR4組設(shè)置 將用于dnh2指令)。然而,如果設(shè)置了 DNH_EN,則dnh和dnh2指令如EDBCRO的適當(dāng)組字 段所指示那樣操作。仍參考圖10,GRP7C是2位字段,它用于指示組7的dnh2指令(S卩,指示組7的 dnh2指令)應(yīng)如何操作。例如,00的二進(jìn)制值可以指示組7的dnh2指令被視為NOP(其中 如本領(lǐng)域已知的,NOP可以各種方式操作或被以各種方式實現(xiàn))。01的二進(jìn)制值可以指示 組7的dnh2指令將引起處理器暫停并且進(jìn)入調(diào)試模式。例如,在處理器暫停之后,控制被 從處理器12傳遞給外部調(diào)試器(諸如外部調(diào)試電路14),以便通過調(diào)試端口執(zhí)行調(diào)試操作 和訪問處理器12。因此,在進(jìn)入調(diào)試模式之后,取指令單元26可以暫停正常的指令獲取。 10的二進(jìn)制值可以指示組7的dnh2指令將引起以信號表示檢查點。11的二進(jìn)制值可以指 示組7的dnh2指令將引起處理器暫停并且進(jìn)入調(diào)試模式,并且還將引起以信號表示檢查 點。注意,在替換實施例中,可以使用不同的位值編碼表示組7的dnh指令的操作。GRP6C 到GRPlC也是2位字段,除了 dnh2指令的相應(yīng)組之外,它們的描述與為GRP7C提供的描述 相同。GRPOC是2位字段,用于指示dnh2和dnh指令應(yīng)當(dāng)如何操作。即,在一個實施例中, GRPOC是用于指示dnh指令如何操作的EDBCRO的預(yù)定控制字段。例如,00的二進(jìn)制值可以 指示組0的dnh2指令和所有的dnh指令被視為NOP。01的二進(jìn)制值可以指示組0的dnh2 指令和所有的dnh指令引起處理器暫停并且進(jìn)入調(diào)試模式。10的二進(jìn)制值可以指示組7的 dnh2指令和所有的dnh指令引起以信號表示檢查點。11的二進(jìn)制值可以指示組7的dnh2 指令和所有的dnh指令將引起處理器暫停,并且引起以信號表示檢查點。可替換地,用于指 示dnh指令如何操作的EDBCRO的預(yù)定控制字段可以是GRPOC到GRP7C中的任意一個。因此,當(dāng)在外部調(diào)試模式下并且設(shè)置了 DNH_EN時,EDBCRO的組字段GRP0C-GRP7C 中的每個可用于配置指示相應(yīng)組的那些dnh2指令的功能。例如,當(dāng)在外部調(diào)試模式下并且 設(shè)置了 DNH_EN時,由EDBCRO的GRP3C控制指示組3的dnh2指令的操作(注意,當(dāng)在外部 調(diào)試模式下并且清除了 DNH_EN時,由DBCR4的GRP3C控制指示組3的dnh2指令的操作)。 另外,當(dāng)在外部調(diào)試模式下并且設(shè)置了 DNH_EN時,EDBCRO的GRPOC可用于配置指示組0的 dnh2指令和dnh指令兩者的功能。即,在一個實施例中,用于指示在外部調(diào)試模式下當(dāng)設(shè)置了 DNH_EN時dnh指令如何操作的EDBCRO的預(yù)定控制字段是GRP0C。在這個例子中,任意dnh指令默認(rèn)指示組0(由于與dnh2指令不同,dnh指令本身中沒有用于指示特定的組的字 段)。然而,當(dāng)在外部調(diào)試模式下并且清除了 DNH_EN時,可以取而代之使用DBCR4的GRPOC 配置指示組0的dnh2指令和dnh指令兩者的功能。因此,注意用于指示在外部調(diào)試模式期 間dnh指令如何操作的預(yù)定控制字段可以依賴于DNH_EN,其中取決于DNH_EN的值,DBCR4 或EDBCRO的GRPOC設(shè)置可用做預(yù)定的控制字段。然而,在替換實施例中,可以不使用或可 以不存在DNH_EN。在這種實施例中,當(dāng)在外部調(diào)試模式下時,僅有EDBCRO (而不是DBCR4) 的適當(dāng)組字段指示如何操作dnh和dnh2指令。因此,注意dnh和dnh2指令中的每一個能夠執(zhí)行調(diào)試操作或被視為其中不執(zhí)行調(diào) 試操作的NOP。在一個實施例中,不是作為NOP執(zhí)行dnh或dnh2指令,可以抑制這些指令 的指令執(zhí)行,從而它們表現(xiàn)為不執(zhí)行(并且因此不執(zhí)行調(diào)試操作),即使它們可被取回并且 被部分解碼。如此處使用的,調(diào)試操作包括,諸如例如,引起處理器暫停并且進(jìn)入調(diào)試模式, 引起以信號表示檢查點,產(chǎn)生軟件調(diào)試中斷等。在一個實施例中,以信號表示檢查點允許處 理器12以信號表示處理器12之外或之內(nèi)的一個或更多個檢查點狀態(tài)的發(fā)生,而不是引起 斷點或調(diào)試暫停狀態(tài)。在上述的例子中,諸如引起處理器暫停并且進(jìn)入調(diào)試操作以及引起 以信號表示檢查點的調(diào)試操作發(fā)生在外部調(diào)試模式期間,而產(chǎn)生軟件調(diào)試中斷可以基于例 如DNH_EN發(fā)生在外部或內(nèi)部調(diào)試模式期間。可替換地,可以通過DBCR4和EDBCRO的組字 段定義內(nèi)部或外部調(diào)試模式的其它調(diào)試操作。然而,取決于適當(dāng)調(diào)試控制寄存器的組字段 的設(shè)置(諸如例如,DBCR4或EDBCR0),dnh或dnh2指令可被視為NOP (或可被抑制執(zhí)行), 而不是執(zhí)行調(diào)試操作。即,取決于適當(dāng)調(diào)試控制寄存器的組字段的設(shè)置,dnh或dnh2指令 可被作為dnh或dnh2指令執(zhí)行(并且從而執(zhí)行調(diào)試操作),或可被作為NOP執(zhí)行。如上面 討論的,NOP可以如本領(lǐng)域已知那樣執(zhí)行。然而,注意,如此處使用的,NOP不執(zhí)行調(diào)試操作。 艮口,NOP不導(dǎo)致執(zhí)行調(diào)試操作。另外,注意作為NOP而不是調(diào)試指令(其執(zhí)行調(diào)試操作)執(zhí) 行調(diào)試指令的能力或?qū)φ{(diào)試指令分組的能力可應(yīng)用于任意類型的調(diào)試指令,而不僅限于調(diào) 試通知暫停指令(諸如dnh和dnh2)。在一個實施例中,可以不執(zhí)行指令的執(zhí)行,而是取而 代之,取決于適當(dāng)調(diào)試控制寄存器的組字段的設(shè)置(諸如例如,DBCR4或EDBCR0),可以抑制 dnh或dnh2指令的執(zhí)行,而不是進(jìn)入處理器12的執(zhí)行階段。在一個實施例中,將諸如dnh和dnh2指令的調(diào)試指令視為NOP的能力允許抑制調(diào) 試操作的能力。因此,這可以允許將調(diào)試指令保留在最終代碼內(nèi),而不會引起中斷或其它調(diào) 試操作的發(fā)生。以這種方式,代碼圖像可以保持不變。例如,圖12示出了包括指示組0的 dnh2指令和dnh指令(它的默認(rèn)值為組0)的代碼段70。這些指令可能是調(diào)試代碼段70 所必需的;然而,在完成代碼段70之后,去除這些指令可能會不希望地改變代碼段70的代 碼圖像,其中例如,相對于剩余指令,頁邊界(以水平虛線示出)、分支和分支目標(biāo)指令位置 (諸如以帶有指向其目標(biāo)位置的箭頭的分支指令示出)將會改變。通過將DBCR4的GRPOC 字段設(shè)置為01,代碼段70的dnh和dnh2指令將作為NOP操作,因此不引起調(diào)試指令異常 (不引起中斷)。另外,可能希望在調(diào)試圖13所示的新代碼段72的同時完成代碼段70。因 此,注意新代碼段72包括指示組1和2的dnh2指令。注意,由于它們不指示組0,這些dnh2 指令不受GRPOC的設(shè)置的影響。以這種方式,dnh2指令可被獨(dú)立地控制,并且因此與代碼 段70的dnh2和dnh指令不同地操作。因此,可以各種不同方式使用dnh2指令的分組。另夕卜,此處討論的“分組”(即,對一個或更多個調(diào)試控制寄存器中的組字段的使用)可被用于任意調(diào)試指令,而不僅僅限于調(diào)試通知暫停指令。圖11示出了根據(jù)本發(fā)明的一個實施例的處理器12內(nèi)的控制電路28的一部分???制電路28包括解碼電路60和調(diào)試執(zhí)行控制電路62。解碼電路60耦接為從取指令單元26 接收信息,并且耦接為向調(diào)試執(zhí)行控制電路62提供信息。調(diào)試執(zhí)行控制電路62還從調(diào)試 寄存器42接收信息,并且(在需要時)向處理器12的各部分提供控制信號。在操作中,從取指令單元26向解碼電路60提供關(guān)于當(dāng)前正在執(zhí)行的指令或?qū)⒈?執(zhí)行的指令的信息。該信息可以包括,例如,將被執(zhí)行的dnh2指令的指示。解碼電路60然 后解碼該指令以便向調(diào)試執(zhí)行控制電路62提供適當(dāng)信息。例如,解碼電路60可以將dnh2 指令的組字段傳遞到調(diào)試執(zhí)行控制電路,調(diào)試執(zhí)行控制電路使用該組字段的值來訪問調(diào)試 寄存器42的適當(dāng)調(diào)試控制寄存器(例如,取決于EDM和DNH_EN的值,DBCR4或EDBCR0)的 相應(yīng)組控制字段?;谠摻Y(jié)果,(在需要時)調(diào)試執(zhí)行控制電路62可以向處理器12的各 部分提供適當(dāng)?shù)目刂菩盘?,以便實現(xiàn)由來自調(diào)試寄存器42的信息所指示的dnh2指令的適 當(dāng)功能。例如,如果指出了調(diào)試操作,則相應(yīng)地提供本領(lǐng)域已知的適當(dāng)?shù)目刂菩盘枺蛉绻?指出了 NOP,則相應(yīng)地提供本領(lǐng)域已知的適當(dāng)?shù)目刂菩盘?。另外,如果將要抑制指令的?zhí)行, 則相應(yīng)地提供本領(lǐng)域已知的適當(dāng)?shù)目刂菩盘枴R虼?,注意調(diào)試執(zhí)行控制電路62可以基于存 儲在適當(dāng)調(diào)試控制寄存器的相應(yīng)組控制字段內(nèi)的值,以第一方式或第二方式控制調(diào)試指令 諸如dnh或dnh2指令的執(zhí)行。在一個例子中,在第一方式中執(zhí)行調(diào)試操作,而在第二方式 中不執(zhí)行調(diào)試操作。因此,現(xiàn)在應(yīng)當(dāng)理解可以如何抑制相應(yīng)于調(diào)試指令的調(diào)試操作。例如,在執(zhí)行過程 中調(diào)試指令可被視為NOP,而不引起執(zhí)行調(diào)試操作。以這種方式,如果需要,調(diào)試指令可被 保留在代碼段內(nèi),而不會引起軟件中斷,因此允許正確地執(zhí)行代碼。即,通常一旦完成了代 碼,dnh指令,如果被保留在代碼內(nèi),將總是產(chǎn)生調(diào)試中斷。因此,這些dnh指令必須被去除 以便代碼正確工作。然而,通過包括允許調(diào)試指令執(zhí)行調(diào)試操作或執(zhí)行非調(diào)試操作(諸如, 被視為NOP或被抑制執(zhí)行)的附加控制,此處描述的至少一個實施例允許在代碼執(zhí)行過程 中抑制調(diào)試中斷。在一個實施例中,一種方法包括提供調(diào)試指令和提供調(diào)試控制寄存器字段,其中 如果調(diào)試控制寄存器字段具有第一值,則調(diào)試指令執(zhí)行調(diào)試操作,并且其中如果調(diào)試控制 寄存器字段具有第二值,則調(diào)試指令將被作為無操作(NOP)指令執(zhí)行。在另一個實施例中,如果調(diào)試控制寄存器字段具有第二值,則取代調(diào)試中斷執(zhí)行 NOP指令。在另一個實施例中,如果調(diào)試控制寄存器字段具有第一值,則調(diào)試指令的執(zhí)行引 起進(jìn)入調(diào)試模式。在另一個實施例中,如果調(diào)試控制寄存器字段具有第一值,則調(diào)試指令的執(zhí)行引 起處理器暫停。在另一個實施例中,集成電路之外的調(diào)試器具有對調(diào)試控制寄存器字段的寫訪 問,并且所述集成電路上的處理器不具有對調(diào)試控制寄存器字段的寫訪問。在另一個實施例中,集成電路之外的調(diào)試器不具有對調(diào)試控制寄存器字段的寫訪 問,并且所述集成電路上的處理器具有對調(diào)試控制寄存器字段的寫訪問。
在另一個實施例中,集成電路上的處理器之外的調(diào)試器具有對調(diào)試控制寄存器字 段的寫訪問,并且所述集成電路上的處理器不具有對調(diào)試控制寄存器字段的寫訪問。在另一個實施例中,調(diào)試指令包括指示多個調(diào)試指令組中的一個的組字段。在另 一個實施例中,調(diào)試控制寄存器字段包括多個調(diào)試控制寄存器字段部分,其中每個調(diào)試控 制寄存器字段部分與所述多個調(diào)試指令組中的一個相對應(yīng)。在另一個實施例中,一種方法包括提供第一調(diào)試指令,提供第一調(diào) 試指令中的指 示組號的字段,并且提供多個調(diào)試控制寄存器字段,其中所述組號將所述多個調(diào)試控制寄 存器字段中的第一個調(diào)試控制寄存器字段與第一調(diào)試指令相關(guān)聯(lián),其中如果所述多個調(diào)試 控制寄存器字段中的第一個調(diào)試控制寄存器字段具有第一值,則作為第一調(diào)試指令執(zhí)行第 一調(diào)試指令,并且其中如果所述多個調(diào)試控制寄存器字段中的第一個調(diào)試控制寄存器字段 具有第二值,則作為無操作(NOP)指令執(zhí)行第一調(diào)試指令。該方法還包括提供第二調(diào)試指 令,其中第二調(diào)試指令不具有指示組號的字段,其中所述多個調(diào)試控制寄存器字段中的第 二個調(diào)試控制寄存器字段與第二調(diào)試指令相關(guān)聯(lián),其中如果所述多個調(diào)試控制寄存器字段 中的第二個調(diào)試控制寄存器字段具有第一值,則作為第二調(diào)試指令執(zhí)行第二調(diào)試指令,并 且其中如果所述多個調(diào)試控制寄存器字段中的第二個調(diào)試控制寄存器字段具有第二值,則 作為NOP操作指令執(zhí)行第二調(diào)試指令。在另一個實施例的另一個實施例中,第一調(diào)試指令不同于第二調(diào)試指令。在另一個實施例的另一個實施例中,所述多個調(diào)試控制寄存器字段中的第一個調(diào) 試控制寄存器字段和所述多個調(diào)試控制寄存器字段中的第二個調(diào)試控制寄存器字段是所 述多個調(diào)試控制寄存器字段中的同一個調(diào)試控制寄存器字段。在另一個實施例的另一個實施例中,所述多個調(diào)試控制寄存器字段中的第一個調(diào) 試控制寄存器字段和所述多個調(diào)試控制寄存器字段中的第二個調(diào)試控制寄存器字段是所 述多個調(diào)試控制寄存器字段中的不同的調(diào)試控制寄存器字段。在另一個實施例的另一個實施例中,如果所述多個調(diào)試控制寄存器字段中的第一 個調(diào)試控制寄存器字段具有第一值,則第一調(diào)試指令的執(zhí)行引起進(jìn)入調(diào)試模式,并且如果 所述多個調(diào)試控制寄存器字段中的第二個調(diào)試控制寄存器字段具有第一值,則第二調(diào)試指 令的執(zhí)行引起進(jìn)入調(diào)試模式。在另一個實施例的另一個實施例中,其中如果所述多個調(diào)試控制寄存器字段中的 第一個調(diào)試控制寄存器字段具有第一值,則第一調(diào)試指令的執(zhí)行引起處理器暫停,并且如 果所述多個調(diào)試控制寄存器字段中的第二個調(diào)試控制寄存器字段具有第一值,則第二調(diào)試 指令的執(zhí)行引起處理器暫停。根據(jù)一個實施例的數(shù)據(jù)處理系統(tǒng)包括用于接收調(diào)試指令的取指令電路,調(diào)試控制 寄存器字段和耦接到取指令電路并且耦接到調(diào)試控制寄存器字段的調(diào)試執(zhí)行控制電路。如 果調(diào)試控制寄存器字段具有第一值,則調(diào)試執(zhí)行控制電路控制調(diào)試指令以第一方式的執(zhí) 行,并且如果調(diào)試控制寄存器字段具有第二值,則調(diào)試執(zhí)行控制電路控制調(diào)試指令以第二 方式的執(zhí)行,其中在第一方式下執(zhí)行調(diào)試操作,并且其中在第二方式下不執(zhí)行調(diào)試操作。在數(shù)據(jù)處理系統(tǒng)的另一個實施例中,如果調(diào)試控制寄存器字段具有第一值,則調(diào) 試指令的執(zhí)行引起進(jìn)入調(diào)試模式。在數(shù)據(jù)處理系統(tǒng)的另一個實施例中,如果調(diào)試控制寄存器字段具有第一值,則調(diào)試指令的執(zhí)行引起啟動調(diào)試中斷處理。在數(shù)據(jù)處理系統(tǒng)的另一個實施例中,如果調(diào)試控制寄存器字段具有第一值,則調(diào) 試指令的執(zhí)行引起取指令電路暫停正常指令獲取。在數(shù)據(jù)處理系統(tǒng)的另一個實施例中,調(diào)試指令包括指示多個調(diào)試指令組中的一個 的組字段,并且其中所述多個調(diào)試指令組中的所述一個從多個調(diào)試控制寄存器字段中選擇 所述調(diào)試控制寄存器字段。由于實現(xiàn)本發(fā)明的裝置大部分由本領(lǐng)域的技術(shù)人員已知的電子組件和電路構(gòu)成, 為了理解和明了本發(fā)明的底層概念,并且為了不模糊或分散本發(fā)明的教導(dǎo),不再給出關(guān)于 電路細(xì)節(jié)的比上面給出的被認(rèn)為是必需內(nèi)容的更詳細(xì)的解釋。如此處使用的,術(shù)語“程序”被定義為指定為在計算機(jī)系統(tǒng)上執(zhí)行的一系列指令。 程序或計算機(jī)程序可以包括子例程、函數(shù)、過程、對象方法、對象實現(xiàn)、可執(zhí)行應(yīng)用、小程序、 小服務(wù)程序、源碼、目標(biāo)碼、共享庫/動態(tài)加載庫和/或指定為在計算機(jī)系統(tǒng)上執(zhí)行的其它 指令序列。上述某些實施例,在適當(dāng)時,可被使用各種不同的信息處理系統(tǒng) 實現(xiàn)。例如,雖然 圖1和2以及對它們的討論描述了示例的信息處理體系結(jié)構(gòu),但僅給出這種示例的體系結(jié) 構(gòu)以便在討論本發(fā)明的各個方面時提供有用的參考。當(dāng)然,已經(jīng)出于討論的目的簡化了對 該體系結(jié)構(gòu)的描述,并且它僅是可以根據(jù)本發(fā)明使用的許多不同類型的適合體系結(jié)構(gòu)之 一。本領(lǐng)域的技術(shù)人員將認(rèn)識到邏輯塊之間的界線僅是說明性的,并且替換實施例可以合 并邏輯塊或電路元件,或?qū)Ω鞣N邏輯塊或電路元件進(jìn)行替換性的功能分解。因此,應(yīng)當(dāng)理解,此處示出的體系結(jié)構(gòu)僅是例子,并且實際上可以實現(xiàn)許多其它實 現(xiàn)相同功能的體系結(jié)構(gòu)。在抽象但仍然明確的意義上,實現(xiàn)相同功能的組件的任意布置有 效地“關(guān)聯(lián)”,從而實現(xiàn)所希望的功能。因此,此處組合以便實現(xiàn)特定功能的兩個組件可被視 為彼此“關(guān)聯(lián)”從而實現(xiàn)所希望的功能,而不論體系結(jié)構(gòu)或中間組件如何。類似地,如此關(guān) 聯(lián)的任意兩個組件可被視為被彼此“可操作地連接”,或“可操作地耦接”,以便實現(xiàn)所希望 的功能。另外例如在一個實施例中,系統(tǒng)10的示出的元件是位于單個集成電路上或相同 設(shè)備內(nèi)的電路??商鎿Q地,系統(tǒng)10可以包括彼此互連的任意數(shù)目的分立的集成電路或分立 的設(shè)備。另外例如系統(tǒng)10或其一部分可以是物理電路或可被轉(zhuǎn)換為物理電路的邏輯表示 的軟件或代碼表示。從而,系統(tǒng)10可被以任意適合類型的硬件描述語言表示。另外,本領(lǐng)域的技術(shù)人員將認(rèn)識到上述操作的功能之間的界線僅是說明性的。多 個操作的功能可被組合到單個操作中,和/或單個操作的功能可被分散在附加操作中。另 夕卜,替換實施例可以包括特定操作的多個實例,并且在各種其它實施例中,操作的順序可以 改變。此處描述的所有或某些軟件可以是,例如,來自計算機(jī)可讀介質(zhì)諸如存儲器18或 計算機(jī)系統(tǒng)上的其它介質(zhì)的數(shù)據(jù)處理系統(tǒng)10的接收元件。這種計算機(jī)可讀介質(zhì)可以永久 地、可移動地或遠(yuǎn)程地連接到諸如數(shù)據(jù)處理系統(tǒng)10的信息處理系統(tǒng)。計算機(jī)可讀介質(zhì)可 以包括,例如(而限制性的),下列中的任意計算機(jī)可讀介質(zhì)包括磁盤和磁帶存儲介質(zhì)的 磁存儲介質(zhì);諸如壓縮盤介質(zhì)的光存儲介質(zhì)(例如,⑶-ROM、⑶-R等)和數(shù)字視頻盤存儲 介質(zhì);非易失存儲器存儲介質(zhì),包括基于半導(dǎo)體的存儲器單元,諸如FLASH存儲器、EEPR0M、EPROM、ROM ;鐵磁數(shù)字存儲器;MRAM ;易失存儲介質(zhì),包括寄存器、緩沖器或高速緩存、主存 儲器、RAM等;和數(shù)據(jù)傳輸介質(zhì),包括計算機(jī)網(wǎng)絡(luò)、點到點電信設(shè)備和載波傳輸介質(zhì),僅僅列
舉了一些。雖然此處參考具體實施例描述了本發(fā)明,但可以做出各種修改和改變而不脫離在 下面的權(quán)利要求書中提出的本發(fā)明的范圍。因此,說明書和附圖被認(rèn)為是說明性的而不是 限制性的,并且所有這些修改旨在包括在本發(fā)明的范圍內(nèi)。此處以具體實施例描述的任何 益處、優(yōu)點或問題的解決方案不旨在被認(rèn)為是任意或所有權(quán)利要求的關(guān)鍵的、所需要的或 必要的特征或元素。如此處使用的,術(shù)語“耦接”不旨在局限于直接耦接或機(jī)械耦接。另外,如此處使用的,術(shù)語“一個”定義為一個或多于一個。另外,權(quán)利要求中諸如 “至少一個”和“一個或更多個”引出短語的使用不應(yīng)被認(rèn)為暗示著由“一個”引出的另一個 權(quán)利要求元素將包含這種引出的權(quán)利要求元素的任意特定權(quán)利要求局限于僅包含一個這 種元素的發(fā)明,即使當(dāng)相同的權(quán)利要求包括引出短語“一個或更多個”或“至少一個”和“一 個”時也是如此。
除非另外說明,此處使用諸如“第一”和“第二”的術(shù)語任意區(qū)分這些術(shù)語描述的 元素。因此,這些術(shù)語不必旨在指示這些元素的時間上的或其它的優(yōu)先次序。
權(quán)利要求
一種方法,包括以下步驟提供調(diào)試指令;提供調(diào)試控制寄存器字段,其中如果所述調(diào)試控制寄存器字段具有第一值,則所述調(diào)試指令執(zhí)行調(diào)試操作,并且其中如果所述調(diào)試控制寄存器字段具有第二值,則所述調(diào)試指令將被作為無操作NOP指令執(zhí)行。
2.如權(quán)利要求1的方法,其中如果所述調(diào)試控制寄存器字段具有第二值,則取代調(diào)試 中斷執(zhí)行所述NOP指令。
3.如權(quán)利要求1的方法,其中如果所述調(diào)試控制寄存器字段具有第一值,則所述調(diào)試 指令的執(zhí)行引起進(jìn)入調(diào)試模式。
4.如權(quán)利要求1的方法,其中如果所述調(diào)試控制寄存器字段具有第一值,則所述調(diào)試 指令的執(zhí)行引起處理器暫停。
5.如權(quán)利要求1的方法,其中集成電路之外的調(diào)試器具有對所述調(diào)試控制寄存器字段 的寫訪問,并且所述集成電路上的處理器不具有對所述調(diào)試控制寄存器字段的寫訪問。
6.如權(quán)利要求1的方法,其中集成電路之外的調(diào)試器不具有對所述調(diào)試控制寄存器字 段的寫訪問,并且所述集成電路上的處理器具有對所述調(diào)試控制寄存器字段的寫訪問。
7.如權(quán)利要求1的方法,其中集成電路上的處理器之外的調(diào)試器具有對所述調(diào)試控制 寄存器字段的寫訪問,并且所述集成電路上的所述處理器不具有對所述調(diào)試控制寄存器字 段的寫訪問。
8.如權(quán)利要求1的方法,其中所述調(diào)試指令包括指示多個調(diào)試指令組中的一個的組字段。
9.如權(quán)利要求8的方法,其中所述調(diào)試控制寄存器字段包括多個調(diào)試控制寄存器字段 部分,其中每個調(diào)試控制寄存器字段部分與所述多個調(diào)試指令組中的一個相對應(yīng)。
10.一種方法,包括以下步驟提供第一調(diào)試指令;提供第一調(diào)試指令中的指示組號的字段;提供多個調(diào)試控制寄存器字段,其中所述組號將所述多個調(diào)試控制寄存器字段中的第 一個調(diào)試控制寄存器字段與第一調(diào)試指令相關(guān)聯(lián),其中如果所述多個調(diào)試控制寄存器字段 中的第一個調(diào)試控制寄存器字段具有第一值,則作為第一調(diào)試指令執(zhí)行第一調(diào)試指令,并 且其中如果所述多個調(diào)試控制寄存器字段中的第一個調(diào)試控制寄存器字段具有第二值,則 作為無操作NOP指令執(zhí)行第一調(diào)試指令;和提供第二調(diào)試指令,其中第二調(diào)試指令不具有指示所述組號的字段,其中所述多個調(diào) 試控制寄存器字段中的第二個調(diào)試控制寄存器字段與第二調(diào)試指令相關(guān)聯(lián),其中如果所述多個調(diào)試控制寄存器字段中的第二個調(diào)試控制寄存器字段具有第一值, 則作為第二調(diào)試指令執(zhí)行第二調(diào)試指令,并且其中如果所述多個調(diào)試控制寄存器字段中的第二個調(diào)試控制寄存器字段具有第二值, 則作為所述NOP操作指令執(zhí)行第二調(diào)試指令。
11.如權(quán)利要求10的方法,其中第一調(diào)試指令不同于第二調(diào)試指令。
12.如權(quán)利要求10的方法,其中所述多個調(diào)試控制寄存器字段中的第一個調(diào)試控制寄存器字段和所述多個調(diào)試控制寄存器字段中的第二個調(diào)試控制寄存器字段是所述多個調(diào) 試控制寄存器字段中的同一個調(diào)試控制寄存器字段。
13.如權(quán)利要求10的方法,其中所述多個調(diào)試控制寄存器字段中的第一個調(diào)試控制寄 存器字段和所述多個調(diào)試控制寄存器字段中的第二個調(diào)試控制寄存器字段是所述多個調(diào) 試控制寄存器字段中的不同的調(diào)試控制寄存器字段。
14.如權(quán)利要求10的方法,其中如果所述多個調(diào)試控制寄存器字段中的第一個調(diào)試控 制寄存器字段具有第一值,則第一調(diào)試指令的執(zhí)行引起進(jìn)入調(diào)試模式,并且如果所述多個 調(diào)試控制寄存器字段中的第二個調(diào)試控制寄存器字段具有第一值,則第二調(diào)試指令的執(zhí)行 引起進(jìn)入調(diào)試模式。
15.如權(quán)利要求10的方法,其中如果所述多個調(diào)試控制寄存器字段中的第一個調(diào)試控 制寄存器字段具有第一值,則第一調(diào)試指令的執(zhí)行引起所述處理器暫停,并且如果所述多 個調(diào)試控制寄存器字段中的第二個調(diào)試控制寄存器字段具有第一值,則第二調(diào)試指令的執(zhí) 行引起所述處理器暫停。
16.一種數(shù)據(jù)處理系統(tǒng),包括用于接收調(diào)試指令的取指令電路;調(diào)試控制寄存器字段;和耦接到所述取指令電路并且耦接到所述調(diào)試控制寄存器字段的調(diào)試執(zhí)行控制電路,如 果所述調(diào)試控制寄存器字段具有第一值,則所述調(diào)試執(zhí)行控制電路控制所述調(diào)試指令以第 一方式的執(zhí)行,并且如果所述調(diào)試控制寄存器字段具有第二值,則所述調(diào)試執(zhí)行控制電路 控制所述調(diào)試指令以第二方式的執(zhí)行,其中在第一方式下執(zhí)行調(diào)試操作,并且其中在第二 方式下不執(zhí)行調(diào)試操作。
17.如權(quán)利要求16的數(shù)據(jù)處理系統(tǒng),其中如果所述調(diào)試控制寄存器字段具有第一值, 則所述調(diào)試指令的執(zhí)行引起進(jìn)入調(diào)試模式。
18.如權(quán)利要求16的數(shù)據(jù)處理系統(tǒng),其中如果所述調(diào)試控制寄存器字段具有第一值, 則所述調(diào)試指令的執(zhí)行引起啟動調(diào)試中斷處理。
19.如權(quán)利要求16的數(shù)據(jù)處理系統(tǒng),其中如果所述調(diào)試控制寄存器字段具有第一值, 則所述調(diào)試指令的執(zhí)行引起所述取指令電路暫停正常指令獲取。
20.如權(quán)利要求16的數(shù)據(jù)處理系統(tǒng),其中所述調(diào)試指令包括指示多個調(diào)試指令組中的 一個的組字段,并且其中所述多個調(diào)試指令組中的所述一個從多個調(diào)試控制寄存器字段中 選擇所述調(diào)試控制寄存器字段。
全文摘要
一種方法包括提供調(diào)試指令和提供調(diào)試控制寄存器字段,其中如果調(diào)試控制寄存器字段具有第一值,則調(diào)試指令執(zhí)行調(diào)試操作,并且其中如果調(diào)試控制寄存器字段具有第二值,則調(diào)試指令將被作為無操作(NOP)指令執(zhí)行。一種數(shù)據(jù)處理系統(tǒng)(10)包括用于接收調(diào)試指令的取指令電路(26)、調(diào)試控制寄存器字段、和調(diào)試執(zhí)行控制電路(62),如果調(diào)試控制寄存器字段具有第一值,則調(diào)試執(zhí)行控制電路控制調(diào)試指令以第一方式的執(zhí)行,并且如果調(diào)試控制寄存器字段具有第二值,則調(diào)試執(zhí)行控制電路控制調(diào)試指令以第二方式的執(zhí)行,其中在第一方式下執(zhí)行調(diào)試操作,而在第二方式下不執(zhí)行調(diào)試操作。
文檔編號G06F11/36GK101821719SQ200880111282
公開日2010年9月1日 申請日期2008年9月8日 優(yōu)先權(quán)日2007年10月12日
發(fā)明者G·L·惠森亨特, M·D·辛德, W·C·莫耶 申請人:飛思卡爾半導(dǎo)體公司