1 引言
集成電路制造工藝的飛速發(fā)展推動(dòng)了信息技術(shù)的發(fā)展,而信息技術(shù)的核心是微處理器技術(shù)。微處理器的總體發(fā)展趨勢(shì)是功能越來(lái)越強(qiáng)大,工作頻率越來(lái)越高。由于微處理器芯片從設(shè)計(jì)過(guò)程到生產(chǎn)過(guò)程中都可能產(chǎn)生一些缺陷,這些缺陷都將最終影響微處理器的功能和性能,為了保證微處理器功能的正確性,減少設(shè)計(jì)風(fēng)險(xiǎn),對(duì)其進(jìn)行測(cè)試和調(diào)試是必不可少的。但是微處理器的發(fā)展趨勢(shì)也導(dǎo)致了微處理器芯片的測(cè)試與調(diào)試變得更加復(fù)雜,板級(jí)調(diào)試系統(tǒng)設(shè)計(jì)和調(diào)試軟件的開(kāi)發(fā)也越來(lái)越困難。特別是進(jìn)入21世紀(jì),集成電路進(jìn)入了高度集成的系統(tǒng)芯片SoC(System-On-Chip)時(shí)代,而嵌入式微處理器是系統(tǒng)芯片的核心。傳統(tǒng)的微處理器的調(diào)試方法采用監(jiān)測(cè)并控制其地址與數(shù)據(jù)總線的方法。對(duì)于高度集成化的系統(tǒng)芯片,由于封裝尺寸的限制,不可能將嵌入片內(nèi)的微處理器信號(hào)引出片外,通過(guò)外部直接測(cè)試和調(diào)試。在板級(jí),通過(guò)軟件模擬、驗(yàn)證和分析等系統(tǒng)功能調(diào)試已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足功能正確性調(diào)試和故障定位等要求,所以微處理器芯片,特別是嵌入式微處理器,硬件上支持片上測(cè)試和調(diào)試功能顯得十分重要。
為了能讓嵌入式微處理器的片上調(diào)試功能也能夠像高級(jí)語(yǔ)言編程工具那樣支持?jǐn)帱c(diǎn)設(shè)置、單步執(zhí)行、寄存器內(nèi)容的查看和內(nèi)存內(nèi)容查看等功能,文章提出了一種在線調(diào)試模塊設(shè)計(jì),此設(shè)計(jì)為嵌入式微處理器增加了一些專用的調(diào)試引腳,通過(guò)這些引腳可以響應(yīng)硬件和軟件觸發(fā),提供開(kāi)始/停止調(diào)試模試,單步調(diào)試操作以及程序執(zhí)行的跟蹤。有了這些引腳,還可以對(duì)微處理器做調(diào)試接口,提供更好的調(diào)試性能,查錯(cuò)功能,從基本停止/ 開(kāi)始或單步執(zhí)行到硬件、軟件斷點(diǎn)支持再到對(duì)數(shù)據(jù)存儲(chǔ)區(qū)、程序存儲(chǔ)區(qū)和SFRs的訪問(wèn)和修改以及對(duì)程序進(jìn)行跟蹤。
2 嵌入式微處理器的片上調(diào)試原理
為微處理器增加的調(diào)試引腳及其功能如表1所示。
可實(shí)現(xiàn)的調(diào)試功能:
⑴ 開(kāi)始/停止debug模式
可以通過(guò)兩種方式進(jìn)入調(diào)試模式即硬件請(qǐng)求或者軟件中斷指令TRAP。硬件請(qǐng)求進(jìn)入到debug模式將發(fā)出一個(gè)DebugReq信號(hào)。這個(gè)信號(hào)在核運(yùn)行的每個(gè)指令操作的最后一個(gè)周期的第一個(gè)階段進(jìn)行采樣,若是采樣信號(hào)為高,核將完成當(dāng)前指令,插入一個(gè)NOP指令。在NOP指令的第一階段的最后核將發(fā)出一個(gè)DebugAck信號(hào)然后進(jìn)入debug模式。它的時(shí)序圖見(jiàn)圖1。當(dāng)TRAP指令被執(zhí)行的時(shí)候,核只是簡(jiǎn)單的發(fā)送一個(gè)DebugAck信號(hào),然后在這個(gè)單一周期指令第一個(gè)階段的結(jié)束進(jìn)入debug模式。
在debug模式,核在每個(gè)機(jī)器周期的第一階段的最后采樣DebugReq信號(hào),當(dāng)DebugReq信號(hào)為高之后采樣一個(gè)機(jī)器周期的信號(hào),如果為低則離開(kāi)調(diào)試模式(置DebugAck信號(hào)無(wú)效)。它的時(shí)序圖見(jiàn)圖2。注意:如果在TRAP下進(jìn)入調(diào)試模式,外部硬件必須在重新置信號(hào)為低之前置DebugReq信號(hào)為高一個(gè)機(jī)器周期才可以離開(kāi)試模式。
圖1 進(jìn)入debug模式的時(shí)序圖 圖2 退出debug模式的時(shí)序圖
①DebugReq采樣信號(hào)為高電平。① DebugRep采樣信號(hào)為高電平。
②微處理器內(nèi)核進(jìn)入調(diào)試模式,置DebugAck 為高電平。 ② DebugRep 采樣信號(hào)為低,CPU核置DebugAck為低并離開(kāi)調(diào)試模式。
其中 PROGA 為程序存儲(chǔ)器的地址總線,PROGA_EN 為程序存儲(chǔ)器的地址總線使能。它們是微處理器內(nèi)核已經(jīng)設(shè)計(jì)好的。
⑵單步調(diào)試
在調(diào)試模式下,把DebugReq 置成無(wú)效的低信號(hào),微處理器執(zhí)行一個(gè)用戶指令,等待DebugAck 信號(hào)無(wú)效的時(shí)候指出離開(kāi)了調(diào)試模式,再把DebugReq 信號(hào)置成高電平。
⑶程序執(zhí)行的跟蹤信號(hào) DebugPFetch 和Debug Vector 支持程序追蹤。當(dāng)程序代碼在下一個(gè)上升緣被讀取的時(shí)候DebugPFetch信號(hào)發(fā)出,它并不發(fā)送程序數(shù)據(jù)提取的信號(hào)。(例如使用MOVC 指令讀取數(shù)據(jù))。當(dāng)在程序計(jì)數(shù)器里的下一個(gè)代碼表現(xiàn)為一個(gè)間斷性程序的時(shí)候DebugVector 被發(fā)送,(例如Jump,Call 或者Return 指令)。
⑷外部數(shù)據(jù)存儲(chǔ)器、SFR、內(nèi)部數(shù)據(jù)存儲(chǔ)器的讀和寫
提供了一個(gè)時(shí)序發(fā)生器一個(gè)RAM,它包含了一些訪問(wèn)存儲(chǔ)器的指令。當(dāng)一個(gè)時(shí)序開(kāi)始的時(shí)候,DebugStep信號(hào)發(fā)送直到時(shí)序結(jié)束。因此時(shí)序指令以全速的處理器速度運(yùn)行。在微處理器程序輸入端設(shè)計(jì)了一個(gè)多路選擇器允許時(shí)序發(fā)生器的指令給內(nèi)核執(zhí)行。時(shí)序發(fā)生器中的指令總是把想訪問(wèn)的存儲(chǔ)器和SFRs 中的數(shù)據(jù)加載到累加器A 中,因此只要把XRAMD0 總線的狀態(tài)存儲(chǔ)到結(jié)果儲(chǔ)存器中,然后通過(guò)JTAG 接口把結(jié)果儲(chǔ)存器讀出就可以得知存儲(chǔ)器和SFRs 中的數(shù)據(jù)。給出一個(gè)讀內(nèi)部數(shù)據(jù)存儲(chǔ)器的時(shí)序發(fā)生器中的程序。其中Temp1,Temp 是時(shí)序發(fā)生器中定義的存放中間數(shù)據(jù)的寄存器。
3 微處理器的在線調(diào)試模塊的結(jié)構(gòu)設(shè)計(jì)
在微處理器內(nèi)核中設(shè)計(jì)的調(diào)試部分為DebugReq 信號(hào)鎖存器、調(diào)試狀態(tài)機(jī)、操作碼指示器。
調(diào) 試 狀 態(tài) 機(jī) 是 有 DebugReq 、DebugAck、DebugStep、TRAP 信號(hào)來(lái)控制的。它有4 種狀態(tài):00、01、10、11。00 表示用戶狀態(tài)。01 表示調(diào)試開(kāi)始狀態(tài),此狀態(tài)時(shí)已檢測(cè)到DebugReq 信號(hào)有效,插入NOP 指令。01 表示單步調(diào)試模式,已檢測(cè)到DebugStep 信號(hào)有效。11 為調(diào)試模式。狀態(tài)機(jī)為10、11 時(shí)都要置DebugAck 為有效信號(hào),進(jìn)入Debug 模式。
操作碼指示器是有指令譯碼器和狀態(tài)機(jī)譯碼器控制的。當(dāng)程序代碼在下一個(gè)上升緣被讀取的時(shí)候(而不是程序數(shù)據(jù)的讀?。?操作碼指示器就置DebugPFetch 為有效信號(hào),以實(shí)現(xiàn)對(duì)程序的跟蹤。當(dāng)操作碼指示器檢測(cè)到程序計(jì)數(shù)器為不連續(xù)數(shù)值時(shí)置DebugVector 為有效信號(hào)。
外部數(shù)據(jù)存儲(chǔ)器、SFR、內(nèi)部數(shù)據(jù)存儲(chǔ)器的讀和寫是基于1149.1 JTAG 的設(shè)計(jì)。IEEE 1149.1 JTAG 接口是專門為集成電路測(cè)試和電路板系統(tǒng)測(cè)試制定的國(guó)際標(biāo)準(zhǔn)。TDI(數(shù)據(jù)輸入),TMS(TAP 模式選擇),TCK(測(cè)試時(shí)鐘輸入),TRST(測(cè)試接口復(fù)位),TDO(數(shù)據(jù)輸出)是JTAG 的5 個(gè)外部管腳。調(diào)試部分電路為:調(diào)試掃描鏈、調(diào)試數(shù)據(jù)寄存器、指令譯碼器、時(shí)序發(fā)生器和多路選擇器(MUX)。時(shí)序發(fā)生器是一個(gè)RAM,它包含了一些訪問(wèn)存儲(chǔ)器的指令。指令010110xx 表示啟動(dòng)時(shí)序發(fā)生器,把預(yù)先存好的訪問(wèn)程序送到微處理器的程序輸入端(PROGDI),微處理器執(zhí)行這些程序,實(shí)現(xiàn)對(duì)存儲(chǔ)器、SFR 的訪問(wèn)。指令譯碼器對(duì)調(diào)試指令進(jìn)行譯碼,并發(fā)出調(diào)試控制信號(hào),比如:設(shè)置DebugReq 為有效,進(jìn)入Debug 模式;啟動(dòng)時(shí)序發(fā)生器,控制多路選擇器(MUX),讓PROGDI 上的信號(hào)為時(shí)序發(fā)生器中的指令。調(diào)試數(shù)據(jù)寄存器是為存放中間數(shù)據(jù)和訪問(wèn)結(jié)果數(shù)據(jù)的。調(diào)試掃描鏈對(duì)中間數(shù)據(jù)和訪問(wèn)結(jié)果進(jìn)行查看。
4 結(jié)論
此設(shè)計(jì)給微處理器內(nèi)核增加了一些調(diào)試引腳。實(shí)現(xiàn)了開(kāi)始/停止調(diào)試模試,單步調(diào)試操作以及程序執(zhí)行的跟蹤的調(diào)試功能。這些引腳使內(nèi)核具有很好的可擴(kuò)張性,可對(duì)芯片增加調(diào)試接口,實(shí)現(xiàn)更強(qiáng)大的調(diào)試功能?;?149.1 JTAG 接口的對(duì)存儲(chǔ)器、SFR 訪問(wèn),既可以使芯片原有的測(cè)試功能不受影響,又可以節(jié)省硬件,減少開(kāi)銷。帶Debug 模塊的微處理器在SMIC 的0.25um 標(biāo)準(zhǔn)單元庫(kù)映射綜合后,可工作在120MHz。仿真的結(jié)果表明,擴(kuò)充Debug 功能的JTAG 接口所增加的芯片面積很少,而且在對(duì)存儲(chǔ)器、SFR 進(jìn)行訪問(wèn)時(shí)不影響處理器的工作速度。
責(zé)任編輯:gt
-
芯片
+關(guān)注
關(guān)注
455文章
50816瀏覽量
423663 -
嵌入式
+關(guān)注
關(guān)注
5082文章
19126瀏覽量
305241 -
微處理器
+關(guān)注
關(guān)注
11文章
2263瀏覽量
82457
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論