專利名稱:一種微控制器jtag調(diào)試方法
技術(shù)領(lǐng)域:
本發(fā)明涉及集成電路測試技術(shù)領(lǐng)域,特別是指一種JTAG (Joint Test Action Group)調(diào)試方法。
技術(shù)背景20世紀(jì)80年代以來,隨著計(jì)算機(jī)嵌入式系統(tǒng)的廣泛應(yīng)用,微控制器 (MCU, microcontroller unit/單片機(jī))得到了飛速的發(fā)展。早期的單片 機(jī)是按照嵌入式應(yīng)用技術(shù)要求設(shè)計(jì)的計(jì)算機(jī)的單芯片化集成電路器件,也 就是電子計(jì)算機(jī)的全部特性器件都集成到一片芯片上,故被形象的稱為單 片機(jī)。隨著單片機(jī)應(yīng)用范圍的不斷加大,對(duì)于其仿真芯片調(diào)試功能的要求 也逐漸提高。目前單片機(jī)廠家大都提供自己的仿真芯片,芯片仿真器多為外置,大 致分為兩種方式1.由仿真器的仿真頭來完全取代目標(biāo)板上的CPU進(jìn)行工 作,產(chǎn)生外部電路所需要的信號(hào),同時(shí)捕獲外部的所有信號(hào),提供源代碼 級(jí)調(diào)試及處理器運(yùn)行控制等功能,通過它可以啟動(dòng)和停止目標(biāo)系統(tǒng),査閱 和修改寄存器和存儲(chǔ)器,在需要控制或查看內(nèi)部處理器運(yùn)行的地方設(shè)置斷 點(diǎn)。但是隨著處理器的性能和復(fù)雜性的飛速發(fā)展,這種在線仿真調(diào)試系統(tǒng) 提供的時(shí)間嚴(yán)重滯后于芯片本身的生命周期,而且價(jià)格昂貴,可擴(kuò)展性差, 沒有完善的觸發(fā)和高速定時(shí)或模擬分析功能,對(duì)芯片內(nèi)部更深層次的時(shí)序 和內(nèi)部動(dòng)態(tài)運(yùn)行監(jiān)控能力差;2. —部分功能已經(jīng)集成到芯片內(nèi)部,另一 部分通過外置的在線仿真調(diào)試系統(tǒng)進(jìn)行操控完成。這種主要針對(duì)那些具JTAG調(diào)試端口的處理器,目前幾乎所有的高速嵌入式處理器都有JTAG調(diào)試接口,仿真器通過調(diào)試口控制CPU運(yùn)行,但實(shí)際運(yùn)行還是要處理器自身來產(chǎn)生,因此要求在目標(biāo)板能夠調(diào)試之前,必須保證處理器,晶振及內(nèi)存等部件正常運(yùn)行,這種在線仿真調(diào)試系統(tǒng)大多不支持實(shí)時(shí)跟蹤和處理微控制器內(nèi)部總線的代碼流。發(fā)明內(nèi)容本發(fā)明的目的在于提供一種微控制器JTAG調(diào)試方法,以克服現(xiàn)有技 術(shù)存在的上述缺陷。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一個(gè)調(diào)試模塊,該模塊提供了從芯片外部對(duì)芯片內(nèi)核進(jìn)行控制運(yùn)行, 從而達(dá)到了調(diào)試的目的。一個(gè)標(biāo)準(zhǔn)JTAG接口,使用擴(kuò)展的TAP (Test Access Port)命令,訪 問調(diào)試模塊,執(zhí)行調(diào)試命令,從而實(shí)現(xiàn)查看芯片狀態(tài)和控制芯片內(nèi)核的目 的。本發(fā)明執(zhí)行標(biāo)準(zhǔn)的JTAG協(xié)議。JTAG是標(biāo)準(zhǔn)的國際協(xié)議(參閱IEEE standard 1149.1)。測試訪問端口配置有以下6個(gè)管腳TCK, TMS, TDI, TDO, TRST禾BTRDY。 TCK (Test Clock)為測試時(shí)鐘端口,為TAP端 口提供時(shí)鐘。TMS (TestMode Select)為測試模式選擇端口,可控制TAP 控制器的狀態(tài)變化。TDI (Test Data Input)為測試輸入數(shù)據(jù)端口,可通過 該端口在TCK的上升沿移位輸入TAP指令和數(shù)據(jù)。TDO(Test Data Input) 為測試輸出數(shù)據(jù)端口 ,可通過該端口在TCK的上升沿移位輸出TAP狀態(tài) 和數(shù)據(jù)。TRST (Test Reset)為測試復(fù)位端口,復(fù)位調(diào)試寄存器和TAP端 口控制器。TRDY (Test Ready)為測試就緒端口,該端口在進(jìn)入調(diào)試模 式后,置位標(biāo)識(shí)芯片內(nèi)部對(duì)接受指令或數(shù)據(jù)準(zhǔn)備就緒,此時(shí)即可輸入指令 或數(shù)據(jù)。一種擴(kuò)展的TAP命令,包括進(jìn)入/退出調(diào)試模式、訪問調(diào)試指令寄存器、訪問調(diào)試地址寄存器、訪問調(diào)試數(shù)據(jù)寄存器、執(zhí)行調(diào)試指令。進(jìn)入調(diào)試模式有兩種 一種是利用TAP命令, 一種是利用調(diào)試模式觸發(fā)器。當(dāng)微控制器接受到從TAP端口發(fā)來的進(jìn)入調(diào)試模式命令時(shí),微控制器會(huì)停 止執(zhí)行下一條指令,進(jìn)入調(diào)試模式。當(dāng)微控制器檢測到調(diào)試模式觸發(fā)器被 觸發(fā)時(shí),微控制器會(huì)立即進(jìn)入調(diào)試模式。調(diào)試模式觸發(fā)器由斷點(diǎn)或者單部 運(yùn)行操作決定。當(dāng)微控制器進(jìn)入調(diào)試模式后,外部管腳TRDY被置高電 平,標(biāo)識(shí)芯片內(nèi)部已準(zhǔn)備好接受外部輸入進(jìn)來的指令。當(dāng)調(diào)試模塊接受到 退出調(diào)試模式指令時(shí),芯片將從調(diào)試模式中退出。但是如果此時(shí)芯片并非 在調(diào)試模式下,那么接受到的退出調(diào)試模式將被忽略。一旦退出調(diào)試模式, 微控制器將在中斷指令處執(zhí)行正常操作。而如果程序計(jì)數(shù)器的值在調(diào)試模 式中有所改變,那么微控制器將在新的程序計(jì)數(shù)器里的值處執(zhí)行操作。任 何時(shí)候微控制器進(jìn)入調(diào)試模式,TRDY管腳都將置高,以表示芯片內(nèi)部以 準(zhǔn)備好接受外部指令。在調(diào)試模式下,當(dāng)微控制器正在處理調(diào)試命令時(shí), TRDY管腳將置低,此時(shí)不能接受外部TAP命令。當(dāng)進(jìn)入調(diào)試模式TRDY 置高后,外部軟件通過TAP端口先將調(diào)試命令寫入調(diào)試指令寄存器中, 即訪問調(diào)試指令寄存器。然后通過端口輸入執(zhí)行調(diào)試指令命令,即可執(zhí)行 保存在指令寄存器中的指令。在多數(shù)情況下,調(diào)試命令的執(zhí)行都將需要數(shù) 據(jù)參數(shù)的輸入或輸出,對(duì)于此訪問地址寄存器和訪問數(shù)據(jù)寄存器就顯得尤 為必要。輸入的數(shù)據(jù)要在調(diào)試命令執(zhí)行前由管腳寫入寄存器中;輸出的數(shù) 據(jù)將在調(diào)試命令執(zhí)行完后從管腳讀出。一種JTAG調(diào)試方法,其功能主要有查看芯片內(nèi)部狀態(tài)和控制芯片操 作。査看芯片內(nèi)部狀態(tài)和控制芯片操作主要是通過讀寫內(nèi)部存儲(chǔ)器,讀寫 通用目的寄存器,讀寫程序計(jì)數(shù)器,讀寫調(diào)試寄存器等來實(shí)現(xiàn)。內(nèi)部存儲(chǔ) 器主要包括特殊功能寄存器,數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器。特殊功能寄存器, 數(shù)據(jù)存儲(chǔ)器都能讀取和寫入。程序存儲(chǔ)器只能讀取,不能寫入。調(diào)試寄存器有兩種 一種8位寄存器,包括調(diào)試控制寄存器,調(diào)試狀態(tài)寄存器,兩個(gè)斷點(diǎn)控制寄存器,trace類型寄存器,trace控制寄存器,trace狀態(tài)寄存 器;另一種為16位寄存器,包括4個(gè)斷點(diǎn)寄存器和1個(gè)tmce緩沖指針寄 存器。調(diào)試控制寄存器可以控制使能單步操作和4個(gè)斷點(diǎn)功能,并且能控 制在調(diào)試模式下的輸入輸出外圍電路。當(dāng)單步操作使能后,芯片微控制器 會(huì)在每一條指令執(zhí)行后重新進(jìn)入調(diào)試模式。斷點(diǎn)使能后,微控制器會(huì)在相 應(yīng)的地址斷點(diǎn)處進(jìn)入調(diào)試模式。當(dāng)設(shè)置輸入輸出停止位,在進(jìn)入調(diào)試模式 時(shí),芯片的外圍輸入輸出模塊會(huì)停止操作,輸入輸出端口的電流也會(huì)保持; 當(dāng)清除輸入輸出停止位時(shí),IO模塊在調(diào)試模式下也會(huì)正常繼續(xù)操作。調(diào) 試狀態(tài)寄存器記錄了單步操作和斷點(diǎn)操作進(jìn)入調(diào)試模式時(shí)的事件。當(dāng)利用 單步操作或斷點(diǎn)操作進(jìn)入調(diào)試模式時(shí),相應(yīng)的調(diào)試狀態(tài)寄存器就會(huì)被設(shè) 置。當(dāng)芯片由TAP命令進(jìn)入調(diào)試模式時(shí),狀態(tài)寄存器的值就會(huì)被清除。 斷點(diǎn)控制寄存器規(guī)定了引起斷點(diǎn)發(fā)生事件的類型。分為三種類型,讀寫操 作,讀操作和寫操作。斷點(diǎn)地址寄存器保存的時(shí)斷點(diǎn)事件發(fā)生處了地址信 息。一種具有實(shí)時(shí)跟蹤功能的調(diào)試方法,即可在條件產(chǎn)生時(shí)追蹤當(dāng)前的
一些地址信息,這些地址信息可以被記錄在緩沖區(qū)內(nèi)。緩沖區(qū)使用的內(nèi)部 RAM區(qū)域。跟蹤模塊包含以下幾個(gè)寄存器跟蹤類型寄存器,控制寄存 器,狀態(tài)寄存器,緩沖指針寄存器。跟蹤類型寄存器記錄的是條件產(chǎn)生時(shí), 緩沖區(qū)內(nèi)需要記錄的地址類型??蛇x擇的發(fā)生條件包含中斷,中斷返回, 無條件跳轉(zhuǎn),條件跳轉(zhuǎn),調(diào)用,子程序返回。當(dāng)中斷發(fā)生時(shí),記錄的是中 斷指令和中斷服務(wù)程序的地址;當(dāng)從中斷返回時(shí),記錄的是返回地址;跳 轉(zhuǎn)發(fā)生時(shí),記錄的是跳轉(zhuǎn)地址;調(diào)用發(fā)生時(shí),記錄的是調(diào)用地址;子程序 返回發(fā)生時(shí),記錄的是子程序返回的地址。記錄地址數(shù)據(jù)的類型分為16 位和8位,可以在跟蹤類型服務(wù)器中選擇。在多數(shù)情況下,8位的地址數(shù) 據(jù)即可滿足程序的正常工作,此時(shí)可以提高芯片在調(diào)試狀態(tài)下的工作效 率。跟蹤控制模塊可控制該模塊的開始,停止及初始化狀態(tài)。控制寄存器 的開始停止位可控制在跟蹤模塊的使能以及模塊在斷點(diǎn)處的使能??刂萍?存器還可設(shè)置在當(dāng)緩沖區(qū)溢出時(shí)的狀態(tài)。當(dāng)緩沖區(qū)溢出時(shí)可選擇跟蹤模塊 停止或繼續(xù)工作。選擇繼續(xù)工作時(shí)。緩沖區(qū)的內(nèi)容可被覆蓋。跟蹤狀態(tài)寄 存器定義了跟蹤緩沖區(qū)的當(dāng)前狀態(tài)。緩沖區(qū)的狀態(tài)包括是否使能,是否為 空,是否溢出等。跟蹤狀態(tài)寄存器還規(guī)定了緩沖區(qū)的大小。通過配置相關(guān) 位,可將跟蹤緩沖區(qū)的大小配置為512字節(jié),256字節(jié),128字節(jié),64字 節(jié)。本發(fā)明還包括一16位的緩沖區(qū)地址指針寄存器。該寄存器存儲(chǔ)的信 息為下一個(gè)數(shù)據(jù)被存儲(chǔ)到的RAM地址。當(dāng)緩沖區(qū)不滿時(shí),指針寄存器中 的地址信息指向緩沖區(qū)中第一個(gè)未存儲(chǔ)數(shù)據(jù)的地址,此時(shí)的有效存儲(chǔ)空間 為第一個(gè)有效地址到(指針寄存器中的地址一1);當(dāng)緩沖區(qū)溢出時(shí),緩沖 區(qū)內(nèi)的數(shù)據(jù)全部為有效數(shù)據(jù),指針寄存器的地址內(nèi)容又循環(huán)回到起始地址。本發(fā)明是基于JTAG的芯片內(nèi)部在線調(diào)試模塊,實(shí)現(xiàn)外部對(duì)芯片內(nèi)部進(jìn)行調(diào)試控制功能的調(diào)試方法,包括以下步驟通過配置JTAG接口 ,從外部訪問芯片調(diào)試模塊;利用外部上層軟件, 使用擴(kuò)展的標(biāo)準(zhǔn)TAP命令;進(jìn)而通過執(zhí)行調(diào)試命令來查看芯片內(nèi)部狀態(tài),對(duì)芯片進(jìn)行控制。由上述公開的技術(shù)方案可見,本發(fā)明通過合理的設(shè)計(jì),具有較強(qiáng)的可移植性,提高了系統(tǒng)的可應(yīng)用性,降低了成本;利用JTAG標(biāo)準(zhǔn)掃描仿 真電路,避免因仿真電纜過長而產(chǎn)生信號(hào)失真;由于使用標(biāo)準(zhǔn)JTAG協(xié)議, 系統(tǒng)模塊獨(dú)立于微控制器本身,所以模塊具有較好的可移植性和兼容性; 可實(shí)現(xiàn)實(shí)時(shí)修改和查看內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM,特殊功能寄存器SFR,通 用目的寄存器GPR,程序計(jì)數(shù)器PC,査看ROM,支持單步操作和4個(gè) 斷點(diǎn)設(shè)置,支持實(shí)時(shí)跟蹤功能;功能操作標(biāo)準(zhǔn),功能內(nèi)容豐富,增強(qiáng)了本 發(fā)明系統(tǒng)的應(yīng)用性和實(shí)用性。
圖1是調(diào)試系統(tǒng)示意圖;圖2是一基本的在線調(diào)試操作時(shí)序圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步說明本發(fā)明所涉及到的芯片內(nèi)部在線調(diào)試系統(tǒng)包括上層軟件,JTAG接口 模塊1和內(nèi)部調(diào)試模塊2。通過配置JTAG接口模塊1,從外部訪問芯片調(diào)試模塊2,利用外部
上層軟件,使用擴(kuò)展的標(biāo)準(zhǔn)TAP命令,執(zhí)行調(diào)試命令,査看芯片內(nèi)部狀態(tài),對(duì)芯片進(jìn)行控制。外部調(diào)試軟件與內(nèi)部調(diào)試模塊通訊主要通過JTAG接口模塊1實(shí)現(xiàn), 使用的是擴(kuò)展的TAP命令。這些指令主要包括進(jìn)入和退出調(diào)試模式,建 立和提交調(diào)試命令,訪問調(diào)試地址和數(shù)據(jù)寄存器。從外部移位輸入這些指 令時(shí),執(zhí)行相應(yīng)的命令。1) 指令BEGINDM 代碼0100執(zhí)行的命令為進(jìn)入調(diào)試模式。當(dāng)收到此指令后,微控制器3立即停 止執(zhí)行下一條指令的邊界掃描,進(jìn)入調(diào)試模式。2) 指令A(yù)CCESS一DIR代碼0101執(zhí)行的命令為訪問調(diào)試指令寄存器。調(diào)試指令寄存器記錄保存著執(zhí) 行調(diào)試的命令。通過訪問該寄存器可以建立和提交調(diào)試命令。3) 指令EXECUTE—DIR代碼0110執(zhí)行的命令為執(zhí)行調(diào)試指令寄存器中保存的指令。這些指令為讀寫內(nèi)部存儲(chǔ)器,讀寫通用目的寄存器,讀寫程序計(jì)數(shù)器,讀寫8位和16位 的調(diào)試寄存器。4) 指令A(yù)CCESS—DADR代碼1000執(zhí)行的命令為訪問調(diào)試地址寄存器。調(diào)試地址寄存器為16位寄存器。5) 指令A(yù)CCESS—DDAT 代碼1001執(zhí)行的命令為訪問調(diào)試數(shù)據(jù)寄存器。輸入的數(shù)據(jù)要在執(zhí)行調(diào)試命令 之前被寫入相應(yīng)的寄存器中;輸出的數(shù)據(jù)要在執(zhí)行調(diào)試命令完成后被讀 出。6) 指令END_DM代碼1010執(zhí)行的命令為退出調(diào)試模式。當(dāng)微控制器3不在調(diào)試模式下時(shí),接 受到的退出調(diào)試模式命令將被忽略。在退出調(diào)試模式后,微控制器3會(huì)在 中斷的指令邊界掃描處重新正常工作。如果程序計(jì)數(shù)器在調(diào)試模式中被改 變,那么在退出調(diào)試模式后,微控制器3將在新的程序計(jì)數(shù)器指向的位置 執(zhí)行操作。外部軟件通過JTAG接口 1,訪問內(nèi)部調(diào)試模塊2,執(zhí)行調(diào)試命令。 和調(diào)試命令相關(guān)的TAP寄存器有三個(gè),分別為調(diào)試指令寄存器,調(diào)試地 址寄存器,調(diào)試數(shù)據(jù)寄存器。調(diào)試指令寄存器為16位寄存器,調(diào)試地址 寄存器為16位寄存器,調(diào)試數(shù)據(jù)寄存器為8位寄存器。調(diào)試命令具體設(shè) 置如下1) 調(diào)試命令讀內(nèi)部存儲(chǔ)器 指令寄存器代碼000000地址寄存器記錄的是內(nèi)部存儲(chǔ)器的16位地址,數(shù)據(jù)存儲(chǔ)器記錄的是 輸出的8位數(shù)據(jù)。2) 調(diào)試命令寫內(nèi)部存儲(chǔ)器
指令寄存器代碼1000000地址寄存器記錄的是內(nèi)部存儲(chǔ)器的16位地址,數(shù)據(jù)存儲(chǔ)器記錄的是 輸入的8位數(shù)據(jù)。3) 調(diào)試命令讀通用目的寄存器指令寄存器代碼000010地址寄存器記錄的是通用目的寄存器的16位地址,數(shù)據(jù)寄存器記錄 的是輸入的8位數(shù)據(jù)4) 調(diào)試命令寫通用目的寄存器 指令寄存器代碼100010地址寄存器記錄的是通用目的寄存器的16位地址,數(shù)據(jù)寄存器記錄 的是輸出的8位數(shù)據(jù)。5) 調(diào)試命令讀程序計(jì)數(shù)器 指令寄存器代碼000011地址寄存器記錄的是程序計(jì)數(shù)器的16位數(shù)據(jù)。6) 調(diào)試命令寫程序計(jì)數(shù)器 指令寄存器代碼100011地址寄存器記錄的是程序計(jì)數(shù)器的16位數(shù)據(jù)。7) 調(diào)試命令讀8位調(diào)試寄存器 指令寄存器代碼010—數(shù)據(jù)寄存器記錄的是8位調(diào)試寄存器的8位數(shù)據(jù)。8) 調(diào)試命令寫8位調(diào)試寄存器 指令寄存器代碼110--- 數(shù)據(jù)寄存器記錄的是8位調(diào)試寄存器的8位數(shù)據(jù)。9) 調(diào)試指令讀16位調(diào)試寄存器 指令寄存器代碼011 —地址寄存器記錄的是16位調(diào)試寄存器的16位數(shù)據(jù)。10) 調(diào)試指令寫16位調(diào)試寄存器 指令寄存器代碼111--地址寄存器記錄的是16位調(diào)試寄存器的16位數(shù)據(jù)。 對(duì)于內(nèi)部存儲(chǔ)器,通用目的寄存器和8位調(diào)試寄存器的讀命令,讀出的數(shù)據(jù)在命令執(zhí)行后返回到8位的數(shù)據(jù)寄存器中;對(duì)于內(nèi)部存儲(chǔ)器,通用目的寄存器和8位調(diào)試寄存器的寫命令,寫入的數(shù)據(jù)在命令執(zhí)行之前要 被放在數(shù)據(jù)寄存器中。對(duì)于16位調(diào)試寄存器和程序計(jì)數(shù)器的訪問中的數(shù) 據(jù)都要存放在16位的調(diào)試地址寄存器中。外部軟件通過JTAG接口 1控制執(zhí)行調(diào)試命令,進(jìn)而控制芯片內(nèi)部調(diào) 試模塊2,來實(shí)現(xiàn)在線調(diào)試功能。調(diào)試模塊2的寄存器包括一組8位和16 位的寄存器。8位調(diào)試寄存器包括以下幾個(gè)調(diào)試控制寄存器,調(diào)試狀態(tài) 寄存器,斷點(diǎn)控制寄存器0,斷點(diǎn)控制寄存器l,跟蹤類型寄存器,跟蹤控制寄存器,跟蹤狀態(tài)寄存器。16位調(diào)試寄存器包括以下幾個(gè)斷點(diǎn)地址寄存器0,斷點(diǎn)地址寄存器l,斷點(diǎn)地址寄存器2,斷點(diǎn)地址寄存器3, 跟蹤緩沖指針寄存器。通過硬件上的設(shè)置,本發(fā)明的調(diào)試模塊2可實(shí)現(xiàn)4個(gè)斷點(diǎn)設(shè)置。斷 點(diǎn)地址寄存器定義了存儲(chǔ)器的地址。當(dāng)微控制器3執(zhí)行程序時(shí),將微控制 器3的地址和斷點(diǎn)地址寄存器中的地址進(jìn)行比較,如果比較相同并且斷點(diǎn)
觸發(fā)被使能,那么一個(gè)斷點(diǎn)事件將被觸發(fā),隨后微控制器3將進(jìn)入調(diào)試模 式。如圖2所示為一基本的在線調(diào)試操作時(shí)序圖。示例執(zhí)行的操作步驟 為進(jìn)入調(diào)試模式,執(zhí)行調(diào)試命令(讀通用寄存器A),然后退出調(diào)試模 式。所有的操作通過JTAG接口執(zhí)行。具體步驟如下上層軟件發(fā)出BEGIN一DM命令,迫使微控制器3進(jìn)入調(diào)試模式,然 后等待TRDY管腳被置高電平。(TRDY被置高平表示芯片己準(zhǔn)備好接受 外部數(shù)據(jù))在識(shí)別處BEGIN—DM命令后,微控制器3停止執(zhí)行下一個(gè)指令的邊 界掃描,然后將TRDY輸出高電平。當(dāng)外部采樣到TRDY為高電平時(shí),上層軟件開始執(zhí)行讀寄存器A的 命令。首先,上層軟件輸入ACCESS—DADR命令,將寄存器A的地址 0x40寫入調(diào)試地址寄存器中。隨后,上層軟件輸入ACCESS—DIR命令, 將"讀寄存器A" 0x02這條指令輸入到調(diào)試指令寄存器中。接著,上層 軟件輸入EXECUTE—DIR命令告訴微控制器3,讓其執(zhí)行存放在調(diào)試指 令寄存器中的指令。在收到EXECUTE—DIR命令時(shí),微控制器3先將 TRDY置低,讀存放在調(diào)試指令寄存器中的指令,而后執(zhí)行讀寄存器A 的命令,將讀出的結(jié)果寫入到調(diào)試數(shù)據(jù)寄存器中,重新將TRDY管腳置 高。外部再次采樣到TRDY管腳為高電平時(shí),輸入ACCESS—DDAT命令, 得到讀出的數(shù)據(jù)。如沒有新的訪問命令,外部輸入END—DM命令,讓微 控制器3退出調(diào)試模式。微控制器3識(shí)別處END一DM命令時(shí),就會(huì)將 TRDY管腳輸出低電平,重新在斷點(diǎn)處執(zhí)行操作。 微控制器3進(jìn)入調(diào)試模式有兩種方式, 一種是通過TAP指令進(jìn)入, 一種是通過調(diào)試模式觸發(fā)器進(jìn)入。具體實(shí)現(xiàn)方式如下 對(duì)于TAP指令方式按照以下步驟1) 復(fù)位微控制器3,將TRST管腳輸入高電平即復(fù)位調(diào)試模塊2。2) 釋放TRST管腳,將TRST管腳輸入低電平。3) 通過JTAG接口 1輸入BEGIN—DM命令,進(jìn)入芯片調(diào)試模式。 對(duì)于調(diào)試模式觸發(fā)器方式按照以下方式1) 在調(diào)試模式下,輸入調(diào)試命令設(shè)置斷點(diǎn)。2) 通過輸入END_DM命令退出調(diào)試模式。此時(shí)微控制器3不再調(diào) 試模式,但仍然在正常的復(fù)位狀態(tài)。3) 釋放芯片復(fù)位管腳,使芯片退出復(fù)位狀態(tài)。當(dāng)微控制器3運(yùn)行到斷點(diǎn)所處的地址時(shí),芯片在執(zhí)行當(dāng)前指令之前 就又重新進(jìn)入芯片調(diào)試模式。以上介紹的僅僅是基于本發(fā)明的幾個(gè)較佳實(shí)施例子,并不能以此來 限定本發(fā)明的范圍。任何對(duì)本發(fā)明的裝置作本技術(shù)領(lǐng)域內(nèi)熟知的部件的替 換、組合、分立,以及對(duì)本發(fā)明實(shí)施步驟作本技術(shù)領(lǐng)域內(nèi)熟知的等同改變 或替換均不超出本發(fā)明的揭露以及保護(hù)范圍。
權(quán)利要求
1.一種微控制器JTAG調(diào)試方法,其特征在于一種基于JTAG的芯片內(nèi)部在線調(diào)試模塊,實(shí)現(xiàn)外部對(duì)芯片內(nèi)部進(jìn)行調(diào)試控制功能,包括以下步驟通過配置JTAG接口,從外部訪問芯片調(diào)試模塊;利用外部上層軟件,使用擴(kuò)展的標(biāo)準(zhǔn)TAP命令;進(jìn)而通過執(zhí)行調(diào)試命令來查看芯片內(nèi)部狀態(tài),對(duì)芯片進(jìn)行控制。
2. 如權(quán)利要求1所述的一種微控制器JTAG調(diào)試方法,其特征在于,所述 的JTAG接口配置還包括以下端口內(nèi)容TCK,測試時(shí)鐘端口,給TAP提供時(shí)鐘; TMS,測試模式選擇端口,對(duì)TAP控制器的狀態(tài)進(jìn)行選擇; TDI,測試數(shù)據(jù)輸入端口, TAP的外部指令和數(shù)據(jù)都是由此端口輸入進(jìn)芯 片內(nèi)部;TDO,測試數(shù)據(jù)輸出端口, TAP的內(nèi)部狀態(tài)和數(shù)據(jù)由此端口輸出到芯片外部;TRST,測試復(fù)位端口,復(fù)位芯片調(diào)試寄存器和TAP端口控制器; TRDY,測試準(zhǔn)備就緒端口,該端口標(biāo)識(shí)芯片在調(diào)試模式下并準(zhǔn)備接受外 部指令。
3. 如權(quán)利要求1所述的一種微控制器JTAG調(diào)試方法,其特征在于,所述 的擴(kuò)展的標(biāo)準(zhǔn)TAP命令方法還包括以下內(nèi)容進(jìn)入調(diào)試模式;訪問調(diào)試指令寄存器;執(zhí)行調(diào)試指令寄存器;訪問調(diào)試地址寄存器; 訪問調(diào)試數(shù)據(jù)寄存器; 退出調(diào)試模式。
4.如權(quán)利要求1所述的一種微控制器JTAG調(diào)試方法,其特征在于,所述 的查看和控制芯片內(nèi)部的方法還包括以下內(nèi)容 讀/寫內(nèi)部數(shù)據(jù)存儲(chǔ)器; 讀/寫通用目的寄存器; 讀/寫特殊功能寄存器; 讀程序存儲(chǔ)器; 讀/寫程序計(jì)數(shù)器;單步運(yùn)行;4個(gè)斷點(diǎn)設(shè)置;跟蹤緩沖器的控制。
全文摘要
本發(fā)明涉及一種微控制器JTAG調(diào)試方法,其特征在于包括以下步驟通過配置的JTAG接口,使用TAP命令訪問仿真調(diào)試模塊,執(zhí)行調(diào)試命令,從而達(dá)到實(shí)現(xiàn)在線仿真的目的。本發(fā)明使用標(biāo)準(zhǔn)的JTAG協(xié)議,使用命令具有擴(kuò)展性,也較為簡單,可以作為單獨(dú)模塊使用,具有很強(qiáng)的可移植性。本系統(tǒng)通過JTAG通訊接口,可讓芯片從正常模式進(jìn)入調(diào)試模式,可以實(shí)時(shí)修改和查看內(nèi)部SFR,RAM,GPR的內(nèi)容,查看ROM內(nèi)容,支持目標(biāo)芯片單步運(yùn)行和斷點(diǎn)的設(shè)置,可監(jiān)控地址和數(shù)據(jù)總線,實(shí)現(xiàn)實(shí)時(shí)跟蹤功能。
文檔編號(hào)G06F11/36GK101154184SQ200610116868
公開日2008年4月2日 申請日期2006年9月29日 優(yōu)先權(quán)日2006年9月29日
發(fā)明者史衛(wèi)東, 谷志坤, 趙啟山 申請人:上海海爾集成電路有限公司