專利名稱:用于在具有快閃程序存儲(chǔ)器的微控制器中提供程序斷點(diǎn)的機(jī)制的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體上涉及對(duì)于芯片上快閃程序存儲(chǔ)器的芯片上調(diào)試功能性,且更明確 地說(shuō)涉及一種用于將程序斷點(diǎn)插入在快閃程序存儲(chǔ)器中而不需要對(duì)所述存儲(chǔ)器進(jìn) 行擦除和重新編程的機(jī)制。
背景技術(shù):
隨著具有芯片上存儲(chǔ)器的高速微控制器的發(fā)展,嵌入式軟件開發(fā)調(diào)試已變得日 益具有挑戰(zhàn)性。嵌入式系統(tǒng)總線的高信號(hào)速度和缺乏可觀察性要求包含芯片上調(diào)試(OCD)部件來(lái)輔助軟件開發(fā)過(guò)程。OCD邏輯的成本與所接受的侵入性水平(即在 調(diào)試期間CPU可偏離于常規(guī)軟件執(zhí)行的程度)聯(lián)系。最基本的調(diào)試部件之一是程序斷點(diǎn)。程序斷點(diǎn)涉及當(dāng)軟件執(zhí)行到達(dá)特定地址時(shí) 暫停CPU。 一旦暫停CPU,調(diào)試工具就可通過(guò)經(jīng)由調(diào)試協(xié)議發(fā)布待于CPU上執(zhí)行 的指令來(lái)觀察此時(shí)CPU中的系統(tǒng)存儲(chǔ)器和寄存器的狀態(tài)。 一旦檢査完成,調(diào)試工具 就可使CPU返回正常模式,且執(zhí)行將繼續(xù)直到下一斷點(diǎn)為止。實(shí)施程序斷點(diǎn)的兩種主要方法稱為硬件和軟件斷點(diǎn)。硬件斷點(diǎn)指的是檢測(cè)CPU何時(shí)即將執(zhí)行特定程序地址。此涉及將指令總線地 址_—或附加到所取指令的地址(視計(jì)算機(jī)結(jié)構(gòu)而定) 一一與由調(diào)試工具寫入的調(diào) 試寄存器中的指定地址進(jìn)行比較。硬件斷點(diǎn)是非侵入性的,其在斷點(diǎn)觸發(fā)之前本質(zhì)上對(duì)軟件執(zhí)行無(wú)任何影響。因此,這些斷點(diǎn)適于需要完全非侵入性的少數(shù)調(diào)試情形。 然而,其較昂貴,因?yàn)槠涿繑帱c(diǎn)均需要一寄存器和一比較器。由于這個(gè)原因,其是 所有芯片上調(diào)試系統(tǒng)中有限的資源。軟件斷點(diǎn)固有地比硬件斷點(diǎn)簡(jiǎn)單,且指的是CPU將特定操作碼作為斷點(diǎn)指令執(zhí) 行,從而立即暫停CPU并將控制返回給調(diào)試工具。因此,調(diào)試工具可用斷點(diǎn)指令取 代程序存儲(chǔ)器中的任何操作碼,從而使CPU在所述地址處暫停。這還意味著調(diào)試工具必須保持所插入的所有軟件斷點(diǎn)的列表,并記住處于所述位置的原始操作碼。當(dāng)從軟件斷點(diǎn)返回時(shí),調(diào)試工具必須在CPU仍處于暫停模式時(shí)在CPU上執(zhí)行原始操作碼,并接著使CPU返回正常操作。因此,軟件斷點(diǎn)比硬件斷點(diǎn)更具侵入性, 因?yàn)榻?jīng)斷點(diǎn)的指令必須在暫停模式下運(yùn)行。然而,大多數(shù)調(diào)試情形允許這種侵入性, 且所述方法的極大益處是可在沒(méi)有額外硬件成本的情況下實(shí)施無(wú)限數(shù)目的斷點(diǎn)。由 于這個(gè)原因,如果存儲(chǔ)器技術(shù)支持的話,軟件斷點(diǎn)通常比硬件斷點(diǎn)優(yōu)選??扇绾尾迦胲浖帱c(diǎn)取決于微控制器的存儲(chǔ)器技術(shù)。程序存儲(chǔ)器可以是易失性 或非易失性的。在任一情況下,程序存儲(chǔ)器通??捎烧{(diào)試工具直接(例如,通過(guò)JTAG 命令)或通過(guò)暫停CPU并發(fā)布存取程序存儲(chǔ)器的指令而間接地存取。易失性(即,基于RAM的)存儲(chǔ)器固有地可讀取/寫入,而對(duì)非易失性存儲(chǔ)器 的寫入存取視技術(shù)而定??扉W程序存儲(chǔ)器正迅速成為用于嵌入式微控制器的最普遍 的非易失性技術(shù)。快閃程序存儲(chǔ)器可被擦除(即,所有存儲(chǔ)器單元設(shè)定為1)和寫 入(即,清除選定的存儲(chǔ)器單元)。擦除和寫入序列花費(fèi)大量時(shí)間,如果需要對(duì)整 個(gè)快閃程序存儲(chǔ)器進(jìn)行編程的話通?;ㄙM(fèi)許多秒。并且,所述序列磨損快閃程序存 儲(chǔ)器,且可能只實(shí)行幾千次快閃程序存儲(chǔ)器就可能發(fā)生故障。軟件斷點(diǎn)在具有基于RAM的程序存儲(chǔ)器的裝置中運(yùn)行得較好,但在基于快閃 程序存儲(chǔ)器的系統(tǒng)中具有明顯的缺點(diǎn),因?yàn)槠湫枰媒?jīng)修改的目標(biāo)碼對(duì)存儲(chǔ)器進(jìn)行 擦除和重新編程。這在調(diào)試期間花費(fèi)大量的時(shí)間,且最終可能磨損快閃程序存儲(chǔ)器, 從而導(dǎo)致裝置的永久故障。典型的調(diào)試會(huì)話涉及隨著故障碼被縮小范圍并被識(shí)別出 而逐漸地添加若干斷點(diǎn)。因此,快閃程序存儲(chǔ)器必須針對(duì)每一調(diào)試會(huì)話而被重新編程若干次,且需要多 個(gè)調(diào)試會(huì)話來(lái)調(diào)試大量嵌入式代碼。這一問(wèn)題隨著嵌入式快閃程序存儲(chǔ)器的尺寸增 加(因?yàn)檎{(diào)試操作的數(shù)目增加且因?yàn)榫幊虝r(shí)間增加)而加劇。由于這個(gè)原因,即使 支持軟件斷點(diǎn),快閃程序存儲(chǔ)器微控制器中也需要大量硬件斷點(diǎn),從而增加了裝置 的成本。因此,概括地說(shuō),現(xiàn)有技術(shù)中的軟件斷點(diǎn)需要擦除快閃程序存儲(chǔ)器來(lái)插入 斷點(diǎn),且能夠檢測(cè)操作碼的硬件斷點(diǎn)需要實(shí)施單獨(dú)的調(diào)試寄存器,且更加昂貴。因此,需要一種用于克服上述問(wèn)題的系統(tǒng)和方法。本發(fā)明解決了這一需要。發(fā)明內(nèi)容本發(fā)明揭示一種微控制器。所述微控制器包含中央處理器單元(CPU)和經(jīng)由 指令總線與所述CPU通信的快閃程序存儲(chǔ)器。所述微控制器包含耦合到所述CPU 的芯片上調(diào)試(OCD)邏輯。所述OCD邏輯含有檢測(cè)所述CPU與所述快閃程序存儲(chǔ)器之間的指令總線上的預(yù)定操作碼以提供程序斷點(diǎn)的邏輯。根據(jù)本發(fā)明的系統(tǒng)和方法提供對(duì)基于快閃程序存儲(chǔ)器的微控制器中的程序斷 點(diǎn)的大大改進(jìn)的支持,且使芯片上調(diào)試邏輯和復(fù)雜性的增加最小化。
圖1說(shuō)明根據(jù)本發(fā)明的調(diào)試系統(tǒng)。
具體實(shí)施方式
本發(fā)明大體上涉及對(duì)于芯片上快閃程序存儲(chǔ)器的芯片上調(diào)試功能性,且更明確 地說(shuō)涉及一種用于將軟件斷點(diǎn)插入在快閃程序存儲(chǔ)器中而不需要對(duì)所述存儲(chǔ)器進(jìn) 行擦除和重新編程的機(jī)制。提供以下描述以使所屬領(lǐng)域的一般技術(shù)人員能夠制造和 使用本發(fā)明,且以下描述是在專利申請(qǐng)案及其要求的上下文中提供的。所屬領(lǐng)域的 技術(shù)人員將易于了解對(duì)優(yōu)選實(shí)施例的各種修改以及本文描述的一般原理和特征。因 此,本發(fā)明不希望限于所展示的實(shí)施例,而是應(yīng)符合與本文描述的原理和特征一致 的最廣泛范圍。根據(jù)本發(fā)明的系統(tǒng)和方法提供一種用于將無(wú)限數(shù)目的程序斷點(diǎn)插入在快閃程 序存儲(chǔ)器中而不需要對(duì)所述存儲(chǔ)器進(jìn)行擦除和重新編程的機(jī)制。提供一種用于在具有快閃程序存儲(chǔ)器的微控制器中實(shí)施程序斷點(diǎn)的機(jī)制。與軟 件斷點(diǎn)不同,當(dāng)插入這些斷點(diǎn)時(shí),不需要對(duì)快閃程序存儲(chǔ)器進(jìn)行擦除和重新編程。 另外,根據(jù)本發(fā)明的系統(tǒng)和方法比硬件斷點(diǎn)實(shí)施起來(lái)更簡(jiǎn)單且便宜,且與硬件斷點(diǎn) 不同的是,可插入任何數(shù)目的斷點(diǎn)。侵入性水平僅略微高于軟件斷點(diǎn)的侵入性水平。 根據(jù)本發(fā)明的系統(tǒng)和方法可在支持?jǐn)帱c(diǎn)的所有CPU結(jié)構(gòu)上實(shí)行。根據(jù)本發(fā)明的系統(tǒng)和方法提供一種以減少需要對(duì)存儲(chǔ)器進(jìn)行擦除和重新編程 的次數(shù)的方式在基于快閃程序存儲(chǔ)器的系統(tǒng)中實(shí)施軟件斷點(diǎn)且因此而縮短調(diào)試時(shí) 間、增加調(diào)試靈活性以及裝置的使用壽命的機(jī)制。根據(jù)本發(fā)明的系統(tǒng)和方法允許調(diào)試工具實(shí)施一種算法,所述算法允許將任何數(shù) 目的程序斷點(diǎn)插入到微控制器的嵌入式快閃程序存儲(chǔ)器中,而不對(duì)快閃程序存儲(chǔ)器 進(jìn)行擦除和重新編程。根據(jù)本發(fā)明的系統(tǒng)和方法提供對(duì)基于快閃程序存儲(chǔ)器的微控制器中的程序斷 點(diǎn)的大大改進(jìn)的支持,且使芯片上調(diào)試邏輯和復(fù)雜性的增加最小化。為了更詳細(xì)地描述本發(fā)明的特征,現(xiàn)結(jié)合附圖參看以下描述。 圖1說(shuō)明根據(jù)本發(fā)明的調(diào)試系統(tǒng)100。調(diào)試系統(tǒng)100包含主機(jī)計(jì)算機(jī)102、調(diào) 試工具104和微控制器裝置106。調(diào)試系統(tǒng)100可由調(diào)試工具104直接或通過(guò)CPU 110上的指令進(jìn)行編程。調(diào)試工具包含軟件斷點(diǎn)列表105。微控制器裝置106包含芯 片上調(diào)試(OCD)邏輯108、 CPU 110和快閃程序存儲(chǔ)器112。芯片上調(diào)試邏輯108 包含芯片上調(diào)試控制114、 BOZ零檢測(cè)器旗標(biāo)模塊116和檢測(cè)器模塊118。以下實(shí) 例假定32位地址總線和16位指令總線,然而所屬領(lǐng)域的一般技術(shù)人員容易了解, 根據(jù)本發(fā)明的系統(tǒng)和方法將以任何總線尺寸操作,且其用途將在本發(fā)明的精神和范 圍內(nèi)。如上文所提及,通常通過(guò)使CPU 110將特定操作碼解碼為使CPU 110暫停的斷 點(diǎn)來(lái)實(shí)施軟件斷點(diǎn)。此操作碼通常根據(jù)CPU 110中使用的特定指令編碼方案而被分 配作為其它操作碼。因此,在現(xiàn)有操作碼上插入軟件斷點(diǎn)可涉及依據(jù)哪一操作碼將 被取代而清除和設(shè)定存儲(chǔ)器位單元。如圖1所示,根據(jù)本發(fā)明的系統(tǒng)和方法,OCD邏輯108含有檢測(cè)器模塊118, 其識(shí)別指令總線113上的預(yù)定操作碼,例如操作碼0x0000 (零操作碼)。當(dāng)此操作 碼出現(xiàn)時(shí),CPU IIO被暫停,且設(shè)定零檢測(cè)器旗標(biāo)116,從而發(fā)信號(hào)通知調(diào)試工具 104己檢測(cè)到操作碼零。檢測(cè)器模塊118不需要任何調(diào)試寄存器,并實(shí)施表達(dá)式f(inst)-!(inst[n-l]+…+inst
)其中f(inst)是n位指令的函數(shù)。這固有地比常規(guī)斷點(diǎn)模塊簡(jiǎn)單得多,常規(guī)斷點(diǎn)模塊需要與地址總線一樣寬的調(diào)試寄存器,并實(shí)施函數(shù)f(addr, BPA)=addr[31]ABPA[31]& addr[30]ABPA[30&]...&addr
ABPA
其中f(addr,BPA)是32位程序計(jì)數(shù)器地址和用戶配置的程序斷點(diǎn)地址(BPA)的函數(shù)。 另外,不管所插入的程序斷點(diǎn)的數(shù)目如何,僅需要單個(gè)檢測(cè)器模塊118。0CD 108通常將實(shí)施為獨(dú)立的模塊,但其可集成在CPU110中,這取決于計(jì)算機(jī)結(jié)構(gòu)。對(duì)于軟件斷點(diǎn),調(diào)試工具104通過(guò)直接覆寫快閃程序存儲(chǔ)器112中的現(xiàn)有操作碼來(lái)插入"操作碼零"程序斷點(diǎn)。然而,由于這些程序斷點(diǎn)僅含有零,所以其僅可通過(guò)從1到O清除程序存儲(chǔ)器位單元而插入。因此,可在沒(méi)有任何擦除操作的情況下覆寫快閃程序存儲(chǔ)器112中的任何操作碼。因而可支持無(wú)限數(shù)目的程序斷點(diǎn),而不必擦除快閃程序存儲(chǔ)器112。調(diào)試工具104保持被取代操作碼的列表105。當(dāng)從操作碼零程序斷點(diǎn)返回時(shí),調(diào)試工具104在使CPU IIO返回正常模式之前必須在CPU IIO上執(zhí)行被取代的操作碼。這些操作與軟件斷點(diǎn)相同。由于大多數(shù)指令編碼方案將操作碼0x0000解碼為常規(guī)指令,所以要求必須保 留此操作碼僅用于程序斷點(diǎn)是不可行的。這意味著CPU 110將由于在現(xiàn)有操作碼上 故意覆寫"真"程序斷點(diǎn)(即,0x0000)或者"假"程序斷點(diǎn)(即,0x0000)是原 始目標(biāo)碼的一部分而暫停。調(diào)試工具軟件可通過(guò)檢驗(yàn)CPU 110是否在活動(dòng)斷點(diǎn)的軟 件斷點(diǎn)列表105中所含的地址處暫停來(lái)區(qū)別這兩種情況。如果發(fā)現(xiàn)匹配,那么斷點(diǎn) 為"真"并作為常規(guī)軟件斷點(diǎn)來(lái)處理,且如果未發(fā)現(xiàn)匹配,那么斷點(diǎn)為"假"且在 CPU 110返回正常操作之前在暫停模式下執(zhí)行操作碼0x0000。因此,侵入性水平將 略微高于軟件斷點(diǎn)的侵入性水平。在調(diào)試會(huì)話期間,通常需要在清除已發(fā)布的一些斷點(diǎn)的同時(shí)添加更多的程序斷 點(diǎn)。這可能通過(guò)以下操作來(lái)實(shí)現(xiàn)通過(guò)將程序斷點(diǎn)保存在斷點(diǎn)列表105中使所述程 序斷點(diǎn)"休眠",但立即執(zhí)行原始指令并返回正常操作,從而使CPU中斷盡可能短。在將永久去除程序斷點(diǎn)時(shí),必須擦除快閃程序存儲(chǔ)器112并用原始目標(biāo)碼對(duì)其 重新編程。此操作與軟件斷點(diǎn)相同,但僅在調(diào)試會(huì)話完成時(shí)才需要執(zhí)行。使用上述技術(shù),可能在在調(diào)試會(huì)話期間在不對(duì)快閃程序存儲(chǔ)器112進(jìn)行擦除和 重新編程的情況下插入任何數(shù)目的程序斷點(diǎn),直到調(diào)試會(huì)話完成為止。盡管已根據(jù)所展示的實(shí)施例描述了本發(fā)明,但所屬領(lǐng)域的一般技術(shù)人員將容易 了解,可能存在對(duì)所述實(shí)施例的變化,且那些變化將在本發(fā)明的精神和范圍內(nèi)。因 此,所屬領(lǐng)域的一般技術(shù)人員可在不脫離所附權(quán)利要求書的精神和范圍的情況下作 出許多修改。
權(quán)利要求
1.一種微控制器,其包括中央處理器單元(CPU);快閃程序存儲(chǔ)器,其經(jīng)由指令總線與所述CPU通信;以及芯片上調(diào)試(OCD)邏輯,其耦合到所述CPU,所述OCD邏輯含有檢測(cè)指令總線上的預(yù)定操作碼并用于提供程序斷點(diǎn)的邏輯。
2. 根據(jù)權(quán)利要求l所述的微控制器,其中所述預(yù)定操作碼包括零操作碼。
3. 根據(jù)權(quán)利要求2所述的微控制器,其中所述OCD邏輯包括檢測(cè)器,其用于檢測(cè)所述指令總線上的所述零操作碼,其中所述CPU基于 所述零操作碼而暫停;旗標(biāo)模塊,其用于從所述檢測(cè)器接收所述零操作碼指示,并用于發(fā)信號(hào)通知 調(diào)試工具已檢測(cè)到所述零操作碼。
4. 根據(jù)權(quán)利要求3所述的微控制器,其中所述檢測(cè)器模塊實(shí)施以下表達(dá)式f(inst)=!(inst[n-l]+...+inst
),其中f(inst)是n位指令的函數(shù)。
5. 根據(jù)權(quán)利要求3所述的微控制器,其中所述調(diào)試工具包含斷點(diǎn)列表,并通過(guò)將所述檢測(cè)到的操作碼與所述斷點(diǎn)列表進(jìn)行比較來(lái)確定所述檢測(cè)到的操作碼是 否為真程序斷點(diǎn)。
6. —種調(diào)試系統(tǒng),其包括調(diào)試工具;所述調(diào)試工具包含斷點(diǎn)的列表;以及微控制器,所述微控制器包括中央處理器單元(CPU);快閃程序存儲(chǔ)器, 其經(jīng)由指令總線與所述CPU通信;和芯片上調(diào)試(OCD)邏輯,其耦合到所述CPU, OCD邏輯含有識(shí)別指令上的零操作碼以提供程序斷點(diǎn)的邏輯。
7. 根據(jù)權(quán)利要求6所述的調(diào)試系統(tǒng),其中所述OCD邏輯包括檢測(cè)器,其用于檢測(cè)所述指令總線上的所述零操作碼,其中所述CPU基于所述零操作碼而暫停;旗標(biāo)模塊,其用于從所述檢測(cè)器接收所述零操作碼指示,并用于發(fā)信號(hào)通知 調(diào)試工具已檢測(cè)到所述零操作碼。
8. 根據(jù)權(quán)利要求7所述的調(diào)試系統(tǒng),其中所述檢測(cè)器模塊實(shí)施以下表達(dá)式f(inst)=!(inst[n-l]+...+inst
),其中f(inst)是n位指令的函數(shù)。
9. 根據(jù)權(quán)利要求8所述的調(diào)試系統(tǒng),其中所述調(diào)試工具通過(guò)將所述檢測(cè)到的操作 碼與所述斷點(diǎn)列表進(jìn)行比較來(lái)確定所述檢測(cè)到的操作碼是否為真程序斷點(diǎn)。
10. —種在微控制器中使用的方法;所述微控制器包含中央處理器單元(CPU);經(jīng)由指令總線與所述CPU通信的快閃程序存儲(chǔ)器以及耦合到所述CPU的芯片上調(diào)試(OCD)邏輯,所述方法包括通過(guò)所述OCD邏輯檢測(cè)所述指令總線上的預(yù)定操作碼以提供程序斷點(diǎn)。
11. 根據(jù)權(quán)利要求IO所述的方法,其中所述預(yù)定操作碼包括零操作碼。
12. 根據(jù)權(quán)利要求11所述的方法,其中所述OCD邏輯包括檢測(cè)器,其用于檢測(cè)所述指令總線上的所述零操作碼,其中所述CPU基于 所述零操作碼而暫停;旗標(biāo)模塊,其用于從所述檢測(cè)器接收所述零操作碼指示,并用于發(fā)信號(hào)通知 調(diào)試工具已檢測(cè)到所述零操作碼。
13. 根據(jù)權(quán)利要求12所述的方法,其中所述檢測(cè)器模塊實(shí)施以下表達(dá)式f(inst)=!(inst[n-l]+...+inst
),其中f(inst)是n位指令的函數(shù)。
14. 根據(jù)權(quán)利要求12所述的方法,其中所述調(diào)試工具包含斷點(diǎn)列表,并通過(guò)將所 述檢測(cè)到的操作碼與所述斷點(diǎn)列表進(jìn)行比較來(lái)確定所述檢測(cè)到的操作碼是否 為真程序斷點(diǎn)。
全文摘要
本發(fā)明揭示一種微控制器。所述微控制器包含中央處理器單元(CPU)和經(jīng)由指令總線與所述CPU通信的快閃程序存儲(chǔ)器。所述微控制器包含耦合到所述CPU的芯片上調(diào)試(OCD)邏輯。所述OCD邏輯含有檢測(cè)所述CPU與所述快閃程序存儲(chǔ)器之間的指令總線上的零操作碼以提供程序斷點(diǎn)的邏輯。這是超越現(xiàn)有技術(shù)的一個(gè)優(yōu)點(diǎn),因?yàn)榭蓪⑷魏螖?shù)目的此類斷點(diǎn)插入到所述快閃程序存儲(chǔ)器中,而不需要擦除所述存儲(chǔ)器。根據(jù)本發(fā)明的系統(tǒng)和方法以芯片上調(diào)試邏輯和復(fù)雜性的最小增加提供對(duì)基于快閃程序存儲(chǔ)器的微控制器中的程序斷點(diǎn)極大改進(jìn)的支持。
文檔編號(hào)G06F11/00GK101233495SQ200680028287
公開日2008年7月30日 申請(qǐng)日期2006年6月7日 優(yōu)先權(quán)日2005年6月7日
發(fā)明者弗羅德·米爾希·彼得森 申請(qǐng)人:愛(ài)特梅爾公司