調(diào)試啟用處理設(shè)備和嵌入式處理系統(tǒng)的制作方法
【專利摘要】本披露涉及調(diào)試啟用處理設(shè)備和嵌入式處理系統(tǒng)。一種調(diào)試啟用處理設(shè)備包括處理器、通信收發(fā)器電路以及調(diào)試支持單元。該調(diào)試支持單元具有幫助對(duì)由該處理器執(zhí)行的軟件程序進(jìn)行調(diào)試的多個(gè)專用調(diào)試寄存器。該多個(gè)調(diào)試寄存器之一是具有至少四個(gè)位的控制寄存器,該至少四個(gè)位用于啟用/禁用多項(xiàng)調(diào)試操作。這些調(diào)試寄存器中的其他調(diào)試寄存器包括可以被配置成用于向和從該處理器傳遞數(shù)據(jù)的索引寄存器組。
【專利說明】
調(diào)試啟用處理設(shè)備和嵌入式處理系統(tǒng)
技術(shù)領(lǐng)域
[0001 ]本披露總體上涉及調(diào)試軟件程序。更具體地但是不排他地,本披露涉及對(duì)于調(diào)試 軟件程序有用的基于硬件的調(diào)試支持單元。
【背景技術(shù)】
[0002] 自從開發(fā)人員已經(jīng)編寫軟件代碼開始,已經(jīng)存在對(duì)軟件進(jìn)行調(diào)試的需要。在一些 情況下,當(dāng)軟件無法正確工作時(shí),開發(fā)人員研究軟件代碼并且腦中嘗試調(diào)試該問題。在許多 情況下,尤其是當(dāng)軟件不只是簡短的簡單程序時(shí),對(duì)軟件進(jìn)行調(diào)試的腦力方法將不起效。
[0003] 已經(jīng)創(chuàng)造了各種工具來輔助開發(fā)人員對(duì)軟件進(jìn)行調(diào)試。在一些情況下,完全地從 軟件形成常規(guī)調(diào)試工具。在其他情況下,從硬件和軟件的組合形成常規(guī)調(diào)試工具。
[0004] 圖1是常規(guī)調(diào)試系統(tǒng)10。在該系統(tǒng)中,主機(jī)計(jì)算設(shè)備12經(jīng)由串行通信介質(zhì)34通信地 耦合到目標(biāo)系統(tǒng)50。通常是個(gè)人計(jì)算機(jī)的主機(jī)計(jì)算設(shè)備12包括硬件模塊14和存儲(chǔ)器模塊 16。硬件模塊14包括處理器18以及支持邏輯模塊20。存儲(chǔ)器模塊116通常包括操作系統(tǒng)軟件 22、應(yīng)用軟件24以及調(diào)試軟件程序26。
[0005] 主機(jī)計(jì)算設(shè)備12通常受軟件從業(yè)者(諸如開發(fā)人員)控制。開發(fā)人員經(jīng)由顯示器28 從主機(jī)計(jì)算設(shè)備12接收信息,并且開發(fā)人員經(jīng)由鍵盤30和鼠標(biāo)32向主機(jī)計(jì)算設(shè)備12提供信 息。在軟件從業(yè)者的指導(dǎo)下,處理器18執(zhí)行存儲(chǔ)在存儲(chǔ)器模塊16中的軟件指令。
[0006] 主機(jī)計(jì)算設(shè)備12的支持邏輯模塊20包括電路,諸如通用異步接收器/發(fā)送器 (UART)控制器、存儲(chǔ)器控制器、時(shí)鐘、圖形控制器等等。在軟件從業(yè)者的指導(dǎo)下,調(diào)試軟件程 序26與目標(biāo)系統(tǒng)通信以便發(fā)送控制信息和接收數(shù)據(jù)或狀態(tài)信息。在圖1的常規(guī)調(diào)試系統(tǒng)10 中,控制信息和數(shù)據(jù)被傳遞通過支持邏輯模塊20的UART通過串行通信介質(zhì)34(即,串行數(shù)據(jù) 線纜)到達(dá)目標(biāo)系統(tǒng)50。此外,通過串行通信介質(zhì)34將數(shù)據(jù)和狀態(tài)信息從目標(biāo)系統(tǒng)50傳遞到 主機(jī)計(jì)算設(shè)備12。
[0007] 圖1的目標(biāo)系統(tǒng)50包括處理器52、支持邏輯模塊54、存儲(chǔ)器模塊56以及常規(guī)調(diào)試支 持單元(DSU)58。目標(biāo)系統(tǒng)50的支持邏輯模塊54類似于主機(jī)計(jì)算設(shè)備12的邏輯支持模塊20。 除通信控制器、存儲(chǔ)器控制器、時(shí)鐘、圖形控制器等等之外,支持邏輯模塊54還可以包括用 于支持目標(biāo)系統(tǒng)50的功能的其他電路和結(jié)構(gòu)。
[0008] 程序60駐留在目標(biāo)系統(tǒng)50的存儲(chǔ)器模塊56中。程序60包括可由處理器52執(zhí)行以便 實(shí)施目標(biāo)系統(tǒng)50的功能的軟件指令。存根62可選地位于程序60的軟件指令集內(nèi)。在一些情 況下,以下更詳細(xì)描述的一個(gè)或多個(gè)存根62被放置在程序60中。
[0009] DSU 58包括可選處理器64、可選DSU軟件66以及可選邏輯模塊68ASU 58指導(dǎo)目標(biāo) 系統(tǒng)50上的調(diào)試操作。在DSU 58包括可選處理器64的情況下,DSU 58還將包括可選DSU軟件 66,該軟件包括可由可選處理器64執(zhí)行的軟件指令。DSU 58的可選邏輯模塊68可以包括用 于幫助對(duì)操作進(jìn)行調(diào)試的寄存器、比較器、時(shí)鐘、輸入/輸出電路等等。在目標(biāo)系統(tǒng)50的常規(guī) 實(shí)現(xiàn)方式中,DSU 58的操作由軟件從業(yè)者指導(dǎo)。軟件從業(yè)者使用主機(jī)計(jì)算設(shè)備12輸入調(diào)試 命令,這些命令由調(diào)試軟件程序26解釋并且經(jīng)由串行通信介質(zhì)34被傳達(dá)到目標(biāo)系統(tǒng)50。
[0010] 軟件從業(yè)者所使用的常規(guī)調(diào)試方法被稱為"存根(stub)"方法?;旧显谲浖袑?shí) 現(xiàn)存根方法。在存根方法中,軟件從業(yè)者標(biāo)識(shí)程序60中的可能發(fā)現(xiàn)嫌疑錯(cuò)誤的區(qū)域。然后, 在這個(gè)區(qū)域中,用非法指令替換程序60中的所選指令。非法指令是無法由處理器52理解的 指令,從而使得當(dāng)處理器52嘗試執(zhí)行為存根62的非法指令時(shí),處理器52反而斷言非法指令 陷阱。不像傳統(tǒng)的非法指令陷阱處理程序,非法指令陷阱的發(fā)送導(dǎo)致DSU 58執(zhí)行調(diào)試操作。 也就是,DSU 58允許軟件從業(yè)者在程序60中的軟件從業(yè)者認(rèn)為存在錯(cuò)誤的那個(gè)點(diǎn)"接管"對(duì) 目標(biāo)系統(tǒng)50的控制。
[0011] 例如,如果當(dāng)遇到具體的情況時(shí)目標(biāo)系統(tǒng)50無法照亮某個(gè)發(fā)光二極管(LED),軟件 從業(yè)者可以標(biāo)識(shí)程序60的其中軟件指令詢問這個(gè)具體情況的那一部分。軟件從業(yè)者選擇那 些軟件指令中的一個(gè)指令的地址,并且用非法軟件指令替換原始軟件指令。軟件從業(yè)者通 過在主機(jī)計(jì)算設(shè)備12輸入命令來執(zhí)行這個(gè)替換,該主機(jī)計(jì)算設(shè)備指導(dǎo)DSU 58執(zhí)行該替換。
[0012] 在存根62被放置在程序60的存儲(chǔ)器地址空間中之后,處理器52被準(zhǔn)許正常地執(zhí)行 程序60的指令。當(dāng)遇到非法指令(即,存根62)時(shí),處理器52將掛起其正常指令流、保存處理 器的當(dāng)前狀態(tài)并且為程序計(jì)數(shù)器(PC)寄存器加載預(yù)先確定的陷阱處理程序的地址。預(yù)先確 定的陷阱處理程序包括調(diào)試軟件指令。例如,預(yù)先確定的陷阱處理程序中的第一指令可以 在臨時(shí)存儲(chǔ)器空間中保存處理器52的一個(gè)或多個(gè)寄存器的內(nèi)容、在臨時(shí)存儲(chǔ)器空間中保存 存儲(chǔ)器的其他部分的內(nèi)容、或者采用其他動(dòng)作來在遇到非法指令(即,存根)的時(shí)刻捕捉目 標(biāo)系統(tǒng)50的狀態(tài)。在預(yù)先確定的陷阱處理程序內(nèi),軟件從業(yè)者還可以交互性地讀取處理器 52的寄存器、在存儲(chǔ)器模塊56中讀取和寫入數(shù)據(jù)或軟件指令、或者執(zhí)行其他動(dòng)作來嘗試并 且確定程序60中的何處存在錯(cuò)誤。
[0013] 當(dāng)軟件從業(yè)者已經(jīng)確定已經(jīng)執(zhí)行充分的調(diào)試時(shí),軟件從業(yè)者將指示DSU 58用程序 60的在加載存根62之前存在的原始軟件指令替換存根62,并且將恢復(fù)之前保存在臨時(shí)存儲(chǔ) 空間中的寄存器和存儲(chǔ)器區(qū)域。接下來,軟件從業(yè)者將指導(dǎo)示處理器52從該預(yù)先確定的陷 阱處理程序返回。處理器52還將恢復(fù)處理器的原始狀態(tài)并且用現(xiàn)在替換的軟件指令的地址 重新加載PC寄存器。以此方式,執(zhí)行程序60將在其之前被中斷的地方并且以其在陷阱之前 存在的上下文和狀態(tài)重新開始。
[0014]返回?zé)o法照亮LED的先前示例,軟件從業(yè)者將強(qiáng)制DSU 58替換程序60的策略區(qū)域 中的一個(gè)或多個(gè)存根62。當(dāng)處理器52執(zhí)行程序60的軟件指令并且遇到每個(gè)存根62時(shí),軟件 從業(yè)者有機(jī)會(huì)標(biāo)識(shí)無法實(shí)現(xiàn)預(yù)期的特定情況的原因、無法正確地詢問預(yù)期的特定情況的原 因、無法照亮LED的原因或某個(gè)其他錯(cuò)誤。
[0015]在存根方法中,軟件從業(yè)者策略性地將一個(gè)或多個(gè)存根62放在程序60的期望調(diào)試 的區(qū)域中。在遇到存根62的每個(gè)點(diǎn),觸發(fā)非法指令陷阱,并且軟件從業(yè)者有機(jī)會(huì)詢問或者以 其他方式控制目標(biāo)系統(tǒng)50。當(dāng)發(fā)現(xiàn)錯(cuò)誤時(shí),可以更新或者以其他方式重新寫入程序60的軟 件指令以便移除錯(cuò)誤。
[0016]在背景部分中討論的所有主題無需是現(xiàn)有技術(shù)并且不應(yīng)當(dāng)僅僅由于其在背景部 分的討論而被假定為是現(xiàn)有技術(shù)。據(jù)此,除非特別說明是現(xiàn)有技術(shù),對(duì)在背景部分中所討論 的現(xiàn)有技術(shù)中存在的問題或與這種主題相關(guān)聯(lián)的問題的任何認(rèn)識(shí)不應(yīng)該被看作現(xiàn)有技術(shù)。 替代地,對(duì)在背景部分中的任何主題的討論都應(yīng)該被看做發(fā)明人解決具體問題的方法的一 部分,其本身以及本質(zhì)上也可以是有創(chuàng)造性的。 【實(shí)用新型內(nèi)容】
[0017] 使用允許軟件從業(yè)者對(duì)軟件進(jìn)行調(diào)試的常規(guī)調(diào)試支持單元和方法已經(jīng)導(dǎo)致發(fā)現(xiàn) 常規(guī)方法的顯著缺陷。常規(guī)調(diào)試迄今為止是受限的并且難以實(shí)現(xiàn)過程。使用在此描述的改 善的調(diào)試支持單元(DSU)為軟件從業(yè)者提供了更簡單的實(shí)現(xiàn)方式,該實(shí)現(xiàn)方式可以完全基 于硬件、還包括在常規(guī)系統(tǒng)中不可用的功能。
[0018] 調(diào)試啟用處理設(shè)備可以被總結(jié)為包括:處理器;通信收發(fā)器電路;以及調(diào)試支持單 元,該調(diào)試支持單元具有幫助對(duì)由該處理器執(zhí)行的軟件程序進(jìn)行調(diào)試的多個(gè)專用調(diào)試寄存 器,該多個(gè)調(diào)試寄存器包括:具有至少四個(gè)位的控制寄存器,該至少四個(gè)位包括用于啟用/ 禁用多項(xiàng)調(diào)試操作的控制位;以及索引寄存器組,該索引寄存器組可配置成用于向和從該 處理器傳遞數(shù)據(jù)。
[0019] 該控制寄存器可以包括:該至少四個(gè)位中的第一位,該第一位被安排成用于當(dāng)該 至少四個(gè)位中的該第一位采用第一值時(shí)啟用調(diào)試模式并且被進(jìn)一步安排成用于當(dāng)該至少 四個(gè)位中的該第一位采用第二值時(shí)禁用該調(diào)試模式;該至少四個(gè)位中的第二位,該第二位 被安排成用于提供有關(guān)流水線沖洗操作的狀態(tài);該至少四個(gè)位中的第三位,該第三位被安 排成用于啟用和禁用陷阱處理操作;以及該至少四個(gè)位中的第四位,該第四位被安排成用 于控制該陷阱處理操作。該索引寄存器組可以包括:寫入啟用寄存器,該寫入啟用寄存器用 于控制數(shù)據(jù)傳送操作是讀取操作還是寫入操作;地址寄存器,該地址寄存器用于存儲(chǔ)表示 該處理器的架構(gòu)狀態(tài)的值;以及數(shù)據(jù)寄存器,該數(shù)據(jù)寄存器用于存儲(chǔ)正在傳送的數(shù)據(jù)。
[0020] 該調(diào)試啟用處理設(shè)備可以進(jìn)一步包括集成電路封裝體,該集成電路封裝體在其內(nèi) 形成有該處理器、該通信收發(fā)器電路以及該調(diào)試支持單元。
[0021] 該處理器可以是精簡指令集計(jì)算(RISC)設(shè)備。該處理器可以包括多級(jí)執(zhí)行流水 線,該多級(jí)執(zhí)行流水線至少包括取出級(jí)、解碼級(jí)、執(zhí)行級(jí)以及回寫級(jí)。
[0022] 該調(diào)試啟用處理設(shè)備可以包括存儲(chǔ)器,該存儲(chǔ)器其中存儲(chǔ)有該軟件程序。
[0023] 該存儲(chǔ)器可以是非瞬態(tài)只讀存儲(chǔ)器(ROM)。該調(diào)試支持單元可以是不具有任何軟 件的電子電路。該調(diào)試支持單元可以包括調(diào)試控制電路,該調(diào)試控制電路被安排成用于在 該處理器與該調(diào)試支持單元的至少一個(gè)寄存器之間傳遞信號(hào)。
[0024] 一種嵌入式處理系統(tǒng)可以被總結(jié)為包括:用于執(zhí)行目標(biāo)程序的軟件指令的處理器 裝置;用于在該嵌入式處理器系統(tǒng)與外部主機(jī)計(jì)算設(shè)備之間傳達(dá)第一數(shù)據(jù)的收發(fā)器裝置; 以及用于在該目標(biāo)程序上指導(dǎo)調(diào)試操作的調(diào)試支持單元裝置,該調(diào)試支持裝置包括:用于 啟用和禁用多項(xiàng)調(diào)試操作的控制寄存器裝置;以及用于向和從該處理器傳遞第二數(shù)據(jù)的索 引寄存器裝置。
[0025] 該控制寄存器裝置可以包括:用于啟用調(diào)試模式并且用于禁用該調(diào)試模式的第一 裝置;用于指示流水線沖洗操作的狀態(tài)的第二裝置;用于啟用陷阱處理操作并且用于禁用 該陷阱處理操作的第三裝置;以及用于控制該陷阱處理操作的第四裝置。
[0026] 該索引寄存器裝置可以包括:用于指示讀取操作和寫入操作的寫入啟用裝置;用 于存儲(chǔ)有待訪問的地址的地址裝置;以及用于存儲(chǔ)正在傳送的數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)裝置。
[0027] 該嵌入式處理系統(tǒng)可以包括存儲(chǔ)器裝置,該存儲(chǔ)器裝置存儲(chǔ)該目標(biāo)程序。
[0028] 該嵌入式處理系統(tǒng)包括用于指導(dǎo)該調(diào)試支持單元裝置的操作的軟件。
[0029] 實(shí)施例所提供的調(diào)試啟用處理設(shè)備和嵌入式處理系統(tǒng)具有強(qiáng)大的新結(jié)構(gòu),該結(jié)構(gòu) 可以簡化調(diào)試流程并且減少調(diào)試系統(tǒng)對(duì)應(yīng)用程序的影響。
[0030] 已提供了此簡要概述來以簡化的形式引入在以下詳細(xì)說明書中進(jìn)一步詳細(xì)描述 的某些概念。除非另外明確表述,否則本簡要概述并不旨在標(biāo)識(shí)所要求的主題的關(guān)鍵或必 要特征,也不旨在限制或限定所要求保護(hù)的主題的范圍。
【附圖說明】
[0031] 參照以下附圖描述了非限制性且非窮盡的實(shí)施例,其中,除非另外指定,貫穿不同 視圖,類似的標(biāo)號(hào)指代類似的部分。附圖中元件的大小和相對(duì)位置不一定成比例地繪制。例 如,對(duì)不同元件的形狀進(jìn)行選擇、放大以及定位,以提高附圖可識(shí)別性。為了易于在附圖中 進(jìn)行識(shí)別,選擇了如所描繪的這些元件的具體形狀。以下參照附圖描述一個(gè)或多個(gè)實(shí)施例, 在附圖中:
[0032] 圖1是常規(guī)調(diào)試系統(tǒng)。
[0033] 圖2是具有改善的調(diào)試支持單元實(shí)施例的調(diào)試系統(tǒng);并且 [0034]圖3是圖2的調(diào)試支持單元的數(shù)據(jù)流實(shí)施例。
【具體實(shí)施方式】
[0035] 在以下說明中,列出了某些特定細(xì)節(jié)以便提供對(duì)各個(gè)所披露的實(shí)施例的透徹理 解。然而,相關(guān)領(lǐng)域的技術(shù)人員將會(huì)認(rèn)識(shí)到,多個(gè)實(shí)施例可以無需這些具體細(xì)節(jié)中的一個(gè)或 多個(gè)細(xì)節(jié)來實(shí)踐,或者可以使用其他方法、部件、材料等來實(shí)踐。在其他實(shí)例中,并未詳細(xì)示 出或者描述與計(jì)算系統(tǒng)(包括客戶端和服務(wù)器計(jì)算系統(tǒng))以及網(wǎng)絡(luò)相關(guān)聯(lián)的公知結(jié)構(gòu),以避 免對(duì)這些實(shí)施例的不必要的晦澀說明。
[0036] 隨著時(shí)間推移,現(xiàn)代的微處理器和應(yīng)用程序繼續(xù)變得更復(fù)雜并且應(yīng)用程序設(shè)計(jì)周 期繼續(xù)變得更短。為了解決這些新需求,強(qiáng)大并且高效的調(diào)試系統(tǒng)變得對(duì)軟件從業(yè)者(諸如 應(yīng)用設(shè)計(jì)者)來說更重要。發(fā)明人已經(jīng)認(rèn)識(shí)到在已知的調(diào)試工具(諸如圖1的常規(guī)調(diào)試系統(tǒng) 10)中發(fā)現(xiàn)的某些弱點(diǎn)和低效。通過在本披露中詳細(xì)描述的改善的調(diào)試支持單元(DSU)的一 個(gè)或多個(gè)創(chuàng)造性實(shí)施例解決并改善已知的調(diào)試工具的缺點(diǎn)。改善的DSU具有與圖1的常規(guī) DSU 58不同的強(qiáng)大的新結(jié)構(gòu),該結(jié)構(gòu)可以簡化調(diào)試流程并且減少調(diào)試系統(tǒng)對(duì)應(yīng)用程序的影 響。
[0037] 當(dāng)發(fā)明人研究常規(guī)調(diào)試系統(tǒng)10時(shí),認(rèn)識(shí)到盡管存根方法主導(dǎo)性地在軟件中實(shí)現(xiàn), 但系統(tǒng)要求處理器52的某些硬件資源。例如,在常規(guī)調(diào)試系統(tǒng)10中,處理器52的中斷資源、 UART接口以及特定存儲(chǔ)器空間必須專用于調(diào)試器。
[0038] 在常規(guī)調(diào)試系統(tǒng)10中,專用中斷資源用于初始化調(diào)試模式。當(dāng)實(shí)現(xiàn)存根方法時(shí),僅 可以在處理器52已經(jīng)處于調(diào)試模式之后才設(shè)定新的調(diào)試點(diǎn)(即,存根62)。相應(yīng)地,必須以不 同的方式觸發(fā)第一次進(jìn)入調(diào)試模式。在許多情況下,通過觸發(fā)專用中斷源并且使用相關(guān)聯(lián) 的中斷處理程序初始化調(diào)試方法來實(shí)施第一次進(jìn)入調(diào)試模式。
[0039]同樣在常規(guī)調(diào)試系統(tǒng)10中,為調(diào)試器分配通信接口,諸如專用UART接口。專用UART 接口用于從主機(jī)計(jì)算設(shè)備12接收命令并且將信息從目標(biāo)系統(tǒng)50傳輸回主機(jī)計(jì)算設(shè)備12。 [0040] 常規(guī)調(diào)試系統(tǒng)10中的存儲(chǔ)器空間也必須專用于調(diào)試器。在軟件中實(shí)現(xiàn)存根方法的 所有功能。附加的軟件指令存儲(chǔ)在目標(biāo)系統(tǒng)50的存儲(chǔ)器模塊56中。
[0041]目標(biāo)系統(tǒng)50的某些硬件資源對(duì)調(diào)試器的專用造成設(shè)計(jì)低效并且對(duì)目標(biāo)系統(tǒng)50帶 來令人不快的限制。例如,將中斷資源專用于調(diào)試器意味著專用中斷資源被保存并且無法 由軟件從業(yè)者用于另一個(gè)目的。據(jù)此,將UART資源專用于調(diào)試系統(tǒng)意味著至少在調(diào)試會(huì)話 期間UART資源無法由目標(biāo)系統(tǒng)50使用。進(jìn)一步地,由于軟件從業(yè)者無法預(yù)測將何時(shí)需要調(diào) 試,UART資源必須通常保持被分配并且不在目標(biāo)系統(tǒng)50的正常操作中使用。
[0042]作為另一個(gè)示例,存根方法將調(diào)試軟件指令放置在存儲(chǔ)器中。在DSU 58沒有在DSU 58中存儲(chǔ)可選DSU軟件66的情況下,調(diào)試軟件指令替代地必須存儲(chǔ)在存儲(chǔ)器模塊56中。在這 些情況下,用于調(diào)試軟件指令的存儲(chǔ)器不可用于實(shí)現(xiàn)程序60。在目標(biāo)系統(tǒng)具有非常有限的 微處理器的情況下,丟失用于目標(biāo)程序60的存儲(chǔ)器空間會(huì)變得非常重要。存根方法的另一 個(gè)限制是要求用存根62替換程序60的正常指令。為了實(shí)現(xiàn)該替換,存儲(chǔ)器模塊56必須包括 程序60存儲(chǔ)在其中的動(dòng)態(tài)可重寫存儲(chǔ)器,諸如隨機(jī)存取存儲(chǔ)器(RAM)。
[0043] 常規(guī)調(diào)試系統(tǒng)10也是非常復(fù)雜的。在存根方法中,實(shí)現(xiàn)調(diào)試操作需要許多步驟。例 如,必須用非法指令替換正常指令,必須保存上下文,調(diào)試操作必須訪問處理器52的特定狀 態(tài),并且然后必須恢復(fù)被替換的原始正常指令。當(dāng)退出存根方法時(shí),也必須恢復(fù)處理器52的 原始狀態(tài)(例如,上下文)信息。存根方法的這種復(fù)雜實(shí)現(xiàn)方式非常低效。
[0044] 圖2是具有改善的調(diào)試支持單元實(shí)施例158的改善的調(diào)試系統(tǒng)100。改善的調(diào)試系 統(tǒng)100具有包括主機(jī)和目標(biāo)的至少兩個(gè)計(jì)算設(shè)備。主機(jī)是計(jì)算設(shè)備112,諸如個(gè)人計(jì)算機(jī)、膝 上計(jì)算機(jī)、平板、智能電話或某個(gè)其他計(jì)算設(shè)備;目標(biāo)是目標(biāo)系統(tǒng)150,該目標(biāo)系統(tǒng)可以是指 向零售設(shè)備、制造設(shè)備以及工業(yè)設(shè)備、軍用設(shè)備、消費(fèi)者設(shè)備的嵌入式計(jì)算設(shè)備、或者包括 基于處理器的系統(tǒng)的幾乎任何其他種類的設(shè)備。在一些情況下,在圖2中展示的目標(biāo)系統(tǒng) 150可以表示整個(gè)設(shè)備,該目標(biāo)系統(tǒng)具有為了簡潔而未示出的其他特征。例如,在圖2中展示 的目標(biāo)系統(tǒng)150可以是工業(yè)機(jī)器、建筑系統(tǒng)(諸如空調(diào)或加熱單元)、汽車或某個(gè)其他整體系 統(tǒng)。在其他實(shí)施例中,在圖2中展示的目標(biāo)系統(tǒng)150可以是具有在1C封裝體中形成的一個(gè)或 多個(gè)裸片的集成電路(1C)。在另外其他實(shí)施例中,在圖2中展示的目標(biāo)系統(tǒng)150可以是在單 個(gè)裸片上形成的結(jié)構(gòu)集。
[0045] 主機(jī)計(jì)算設(shè)備112包括硬件模塊114和存儲(chǔ)器模塊116。主機(jī)計(jì)算設(shè)備112可以接收 輸入并且通過一個(gè)或多個(gè)人類接口設(shè)備(HID)(諸如呈現(xiàn)設(shè)備128(例如,顯示器、LED、振動(dòng) 器或其他觸覺反饋設(shè)備)、第一輸入設(shè)備130 (例如,鍵盤、小鍵盤或麥克風(fēng))以及第二輸入設(shè) 備132 (例如,鼠標(biāo)、觸控板、觸摸屏、智能筆等等))提供輸出。
[0046] 目標(biāo)系統(tǒng)150包括處理器152、支持邏輯154、存儲(chǔ)器模塊156以及改善的調(diào)試支持 單元(DSU) 158。在一些情況下,存儲(chǔ)器模塊156完全在圖2中示出的目標(biāo)系統(tǒng)150內(nèi)部、完全 在目標(biāo)系統(tǒng)150外部或者部分在目標(biāo)系統(tǒng)150內(nèi)部并且部分在其外部。
[0047]在一些情況下,處理器152是具有根據(jù)高級(jí)RISC機(jī)器(ARM)設(shè)計(jì)形成的核心的精簡 指令集計(jì)算機(jī)(RISC)設(shè)備。如圖2所示,處理器152包括具有多個(gè)級(jí)的多級(jí)指令流水線。第一 流水線級(jí)170是取出級(jí),該取出級(jí)負(fù)責(zé)從存儲(chǔ)器模塊156檢索軟件指令。第二流水線級(jí)172是 解碼級(jí)。解碼級(jí)負(fù)責(zé)解析在第一流水線級(jí)170中取出的軟件指令。解碼級(jí)將包括用于標(biāo)識(shí)、 分組或以其他方式區(qū)別軟件指令的字節(jié)、半字節(jié)、對(duì)、其他位分組或單獨(dú)位的解碼邏輯176。 解碼級(jí)還可以包括分支邏輯174和地址生成邏輯178。分支邏輯174執(zhí)行與跳轉(zhuǎn)或分支軟件 指令相關(guān)聯(lián)的前瞻動(dòng)作,而地址發(fā)生邏輯178處理軟件指令的在存儲(chǔ)器模塊156中檢索或存 儲(chǔ)數(shù)據(jù)的多個(gè)部分。第三流水線級(jí)180是執(zhí)行單元級(jí)。執(zhí)行單元級(jí)可以包括一個(gè)或多個(gè)算術(shù) 邏輯單元(ALU)、乘法單元、比較器單元或其他執(zhí)行邏輯。第四流水線級(jí)182是負(fù)責(zé)在存儲(chǔ)器 模塊156中存儲(chǔ)(即,寫回)在執(zhí)行單元中生成的數(shù)據(jù)的回寫單元。
[0048] 還考慮了處理器152的其他架構(gòu)。其他架構(gòu)可以是被配置成用于以不同的方式操 作的RISC架構(gòu)或處理器。在一些情況下,例如,像發(fā)明人設(shè)想的,處理器152可以被安排在具 有五個(gè)狀態(tài)的執(zhí)行流水線中:預(yù)取狀態(tài)、取出狀態(tài)、解碼狀態(tài)、存儲(chǔ)器訪問狀態(tài)以及執(zhí)行狀 ??τ 〇
[0049] 改善的DSU 158包括調(diào)試控制器222、調(diào)試控制寄存器202、索引寄存器組(即,寫入 啟用寄存器196、地址寄存器198以及數(shù)據(jù)寄存器200)以及測試端口 194。調(diào)試控制寄存器 202可以包括離散部分(例如,單個(gè)位或兩個(gè)或更多位的分組),諸如調(diào)試模式啟用/禁用部 分204、流水線沖洗狀態(tài)部分206、執(zhí)行停止控制部分208、陷阱處理程序控制/狀態(tài)部分210 以及其他部分。
[0050] 可以在改善的DSU 158與處理器152之間傳遞核心控制信號(hào)184。在一些實(shí)施例中, 可以在單個(gè)導(dǎo)管中傳遞所有核心控制信號(hào)184。在其他實(shí)施例中,可以在調(diào)試控制器222與 處理器152的執(zhí)行流水線的各個(gè)級(jí)之間傳遞核心控制信號(hào)184中的某些信號(hào)。例如,可選取 出級(jí)控制信號(hào)186在調(diào)試控制器222與第一流水線級(jí)170之間傳遞,可選解碼級(jí)控制信號(hào)188 在調(diào)試控制器222與第二流水線級(jí)172之間傳遞,可選執(zhí)行單元控制信號(hào)190在調(diào)試控制器 222與第三流水線級(jí)180之間傳遞,可選回寫級(jí)控制信號(hào)192在調(diào)試控制器222與第四流水線 級(jí)182之間傳遞。這些及其他控制信號(hào)可以在調(diào)試控制器222與處理器152中所展示的這些 級(jí)中的一個(gè)或多個(gè)級(jí)之間傳遞。在一些情況下,這種信號(hào)中的一個(gè)或多個(gè)信號(hào)可以是單向 的;在其他情況下,這種信號(hào)中的一個(gè)或多個(gè)信號(hào)是雙向或多向的。
[00511其他可選信號(hào)也可以在改善的DSU 158的結(jié)構(gòu)之間傳遞。例如,調(diào)試控制寄存器信 號(hào)a在調(diào)試控制器222與調(diào)試控制寄存器202之間傳遞。數(shù)據(jù)寄存器控制信號(hào)218、地址寄存 器控制信號(hào)216以及寫入啟用寄存器控制信號(hào)214可以可選地在調(diào)試控制器222與對(duì)應(yīng)的索 引寄存器(即,數(shù)據(jù)寄存器200、地址寄存器198以及寫入啟用寄存器196)之間傳遞。
[0052]測試端口 194包括通信收發(fā)器電路。在一些實(shí)施例中,測試端口 194符合標(biāo)準(zhǔn)化協(xié) 議,該標(biāo)準(zhǔn)化協(xié)議可以包括硬件協(xié)議、軟件協(xié)議或硬件和軟件協(xié)議。例如,測試端口 194可以 符合IEEE的協(xié)議,諸如聯(lián)合測試訪問小組(JTAG)。在測試端口 194與調(diào)試控制器222之間傳 遞控制和數(shù)據(jù)信號(hào)212。此外,測試端口 194可以經(jīng)由第一通信介質(zhì)134a耦合到主機(jī)計(jì)算設(shè) 備112。第一通信介質(zhì)134a可以是串行通信介質(zhì)(例如,RS-232、USB等等)或多路通信介質(zhì) (例如,并行)。第一通信介質(zhì)134a可以是有線的或無線的(例如,藍(lán)牙、紅外(IR)、蜂窩等 等)。相應(yīng)地,在一些情況下,主機(jī)計(jì)算設(shè)備112和目標(biāo)系統(tǒng)150可以遠(yuǎn)離彼此、但是相對(duì)靠近 彼此。在其他情況下,主機(jī)計(jì)算設(shè)備112和目標(biāo)系統(tǒng)150可以彼此分離開很大的距離(例如, 在不同的房間、不同的城市等等)。如在此所使用的,測試端口 194可以另外被稱為通信收發(fā) 器電路、測試端口收發(fā)器電路、通信測試端口等等。
[0053 ]目標(biāo)系統(tǒng)150的支持邏輯154可以包括對(duì)于目標(biāo)系統(tǒng)150的運(yùn)作有用的任何類型的 邏輯。例如,支持邏輯154可以包括通用輸入/輸出(GPI0)、模數(shù)(A2D)轉(zhuǎn)換器和數(shù)模(D2A)轉(zhuǎn) 換器、加速度計(jì)或其他微電子機(jī)械系統(tǒng)(MEMS)、收發(fā)器、時(shí)鐘、計(jì)數(shù)器、防篡改電路、電源、加 密/解密或其他安全邏輯、用于向和從在目標(biāo)系統(tǒng)150內(nèi)部或外部的存儲(chǔ)器傳遞數(shù)據(jù)的存儲(chǔ) 器控制器等等。在一些情況下,目標(biāo)系統(tǒng)150可選地經(jīng)由支持邏輯154、經(jīng)由第二通信介質(zhì) 134b耦合到主機(jī)計(jì)算設(shè)備112。第二通信介質(zhì)134b可以類似于第一通信介質(zhì)(即,串行、多 路、有線、無線等等)。
[0054] 在一些實(shí)施例中,專門用硬件中實(shí)現(xiàn)整個(gè)改善的DSU 158。也就是,改善的DSU 158 的所有結(jié)構(gòu)由不具有任何軟件的電子電路組成。在其他實(shí)施例中,用軟件實(shí)現(xiàn)改善的DSU 158的某些部分。在這些情況下,調(diào)試控制器222可以包括可選處理器164和用于存儲(chǔ)改善的 DSU軟件166的可選存儲(chǔ)器。在這兩種情況下(即,專門用硬件實(shí)現(xiàn)改善的DSU 158并且改善 的DSU 158具有用軟件實(shí)現(xiàn)的部分),可以包括可選邏輯模塊168??蛇x邏輯模塊168可以包 括時(shí)鐘邏輯、計(jì)數(shù)邏輯、定時(shí)器邏輯、比較器邏輯、數(shù)學(xué)邏輯或任何其他邏輯。
[0055]調(diào)試控制器222可以在此被稱為調(diào)試控制電路、調(diào)試電路或某個(gè)其他類似的術(shù)語。 可以使用例如組合邏輯將調(diào)試控制器222實(shí)現(xiàn)為狀態(tài)機(jī)。除其他事項(xiàng)之外,調(diào)試控制器222 被安排成用于在處理器152與改善的DSU 158的至少一個(gè)寄存器之間傳遞信號(hào)。
[0056]調(diào)試軟件程序126可以存儲(chǔ)在存儲(chǔ)器模塊116中。經(jīng)由在主機(jī)計(jì)算設(shè)備112上運(yùn)行 的調(diào)試軟件程序126,軟件從業(yè)者可以向目標(biāo)系統(tǒng)150發(fā)送調(diào)試命令并且從目標(biāo)系統(tǒng)150接 收信息。調(diào)試命令準(zhǔn)許軟件從業(yè)者執(zhí)行某些調(diào)試功能,諸如停止處理器152、讀取或修改處 理器152的狀態(tài)、讀取或修改存儲(chǔ)器模塊156中的信息和將處理器152恢復(fù)到運(yùn)行狀態(tài)。 [0057]通常來說,軟件從業(yè)者實(shí)現(xiàn)具有三個(gè)組成部分的調(diào)試操作。第一組成部分準(zhǔn)許軟 件從業(yè)者進(jìn)入調(diào)試模式,該調(diào)試模式停止目標(biāo)設(shè)備程序軟件160的正常流程。第二組成部分 準(zhǔn)許軟件從業(yè)者訪問處理器152的一個(gè)或多個(gè)狀態(tài)。例如,軟件從業(yè)者可以讀取或修改通用 寄存器、控制寄存器、程序計(jì)數(shù)器寄存器等等。第三組成部分準(zhǔn)許軟件從業(yè)者退出調(diào)試模 式。當(dāng)退出調(diào)試模式時(shí),在一些情況下,恢復(fù)程序狀態(tài)、上下文以及存儲(chǔ)器數(shù)據(jù)中的一些或 全部,從而使得目標(biāo)設(shè)備程序軟件160將在與進(jìn)入調(diào)試模式時(shí)相同的程序情況下恢復(fù)。
[0058] 與在常規(guī)調(diào)試系統(tǒng)10(圖1)上執(zhí)行的常規(guī)存根方法相比,改善的調(diào)試系統(tǒng)100提供 了許多優(yōu)點(diǎn)。例如,改善的調(diào)試系統(tǒng)1〇〇是簡單得多的實(shí)現(xiàn)方式。例如,改善的調(diào)試系統(tǒng)1〇〇 的一些實(shí)施例完全在硬件中形成。在這些實(shí)施例中,可以通過僅僅配置少量的硬件寄存器 (例如,包括一個(gè)控制寄存器和三個(gè)索引寄存器的四個(gè)寄存器)執(zhí)行調(diào)試。
[0059] 改善的調(diào)試系統(tǒng)100的硬件寄存器靠近處理器152形成。在一些情況下,寄存器與 處理器152在同一個(gè)集成電路封裝體內(nèi)、與處理器152在同一裸片上或者在某個(gè)其他區(qū)域中 形成。在處理器152是微處理器的情況下,例如,可以在微處理器內(nèi)實(shí)現(xiàn)這些少量的寄存器。 在這些情況下,可以在微處理器內(nèi)形成整個(gè)改善的DSU 158??商娲?,在微處理器中實(shí)現(xiàn) 改善的DSU 158的僅僅一些部分(諸如這些少量的硬件寄存器)。
[0060] 如在此所使用的,改善的調(diào)試系統(tǒng)100的硬件寄存器還可以可互換地被稱為改善 的DSU 158的多個(gè)專用調(diào)試寄存器、調(diào)試寄存器、專用寄存器等等。硬件寄存器用于幫助對(duì) 由處理器152執(zhí)行的軟件程序進(jìn)行調(diào)試。
[0061] 使用硬件寄存器,軟件從業(yè)者無需指導(dǎo)用非法指令(例如,存根62)替換正常的程 序指令。替代地,可以加載某些寄存器值,并且由于硬件寄存器與處理器152的各個(gè)部分(諸 如執(zhí)行流水線)集成在一起,軟件從業(yè)者能夠指導(dǎo)目標(biāo)設(shè)備程序軟件160的執(zhí)行。軟件從業(yè) 者可以停止執(zhí)行、重新開始執(zhí)行、從存儲(chǔ)器或寄存器檢索數(shù)據(jù)值、將數(shù)據(jù)值存儲(chǔ)在存儲(chǔ)器或 寄存器中或執(zhí)行其他動(dòng)作。此外,軟件從業(yè)者無需如在存根方法中所必需的那樣當(dāng)執(zhí)行停 止時(shí)指導(dǎo)操作來保存處理器152的上下文或當(dāng)重新開始執(zhí)行時(shí)指導(dǎo)操作來恢復(fù)處理器152 的上下文。
[0062]改善的調(diào)試系統(tǒng)100的另一個(gè)優(yōu)點(diǎn)是不存在專用資源。改善的DSU 158包括用于實(shí) 現(xiàn)調(diào)試操作的少量的硬件寄存器。軟件從業(yè)者無需使用目標(biāo)系統(tǒng)150的其他硬件資源執(zhí)行 目標(biāo)系統(tǒng)150的期望操作。例如,目標(biāo)系統(tǒng)150的以其他方式可用的通信端口無需專用于調(diào) 試,這不同于常規(guī)調(diào)試系統(tǒng)10。附加的優(yōu)點(diǎn)與存儲(chǔ)器相關(guān)聯(lián)。在改善的調(diào)試系統(tǒng)100中,與目 標(biāo)系統(tǒng)150相關(guān)聯(lián)的存儲(chǔ)器可以全部用于實(shí)現(xiàn)并支持目標(biāo)設(shè)備程序軟件160,并且無需額外 的存儲(chǔ)器來支持調(diào)試操作。此外,由于無需存根62,目標(biāo)系統(tǒng)150可以在任何類型的存儲(chǔ)器 (包括易失性存儲(chǔ)器,諸如RAM,和非易失性存儲(chǔ)器,諸如只讀存儲(chǔ)器(ROM))中存儲(chǔ)目標(biāo)設(shè)備 程序軟件160。
[0063]改善的調(diào)試系統(tǒng)100的硬件寄存器可以被分組為兩個(gè)集合:索引寄存器和控制寄 存器。在圖2的非限制性實(shí)施例中,形成三個(gè)索引寄存器并且形成一個(gè)控制寄存器。在其他 實(shí)施例中,形成更多或更少索引寄存器。在其他實(shí)施例中,形成更多或更少控制寄存器。 [0064]圖2的三個(gè)索引寄存器包括:第一索引寄存器,即,寫入啟用寄存器196;第二索引 寄存器,即,地址寄存器198;以及第三索引寄存器,即,數(shù)據(jù)寄存器200。在本實(shí)施例中,寫入 啟用寄存器196是一個(gè)位寬,地址寄存器198是八個(gè)位寬,并且數(shù)據(jù)寄存器是32個(gè)位寬。發(fā)明 人還已經(jīng)設(shè)想了其他配置。例如,在具有16位寬或32位寬地址總線的處理器152中,地址寄 存器198可以被形成為具有相應(yīng)的寬度。據(jù)此,在具有八個(gè)位寬或16位寬數(shù)據(jù)總線的處理器 152中,數(shù)據(jù)寄存器200可以被形成為具有相應(yīng)的寬度。
[0065]圖2的調(diào)試控制寄存器202可以被認(rèn)為是具有四個(gè)位的單個(gè)寄存器、各自具有一個(gè) 位的四個(gè)寄存器,或者控制寄存器組可以具有更多或更少寄存器、更多或更少位等等的某 個(gè)其他配置。在調(diào)試控制寄存器202中,第一控制部分是調(diào)試模式啟用/禁用部分204,該部 分是一個(gè)位寬并且被安排為被寫入或讀取;第二控制部分是流水線沖洗狀態(tài)部分206,該部 分是一個(gè)位寬并且被安排為只讀;第三控制部分是執(zhí)行停止控制部分208,該部分是一個(gè)位 寬并且被安排為被寫入或讀取;并且第四控制部分是陷阱處理程序控制/狀態(tài)部分210,該 部分是一個(gè)位寬并且被安排為被寫入或讀取。
[0066] 索引寄存器通常用于指示正在調(diào)試處理器152的哪些狀態(tài)??刂萍拇嫫魍ǔS糜?啟用和禁用調(diào)試、與處理器152的執(zhí)行流水線交互、和執(zhí)行其他控制操作。以下將更詳細(xì)地 描述索引寄存器集合和控制寄存器集合兩者。在表1和表2中示出了索引寄存器集合和控制 寄存器集合的示例性而非限制性實(shí)施例。
[0069]表1-索引寄存器的描述
[0071] 表2-控制寄存器的描述
[0072] 在一些實(shí)施例中,改善的調(diào)試系統(tǒng)100的硬件寄存器(例如,表1和表2的硬件寄存 器)可以被改善的DSU 158在軟件從業(yè)者的指導(dǎo)下并且經(jīng)由主機(jī)計(jì)算設(shè)備112寫入、讀取或 只寫入和讀取。例如,軟件從業(yè)者可以經(jīng)由傳遞到呈現(xiàn)設(shè)備128的界面與調(diào)試軟件程序126 交互。界面可以是例如在顯示器上呈現(xiàn)的圖形用戶界面(GUI)。使用一個(gè)或多個(gè)輸入設(shè)備 (諸如第一輸入設(shè)備130和第二輸入設(shè)備132),軟件從業(yè)者可以標(biāo)識(shí)表示這些硬件寄存器中 的一個(gè)或多個(gè)硬件寄存器的數(shù)據(jù)。以此方式,軟件從業(yè)者可以指導(dǎo)將某些值寫入這些硬件 寄存器中的一個(gè)或多個(gè)硬件寄存器,并且軟件從業(yè)者可以詢問存儲(chǔ)在這些硬件寄存器中的 一個(gè)或多個(gè)硬件寄存器中的這些值。軟件從業(yè)者可以開始、停止并且重新開始執(zhí)行處理器 152。軟件從業(yè)者可以讀取值和將其寫入通用寄存器、控制寄存器、狀態(tài)寄存器以及處理器 152的任何上下文的寄存器。此外,軟件從業(yè)者可以讀取值和將其寫入存儲(chǔ)器模塊156。軟件 從業(yè)者可以通過讀取或?qū)懭肱c支持邏輯154相關(guān)聯(lián)的數(shù)據(jù)、通過改變目標(biāo)設(shè)備程序軟件160 的指令或執(zhí)行與目標(biāo)系統(tǒng)150相關(guān)聯(lián)的任何其他動(dòng)作來更改目標(biāo)系統(tǒng)150的操作。換言之, 在一些實(shí)施例中,軟件從業(yè)者可以訪問存儲(chǔ)器模塊156的每個(gè)位、處理器152的每個(gè)寄存器 的每個(gè)位、改善的DSU 158的每個(gè)寄存器的每個(gè)位、與支持邏輯154相關(guān)聯(lián)的數(shù)據(jù)的每個(gè)位 等等。以此方式,改善的調(diào)試系統(tǒng)100提供無法由圖1的常規(guī)調(diào)試系統(tǒng)提供的低成本、非常有 效且高效的調(diào)試系統(tǒng)。
[0073]在一些實(shí)施例中,可以經(jīng)由在主機(jī)計(jì)算設(shè)備112上執(zhí)行調(diào)試軟件程序126來實(shí)施軟 件從業(yè)者的調(diào)試指導(dǎo)。經(jīng)由第一通信介質(zhì)134a通過測試端口 194雙向地傳遞指令和數(shù)據(jù)???以全部在改善的DSU 158內(nèi)、全部在改善的DSU 158外部或部分在改善的DSU 158內(nèi)并且部 分在其外部配置的測試端口 194與調(diào)試控制器222交互。以此方式,調(diào)試控制器222由軟件從 業(yè)者指示讀取這些硬件寄存器的某些硬件寄存器、寫入這些硬件寄存器的某些硬件寄存 器、和讀取并寫入這些硬件寄存器的某些硬件寄存器。
[0074] 在一些情況下,這些硬件寄存器中的一個(gè)或多個(gè)硬件寄存器可以由處理器152在 由處理器152執(zhí)行的軟件(諸如目標(biāo)設(shè)備程序軟件160)的指導(dǎo)下寫入或讀取并寫入。例如, 如果軟件從業(yè)者預(yù)料到由目標(biāo)系統(tǒng)150的操作所引起的具體挑戰(zhàn),軟件從業(yè)者可以將執(zhí)行 非常特定的動(dòng)作的軟件指令包括在目標(biāo)設(shè)備程序軟件160中。例如,在執(zhí)行目標(biāo)設(shè)備程序軟 件160期間的某些點(diǎn),軟件從業(yè)者可以寫入將加載這些硬件寄存器中的某些硬件寄存器的 軟件指令以便強(qiáng)制讀取特定的寄存器或存儲(chǔ)器;并且軟件指令還將強(qiáng)制將存儲(chǔ)在那些寄存 器中的值經(jīng)由第一通信介質(zhì)134a或第二通信介質(zhì)134b輸出到主機(jī)計(jì)算設(shè)備112。還設(shè)想用 于配置、操作并以其他方式利用改善的DSU 158的調(diào)試特征的其他程序操作。
[0075]寫入啟用寄存器196指示軟件從業(yè)者所指示的調(diào)試操作是讀取操作還是寫入操 作。當(dāng)?shù)谝恢?例如,如表1中所展示的"1")被寫入到寫入啟用寄存器196時(shí),硬件寄存器將 執(zhí)行寫入操作。當(dāng)?shù)诙?例如,如表1中所展示的"〇")被寫入到寫入啟用寄存器196時(shí),硬 件寄存器將執(zhí)行讀取操作。具體的寫入或讀取操作可以被指向處理器152的寄存器、存儲(chǔ)器 模塊156的一個(gè)或多個(gè)地址、支持邏輯154的存儲(chǔ)器映射硬件設(shè)備、或某個(gè)其他可訪問的位 置。
[0076] 地址寄存器198指示將調(diào)試處理器152的哪個(gè)狀態(tài)。在一些情況下,如表2所示,例 如,地址寄存器198可以是只讀的。在其他情況下,也可以讀取地址寄存器198。地址寄存器 198可以接受具有N個(gè)位的地址值。N個(gè)位可以表示全地址、部分地址或多個(gè)地址。在表1的實(shí) 施例中,值N被定義為8以便指示八個(gè)位寬的地址。在其他實(shí)施例中,N可以是4、16、32、64或 某個(gè)其他值。在一些實(shí)施例中,N是八的整數(shù)倍。
[0077]將調(diào)試的處理器152的狀態(tài)可以指示在處理器152的具體操作模式下可訪問的寄 存器組或其他存儲(chǔ)器映射地址。例如,如果處理器152被安排成用于在監(jiān)管程序模式和非監(jiān) 管程序模式下操作,處理器152可以基于操作模式訪問不同的寄存器。以此方式,處理器152 可訪問的所有寄存器可以是基于數(shù)字地址單獨(dú)地或結(jié)合操作模式或某個(gè)其他索引值可唯 一定址的。當(dāng)軟件從業(yè)者指導(dǎo)對(duì)地址寄存器198的寫入操作時(shí),軟件從業(yè)者向改善的DSU 158提供將讀取或?qū)懭胛ㄒ豢蓸?biāo)識(shí)的寄存器、存儲(chǔ)器地址或存儲(chǔ)器映射地址的指導(dǎo)。在一些 實(shí)施例中,改善的DSU 158的具體特征準(zhǔn)許自動(dòng)增量地址寄存器198、自動(dòng)減量地址寄存器 198或以其他方式自動(dòng)調(diào)整地址寄存器198的內(nèi)容以使寫入或讀取數(shù)據(jù)更高效。
[0078] 在一些實(shí)施例中,數(shù)據(jù)寄存器200是只寫寄存器。在其他實(shí)施例中,數(shù)據(jù)寄存器200 是只讀寄存器。在另外其他實(shí)施例中,諸如表1的實(shí)施例,數(shù)據(jù)寄存器200是讀/寫寄存器。當(dāng) 軟件從業(yè)者希望向寄存器寫入數(shù)據(jù)時(shí),從業(yè)者將標(biāo)識(shí)有待寫入的數(shù)據(jù),并且調(diào)試軟件程序 126將數(shù)據(jù)從主機(jī)計(jì)算設(shè)備112傳遞到改善的DSU 158,該改善的DSU將然后將數(shù)據(jù)加載數(shù)據(jù) 寄存器200中。在一些情況下,改善的DSU 158可以直接向存儲(chǔ)器模塊156按照改善的DSU 158與存儲(chǔ)器模塊156之間的虛線所指示的那樣讀取和寫入數(shù)據(jù)。在這些情況下或可替代地 在其他情況下,改善的DSU 158可以通過在執(zhí)行流水線的具體級(jí)向處理器152中插入指令來 指導(dǎo)對(duì)存儲(chǔ)器156讀取和寫入??梢栽谝恍?shí)施例中經(jīng)由電子電路執(zhí)行從存儲(chǔ)器模塊156讀 取并且向存儲(chǔ)器模塊156寫入數(shù)據(jù)的操作。在其他實(shí)施例中,其中,調(diào)試控制器222包括可選 處理器164和改善的DSU軟件166,可以程序地執(zhí)行在存儲(chǔ)器模塊156中讀取和寫入數(shù)據(jù)(例 如,通過寫入在第二流水線級(jí)172(即,解碼級(jí))解碼并且由第三流水線級(jí)180(即,執(zhí)行級(jí))執(zhí) 行的的軟件指令)。
[0079] 控制寄存器組中的單獨(dú)寄存器的操作還可以由軟件從業(yè)者經(jīng)由主機(jī)計(jì)算設(shè)備112 或程序地通過在目標(biāo)設(shè)備程序軟件160或某個(gè)其他軟件中定義的指令指導(dǎo)。在一些實(shí)施例 中,如表2中所定義的,例如,控制寄存器組中的單獨(dú)寄存器被形成為單個(gè)調(diào)試控制寄存器 202的離散部分(例如,相鄰位)。
[0080] 在一些實(shí)施例中,調(diào)試模式啟用/禁用部分204可以僅由改善的DSU 158使用例如 調(diào)試控制器222訪問。在一些實(shí)施例中,軟件從業(yè)者必須指導(dǎo)改善的DSU 158經(jīng)由主機(jī)計(jì)算 設(shè)備112訪問調(diào)試模式啟用/禁用部分204。在其他實(shí)施例中,處理器152所執(zhí)行的軟件指令 可以指導(dǎo)改善的DSU 158訪問調(diào)試模式啟用/禁用部分204。在這些或其他實(shí)施例中,可以在 任何時(shí)間寫入調(diào)試模式啟用/禁用部分204,包括目標(biāo)系統(tǒng)150的初始化(例如,在復(fù)位操作 時(shí)或在其期間)。因?yàn)楦纳频恼{(diào)試系統(tǒng)100配置有調(diào)試模式啟用/禁用部分204,所以無需像 其在圖1的常規(guī)調(diào)試系統(tǒng)10中那樣的專用中斷或錯(cuò)誤處理程序。
[0081] 當(dāng)調(diào)試模式啟用/禁用部分204被設(shè)定為第一值(例如,"1")時(shí),處理器152的執(zhí)行 流水線暫停。流水線暫停信號(hào)可以被作為調(diào)試控制寄存器信號(hào)220之一、作為核心控制信號(hào) 184之一并且此外或可替代地經(jīng)由某個(gè)其他裝置傳遞。當(dāng)調(diào)試模式啟用/禁用部分204被設(shè) 定為第二值(例如,"〇")時(shí),處理器152的執(zhí)行流水線重新開始。
[0082] 當(dāng)調(diào)試模式啟用/禁用部分204被設(shè)定為第一值時(shí),還可以創(chuàng)建其他信號(hào)并且將其 作為一個(gè)或多個(gè)調(diào)試控制寄存器信號(hào)220或經(jīng)由某個(gè)其他裝置傳遞。例如,在一些實(shí)施例 中,除流水線暫停信號(hào)之外,還生成流水線清除或沖洗信號(hào)。流水線暫停信號(hào)暫停從存儲(chǔ)器 模塊156向處理器152發(fā)出新指令。此外,在一些實(shí)施例中,已經(jīng)存在于執(zhí)行流水線中的軟件 指令被允許引退。這個(gè)操作允許在已知的、可預(yù)測的點(diǎn)停止處理器152。也就是,可以知道哪 個(gè)指令是有待在處理器152停止并且調(diào)試器開始時(shí)全部完成的最后一個(gè)指令。以此方式?jīng)_ 洗執(zhí)行流水線允許軟件從業(yè)者從已知開始點(diǎn)執(zhí)行調(diào)試操作。也就是,處理器152可以被置于 已知狀態(tài),從而使得調(diào)試操作是可預(yù)測的并且不受在調(diào)試器開始時(shí)執(zhí)行的延遲或部分指令 影響。
[0083] 在一些實(shí)施例中,在沖洗執(zhí)行流水線之后,禁用流水線暫停信號(hào)和流水線清除信 號(hào)。通過禁用這兩個(gè)信號(hào),軟件從業(yè)者可以使用處理器512執(zhí)行將輔助調(diào)試操作的軟件指 令。也就是,軟件從業(yè)者可以經(jīng)由調(diào)試軟件程序126手動(dòng)地將軟件指令從主機(jī)計(jì)算設(shè)備112 傳遞通過改善的DSU 158并進(jìn)入處理器152。在一些情況下,全部軟件指令在初始級(jí)(諸如第 一流水線級(jí)170(即,取出級(jí)))被傳遞到處理器152中。在其他情況下,軟件指令的各部分被 傳遞到處理器152的執(zhí)行流水線的不同級(jí)(例如,第二流水線級(jí)172(即,解碼級(jí))、第三流水 線級(jí)180(即,執(zhí)行級(jí))、第四流水線級(jí)182(即,回寫級(jí))或某個(gè)其他級(jí))中。
[0084]調(diào)試控制寄存器202的流水線沖洗狀態(tài)部分206可以是相對(duì)于改善的DSU 158的只 讀部分和相對(duì)于處理器152的只寫部分。在其他情況下,改善的DSU 158和處理器152兩者可 以讀取流水線沖洗狀態(tài)部分206。在其他情況下,改善的DSU 158和處理器152兩者可以寫入 流水線沖洗狀態(tài)部分206。流水線沖洗狀態(tài)部分206在調(diào)試模式已經(jīng)被斷言之后(例如,將調(diào) 試模式啟用/禁用部分204設(shè)定為第一值)提供執(zhí)行流水線的沖洗操作的狀態(tài)指示。當(dāng)沖洗 操作正在進(jìn)行時(shí),流水線沖洗狀態(tài)部分206將指示第一值。在沖洗操作完成之后,流水線沖 洗狀態(tài)部分206將指示第二值。以此方式,調(diào)試控制器222可以輪詢流水線沖洗狀態(tài)部分206 并且保持空閑直至流水線沖洗狀態(tài)部分206由處理器加載有第二值。一旦流水線被沖洗,處 理器152就處于調(diào)試模式并且可以被調(diào)試。
[0085]執(zhí)行停止控制部分208(即,表2的實(shí)施例的停止陷阱(StopTrap)信號(hào))用于啟用和 禁用可以在目標(biāo)設(shè)備程序軟件160的具體地址停止正常程序執(zhí)行的特征。此外或可替代地, 執(zhí)行停止控制部分208可以用于實(shí)現(xiàn)單步調(diào)試模式。當(dāng)設(shè)定這個(gè)特征時(shí),調(diào)試控制器222將 與處理器152合作以便當(dāng)遇到陷阱或其他執(zhí)行停止控制信號(hào)時(shí)停止程序執(zhí)行或以其他方式 啟用這種特征。在一些情況下,改善的DSU 158安排有一個(gè)或多個(gè)可配置的或以其他方式用 戶定義的執(zhí)行停止控制信號(hào)。
[0086]在一個(gè)或多個(gè)非限制性實(shí)施例中,執(zhí)行停止控制部分208生成以與用調(diào)試模式啟 用/禁用部分204生成的流水線暫停和流水線清除信號(hào)類似方式實(shí)現(xiàn)的指令陷阱信號(hào)。通過 將第一或第二值加載到執(zhí)行停止控制部分208中,處理器152將阻止新指令進(jìn)入執(zhí)行流水線 并且當(dāng)確定執(zhí)行停止?fàn)顩r時(shí)(例如,陷阱、具體的中斷、用戶定義的狀況等等)處理器152將 準(zhǔn)許當(dāng)前指令從執(zhí)行流水線引退。以此方式,軟件從業(yè)者所產(chǎn)生的或者作為目標(biāo)設(shè)備程序 軟件160的一部分執(zhí)行的每個(gè)軟件指令進(jìn)入執(zhí)行流水線、導(dǎo)致執(zhí)行停止?fàn)顩r、暫停執(zhí)行流水 線并且被準(zhǔn)許引退。為了調(diào)試"下一個(gè)"指令,改善的DSU 158將用目標(biāo)設(shè)備程序軟件160或 另一個(gè)程序的下一個(gè)序列地址設(shè)定指令間斷陷阱。
[0087]調(diào)試控制寄存器202的陷阱處理程序控制/狀態(tài)部分210用于控制陷阱處理操作。 在表2中所展示的實(shí)施例中,陷阱處理程序控制/狀態(tài)部分210(即,陷阱掛起)可以被讀取或 寫入。在不同實(shí)施例中可以用其他方式實(shí)現(xiàn)陷阱處理程序控制/狀態(tài)部分210。當(dāng)沖洗執(zhí)行 流水線時(shí),處理器152可以將陷阱處理程序控制/狀態(tài)部分210設(shè)定為第一值(例如,"1")以 便指示處理器152在陷阱處理程序中停止并且已經(jīng)進(jìn)入調(diào)試模式。這個(gè)第一值可以由改善 的DSU 158讀取以便獲知處理器152已經(jīng)進(jìn)入調(diào)試模式。當(dāng)改善的DSU 158在陷阱處理程序 控制/狀態(tài)部分210中讀取第二值(例如,"0")時(shí),改善的DSU 158將知道處理器152尚未停止 并且未處于調(diào)試模式。在一些情況下,當(dāng)調(diào)試模式由軟件從業(yè)者或以其他方式通過改善的 DSU 158指導(dǎo)時(shí),改善的DSU 158將輪詢陷阱處理程序控制/狀態(tài)部分210并且在陷阱處理程 序控制/狀態(tài)部分210被設(shè)定為第二值并且開始其他操作(諸如單步操作)時(shí)、當(dāng)陷阱處理程 序控制/狀態(tài)部分210被處理器152設(shè)定為第一值時(shí)保持空閑。
[0088]當(dāng)改善的DSU 158準(zhǔn)備好開始處理下一個(gè)指令時(shí),該指令可以是目標(biāo)設(shè)備程序軟 件160中的下一個(gè)軟件指令或者可以是由軟件從業(yè)者指導(dǎo)并從主機(jī)計(jì)算設(shè)備112傳遞的另 一個(gè)軟件指令,改善的DSU 158將把第一值寫入到陷阱處理程序控制/狀態(tài)部分210中。處理 器152將讀取陷阱處理程序控制/狀態(tài)部分210中的第一值并且重新開始處理。重新開始處 理可以是另一個(gè)單個(gè)步驟,或者取決于軟件從業(yè)者已經(jīng)如何指導(dǎo)其他硬件寄存器,重新開 始處理可以是自由運(yùn)行處理器152。
[0089]圖3是圖2的改善的調(diào)試支持單元(DSU) 158的數(shù)據(jù)流實(shí)施例300。改善的DSU 158支 持兩種調(diào)試模式:正常調(diào)試模式和單步調(diào)試模式。數(shù)據(jù)流實(shí)施例300中的處理在302開始。
[0090] 在304,使用主機(jī)計(jì)算設(shè)備112或軟件程序(例如,目標(biāo)設(shè)備程序軟件160)的軟件從 業(yè)者致使改善的DSU 158將第一值加載到調(diào)試控制寄存器202的調(diào)試模式啟用/禁用部分 204中。在306,改善的DSU 158將輪詢或以其他方式詢問調(diào)試控制寄存器202的流水線沖洗 狀態(tài)部分206。當(dāng)流水線沖洗狀態(tài)部分206加載有第一值時(shí),改善的DSU 158將保持空閑或以 其他方式不執(zhí)行具體的調(diào)試操作。這由從306處的詢問發(fā)出并且返回到306處的詢問的箭頭 表示。當(dāng)改善的DSU 158確定流水線沖洗狀態(tài)部分206加載有第二值時(shí),改善的DSU 158已經(jīng) 進(jìn)入調(diào)試模式。調(diào)試模式可以是正常調(diào)試模式,或者調(diào)試模式可以是單步調(diào)試模式。在正常 調(diào)試模式下,處理降落到308。在單步調(diào)試模式下,處理降落到312。
[0091] 在308處的支持調(diào)試模式下,允許改善的DSU 158訪問處理器152的架構(gòu)狀態(tài)。也就 是,改善的DSU 158可以讀取或?qū)懭胩幚砥?52的寄存器、存儲(chǔ)器模塊156的地址、支持邏輯 模塊154的存儲(chǔ)器映射地址、或由軟件從業(yè)者確定的其他地址。如果讀取架構(gòu)狀態(tài),例如,改 善的DSU 158將在寫入啟用寄存器196中加載第二值(例如,如表1中定義的"0"),并且改善 的DSU 158將在地址寄存器198中加載具體的地址。接下來,改善的DSU 158將從數(shù)據(jù)寄存器 200檢索值,該值可以經(jīng)由測試端口 194傳遞到主機(jī)計(jì)算設(shè)備112。如果寫入具體狀態(tài),改善 的DSU 158將在寫入啟用寄存器196中加載第一值(例如,如表1中定義的"1")。改善的DSU 158將在地址寄存器198中加載具體的地址并且將具體的數(shù)據(jù)值加載到數(shù)據(jù)寄存器200中。 改善的DSU 158將然后將具體的數(shù)據(jù)值寫入到寄存器、存儲(chǔ)器位置、存儲(chǔ)器映射位置或地址 寄存器198中的地址所定義的其他位置中。在一些情況下,改善的DSU 158將直接從相應(yīng)的 地址讀取和寫入數(shù)據(jù)。在其他情況下,改善的DSU 158將與處理器152的執(zhí)行流水線的一個(gè) 或多個(gè)級(jí)合作做出動(dòng)作以便實(shí)施讀取或?qū)懭搿?br>[0092] 在軟件從業(yè)者或調(diào)試程序指令執(zhí)行具體動(dòng)作以便在308處訪問架構(gòu)狀態(tài)(即,在具 體的地址處讀取/寫入數(shù)據(jù)),處理降落到310。在310,改善的DSU 158將調(diào)試模式啟用/禁用 部分204設(shè)定為第二值。處理器152將重新開始執(zhí)行程序指令。
[0093]在正常調(diào)試模式下,處理在322結(jié)束。然而,認(rèn)識(shí)到數(shù)據(jù)流實(shí)施例300中的處理可以 在302在任何時(shí)間通過設(shè)定調(diào)試控制寄存器202的調(diào)試模式啟用/禁用部分204再次開始。 [0094]在312討論單步調(diào)試模式下的處理。在312,改善的DSU 158將把執(zhí)行停止控制部分 208(8卩,如表2中所定義的停止陷阱)設(shè)定為第一值(例如,"1")。將確定與具體的指令相對(duì) 應(yīng)的具體的指令間斷陷阱、中斷或其他用戶配置的執(zhí)行停止控制,該指令是在進(jìn)入調(diào)試模 式時(shí)處理器152從其處停止的下一個(gè)指令。在圖3中展示為"ibreak"的指令間斷陷阱、中斷 或用戶配置的執(zhí)行停止控制可以是下一個(gè)指令的具體地址或指示符的內(nèi)部寄存器、緩沖 器、或其他儲(chǔ)存庫。
[0095] 在314,改善的DSU 158將把調(diào)試控制寄存器202的調(diào)試模式啟用/禁用部分204設(shè) 定為第二值(例如,如表2中定義的"0")。將調(diào)試模式啟用/禁用部分204設(shè)定為第二值導(dǎo)致 退出正常調(diào)試模式以及重新開始處理器152。在316,改善的DSU 158將詢問、輪詢或以其他 方式檢查調(diào)試控制寄存器202的陷阱處理程序控制/狀態(tài)部分210。當(dāng)陷阱處理程序控制/狀 態(tài)部分210被設(shè)定為第二值(例如,如表1中所定義的"0")時(shí),處理將保持在316的詢問動(dòng)作 中。當(dāng)陷阱處理程序控制/狀態(tài)部分210被處理器152設(shè)定為第一值(例如,如表1中所定義的 "1")時(shí),處理將降落到318。
[0096] 如在此所討論的,直至執(zhí)行流水線被沖洗(即,執(zhí)行流水線中的指令被準(zhǔn)許引退) 并且處理器152準(zhǔn)備好被調(diào)試時(shí)處理器152才將陷阱處理程序控制/狀態(tài)部分210設(shè)定為第 一值。
[0097]在318,改善的DSU 158被準(zhǔn)許驅(qū)動(dòng)架構(gòu)狀態(tài)。這個(gè)驅(qū)動(dòng)架構(gòu)狀態(tài)的動(dòng)作類似于在 308處的處理,其中,改善的DSU 158被準(zhǔn)許讀取、寫入、或讀取并寫入架構(gòu)狀態(tài)。在由軟件從 業(yè)者或調(diào)試軟件執(zhí)行這種調(diào)試之后,在圖3中展示為"ibreak"的指令間斷陷阱、中斷或用戶 配置的執(zhí)行停止控制被設(shè)定為下一個(gè)指令。處理降落到320。
[0098]在320,陷阱處理程序控制/狀態(tài)部分210被改善的DSU 158設(shè)定為第一值。采用這 個(gè)行動(dòng)準(zhǔn)許處理器152重新開始正常指令流程。改善的DSU 158中的處理將返回到316。當(dāng)處 理器152取出下一個(gè)軟件指令時(shí),下一個(gè)軟件指令將導(dǎo)致另一個(gè)陷阱或其他執(zhí)行停止控制 發(fā)生,這在318將作為另一個(gè)單步繼續(xù)循環(huán)。
[0099]為了退出單步調(diào)試模式,改善的DSU 158可以將執(zhí)行停止控制部分208設(shè)定為第二 值并且將調(diào)試模式啟用/禁用部分204設(shè)定為第二值。處理器152將重新開始軟件指令執(zhí)行, 并且改善的DSU 158中的處理將傳遞到322。
[0100] 如在本披露中所使用的,術(shù)語"模塊"指代特定用途集成電路(ASIC)、電子電路、處 理器和操作以便執(zhí)行一個(gè)或多個(gè)軟件或固件程序的存儲(chǔ)器、組合式邏輯電路、或提供參照 模塊描述的功能的其他合適的組件(硬件、軟件、或硬件和軟件)。
[0101] 如在本披露中所使用的,處理器(即,處理單元)是指單獨(dú)地、共享的或在一個(gè)組內(nèi) 的具有一個(gè)或多個(gè)處理核(例如,執(zhí)行流水線)的一個(gè)或多個(gè)處理單元,包括執(zhí)行指令的中 央處理單元(CPU)、數(shù)字信號(hào)處理器(DSP)、微處理器、微控制器、狀態(tài)機(jī)等等。本說明書的實(shí) 施例中的一個(gè)處理器可以與另一個(gè)處理器相同或不同。例如,主機(jī)計(jì)算設(shè)備112中的處理器 可以與目標(biāo)系統(tǒng)150的處理器152相同或不同。當(dāng)包括改善的DSU 158的可選處理器164時(shí), 目標(biāo)系統(tǒng)150的處理器152可以與這種可選處理器164相同或不同。
[0102] 在本披露中,存儲(chǔ)器(諸如存儲(chǔ)器模塊156的存儲(chǔ)器和改善的DSU 158的可選存儲(chǔ) 器,當(dāng)包括這種存儲(chǔ)器時(shí))可以在一個(gè)配置或另一個(gè)配置中使用。存儲(chǔ)器可以被配置成用于 存儲(chǔ)數(shù)據(jù)??商娲鼗虼送猓鎯?chǔ)器可以是非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)(CRM),其中,CRM被配置 成用于存儲(chǔ)可由處理器執(zhí)行的指令。指令可以單獨(dú)地或作為指令組存儲(chǔ)在文件中。文件可 以包括函數(shù)、服務(wù)、庫等等。文件可以包括一個(gè)或多個(gè)計(jì)算機(jī)程序或者可以是更大計(jì)算機(jī)程 序的一部分??商娲鼗虼送?,每個(gè)文件可以包括對(duì)于實(shí)施在本披露中描述的系統(tǒng)、方法和 裝置的計(jì)算功能有用的數(shù)據(jù)或其他計(jì)算支持材料。存儲(chǔ)器可以被形成為一個(gè)或多個(gè)存儲(chǔ) 器,并且每個(gè)存儲(chǔ)器可以包括用于讀取和寫入的瞬態(tài)和非瞬態(tài)、易失性和非易失性計(jì)算機(jī) 可讀介質(zhì)的任何組合。易失性計(jì)算機(jī)可讀介質(zhì)包括例如隨機(jī)存取存儲(chǔ)器(RAM)。非易失性計(jì) 算機(jī)可讀介質(zhì)包括例如只讀存儲(chǔ)器(ROM)、磁介質(zhì)(諸如硬盤)、光盤驅(qū)動(dòng)器、閃存設(shè)備、CD-R0M等等。在一些情況下,具體的存儲(chǔ)器被虛擬地或物理地分離為多個(gè)分離的區(qū)域,諸如第 一存儲(chǔ)器、第二存儲(chǔ)器、第三存儲(chǔ)器等。在這些情況下,應(yīng)理解的是不同存儲(chǔ)器劃分可以位 于不同設(shè)備中或體現(xiàn)在單個(gè)存儲(chǔ)器中。存儲(chǔ)器的一些或所有存儲(chǔ)內(nèi)容可以包括可由處理設(shè) 備執(zhí)行以便實(shí)施一個(gè)或多個(gè)具體動(dòng)作的軟件指令。
[0103] 圖3的數(shù)據(jù)流實(shí)施例300展示了可以由改善的DSU 158的實(shí)施例使用的一個(gè)或多個(gè) 過程。在此方面,每個(gè)所描述的過程可以表示包括用于實(shí)現(xiàn)所指定的邏輯功能的一個(gè)或多 個(gè)可執(zhí)行指令的代碼模塊、區(qū)段或部分。在一些實(shí)現(xiàn)方式中,在過程中標(biāo)注的功能可以按照 不同的順序發(fā)生、可以包括附加功能、可以并發(fā)地發(fā)生和/或可以被省略。
[0104] 在前述描述中,列出了某些特定細(xì)節(jié)以便提供各個(gè)所披露的實(shí)施例的透徹理解。 然而,本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到可以在沒有這些特定細(xì)節(jié)中的一個(gè)或多個(gè)細(xì)節(jié)的情況下 或者通過其他方法、組件、材料等等實(shí)踐各實(shí)施例。在其他情形下,與包括客戶機(jī)和服務(wù)器 計(jì)算系統(tǒng)的電子和計(jì)算系統(tǒng)相關(guān)聯(lián)的公知結(jié)構(gòu)以及網(wǎng)絡(luò)未被詳細(xì)地示出或描述以便避免 不必要地混淆這些實(shí)施例的描述。
[0105] 除非上下文另有要求,否則貫穿說明書和所附權(quán)利要求書,"包括(comprise)"一 詞及其多種變體(諸如,"包括(comprises)"和"包括(comprising)")將以一種開放式的和 包含性的意義來進(jìn)行解釋,例如,"包括,但不限于(including,but not limited to)"。
[0106] 貫穿本說明書所提到的"一個(gè)實(shí)施例"或"一種實(shí)施例"及其組合是指與該實(shí)施例 相關(guān)聯(lián)地描述的具體的特征、結(jié)構(gòu)或特性被包括在至少一個(gè)實(shí)施例中。因而,貫穿本說明 書,短語"在一個(gè)實(shí)施例中"或"在實(shí)施例中"在不同場合中的出現(xiàn)并不必定都是指相同的實(shí) 施例。另外,特定特征、結(jié)構(gòu)或特性可以根據(jù)任何合適的方式組合在一個(gè)或多個(gè)實(shí)施例中。
[0107] 如在本說明書和所附權(quán)利要求書中所使用的,除非內(nèi)容和上下文另外明確指明, 否則單數(shù)形式的"一種"、"一個(gè)"以及"所述"包括復(fù)數(shù)對(duì)象。還應(yīng)當(dāng)注意,除非內(nèi)容和上下文 視情況而定明確指示包容性或排他性可以,連接詞術(shù)語"和"及"或"在最廣義上被采用,包 括"和/或"。此外,當(dāng)本文中被引用為"和/或"時(shí),"和"與"或"的組合旨在包含包括所有相關(guān) 聯(lián)術(shù)語或思想的實(shí)施并包括少于所有相關(guān)聯(lián)術(shù)語或思想的一個(gè)或多個(gè)其他替代實(shí)施例。
[0108] 本文提供的本披露的小標(biāo)題以及摘要只是為了方便起見,而并非限制或解釋這些 實(shí)施例的范圍或含義。
[0109] 上述各實(shí)施例可以被組合以提供進(jìn)一步的實(shí)施例。如果有必要,可以對(duì)實(shí)施例的 各方面進(jìn)行修改,以采用各專利、申請(qǐng)和公開的概念來提供更進(jìn)一步的實(shí)施例。鑒于以上詳 細(xì)說明,可以對(duì)實(shí)施例做出這些和其他變化??傊?,在以下權(quán)利要求書中,所使用的術(shù)語不 應(yīng)當(dāng)被解釋為將權(quán)利要求書局限于本說明書和權(quán)利要求書中所披露的特定實(shí)施例,而是應(yīng) 當(dāng)被解釋為包括所有可能的實(shí)施例、連同這些權(quán)利要求有權(quán)獲得的等效物的整個(gè)范圍。因 此,權(quán)利要求書并不受到本披露的限制。
【主權(quán)項(xiàng)】
1. 一種調(diào)試啟用處理設(shè)備,其特征在于,包括: 處理器; 通信收發(fā)器電路;以及 調(diào)試支持單元,所述調(diào)試支持單元具有幫助對(duì)由所述處理器執(zhí)行的軟件程序進(jìn)行調(diào)試 的多個(gè)專用調(diào)試寄存器,所述多個(gè)調(diào)試寄存器包括: 具有至少四個(gè)位的控制寄存器,所述至少四個(gè)位包括用于啟用/禁用多項(xiàng)調(diào)試操作的 控制位;以及 索引寄存器組,所述索引寄存器組可配置成用于向和從所述處理器傳遞數(shù)據(jù)。2. 根據(jù)權(quán)利要求1所述的調(diào)試啟用處理設(shè)備,其特征在于,所述控制寄存器包括: 所述至少四個(gè)位中的第一位,所述第一位被安排成用于當(dāng)所述至少四個(gè)位中的所述第 一位采用第一值時(shí)啟用調(diào)試模式,并且被進(jìn)一步安排成用于當(dāng)所述至少四個(gè)位中的所述第 一位采用第二值時(shí)禁用所述調(diào)試模式; 所述至少四個(gè)位中的第二位,所述第二位被安排成用于提供有關(guān)流水線沖洗操作的狀 態(tài); 所述至少四個(gè)位中的第三位,所述第三位被安排成用于啟用和禁用陷阱處理操作;以 及 所述至少四個(gè)位中的第四位,所述第四位被安排成用于控制所述陷阱處理操作。3. 根據(jù)權(quán)利要求1所述的調(diào)試啟用處理設(shè)備,其特征在于,所述索引寄存器組包括: 寫入啟用寄存器,所述寫入啟用寄存器用于控制數(shù)據(jù)傳送操作是讀取操作還是寫入操 作; 地址寄存器,所述地址寄存器用于存儲(chǔ)表示所述處理器的架構(gòu)狀態(tài)的值;以及 數(shù)據(jù)寄存器,所述數(shù)據(jù)寄存器用于存儲(chǔ)正在傳送的數(shù)據(jù)。4. 根據(jù)權(quán)利要求1所述的調(diào)試啟用處理設(shè)備,其特征在于,包括: 集成電路封裝體,所述集成電路封裝體在其內(nèi)形成有所述處理器、所述通信收發(fā)器電 路以及所述調(diào)試支持單元。5. 根據(jù)權(quán)利要求1所述的調(diào)試啟用處理設(shè)備,其特征在于,所述處理器是精簡指令集計(jì) 算設(shè)備。6. 根據(jù)權(quán)利要求5所述的調(diào)試啟用處理設(shè)備,其特征在于,所述處理器包括多級(jí)執(zhí)行流 水線,所述多級(jí)執(zhí)行流水線至少包括取出級(jí)、解碼級(jí)、執(zhí)行級(jí)以及回寫級(jí)。7. 根據(jù)權(quán)利要求1所述的調(diào)試啟用處理設(shè)備,其特征在于,包括: 存儲(chǔ)器,所述存儲(chǔ)器其內(nèi)存儲(chǔ)有所述軟件程序。8. 根據(jù)權(quán)利要求7所述的調(diào)試啟用處理設(shè)備,其特征在于,所述存儲(chǔ)器是非瞬態(tài)只讀存 儲(chǔ)器。9. 根據(jù)權(quán)利要求1所述的調(diào)試啟用處理設(shè)備,其特征在于,所述調(diào)試支持單元是不具有 任何軟件的電子電路。10. 根據(jù)權(quán)利要求1所述的調(diào)試啟用處理設(shè)備,其特征在于,所述調(diào)試支持單元包括: 調(diào)試控制電路,所述調(diào)試控制電路被安排成用于在所述處理器與所述調(diào)試支持單元的 至少一個(gè)寄存器之間傳遞信號(hào)。11. 一種嵌入式處理系統(tǒng),其特征在于,包括: 用于執(zhí)行目標(biāo)程序的軟件指令的處理器裝置; 用于在所述嵌入式處理器系統(tǒng)與外部主機(jī)計(jì)算設(shè)備之間傳達(dá)第一數(shù)據(jù)的收發(fā)器裝置; 以及 用于在所述目標(biāo)程序上指導(dǎo)調(diào)試操作的調(diào)試支持單元裝置,所述調(diào)試支持裝置包括: 用于啟用和禁用多項(xiàng)調(diào)試操作的控制寄存器裝置;以及 用于向和從所述處理器傳遞第二數(shù)據(jù)的索引寄存器裝置。12. 根據(jù)權(quán)利要求11所述的嵌入式處理系統(tǒng),其特征在于,所述控制寄存器裝置包括: 用于啟用調(diào)試模式并且用于禁用所述調(diào)試模式的第一裝置; 用于指示流水線沖洗操作的狀態(tài)的第二裝置; 用于啟用陷阱處理操作并且用于禁用所述陷阱處理操作的第三裝置;以及 用于控制所述陷阱處理操作的第四裝置。13. 根據(jù)權(quán)利要求11所述的嵌入式處理系統(tǒng),其特征在于,所述索引寄存器裝置包括: 用于指導(dǎo)讀取操作和寫入操作的寫入啟用裝置; 用于存儲(chǔ)有待訪問的地址的地址裝置;以及 用于存儲(chǔ)正在傳送的數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)裝置。14. 根據(jù)權(quán)利要求11所述的嵌入式處理系統(tǒng),其特征在于,包括: 存儲(chǔ)器裝置,所述存儲(chǔ)器裝置存儲(chǔ)所述目標(biāo)程序。15. 根據(jù)權(quán)利要求11所述的嵌入式處理系統(tǒng),其特征在于,包括: 用于指導(dǎo)所述調(diào)試支持單元裝置的操作的軟件。
【文檔編號(hào)】G06F11/36GK205680085SQ201620396022
【公開日】2016年11月9日
【申請(qǐng)日】2016年5月4日 公開號(hào)201620396022.9, CN 201620396022, CN 205680085 U, CN 205680085U, CN-U-205680085, CN201620396022, CN201620396022.9, CN205680085 U, CN205680085U
【發(fā)明人】焦小康, 朱鵬飛
【申請(qǐng)人】世意法(北京)半導(dǎo)體研發(fā)有限責(zé)任公司