侵入式調(diào)試和非侵入式調(diào)試
在嵌入式應(yīng)用的開(kāi)發(fā)過(guò)程中,需要通過(guò)調(diào)試來(lái)解決程序運(yùn)行過(guò)程中出現(xiàn)的問(wèn)題,根據(jù)是否會(huì)打斷程序的“全速運(yùn)行狀態(tài)”,調(diào)試方式可以分為侵入式調(diào)試和非侵入式調(diào)試兩類。
侵入式調(diào)試手段如下:
? 停機(jī)以及單步執(zhí)行程序
? 硬件斷點(diǎn)和斷點(diǎn)指令(BKPT)
? 變量數(shù)據(jù)觀察點(diǎn)(Watch觀察窗口)
? 訪問(wèn)寄存器的值
? 調(diào)試監(jiān)視器異常
非侵入式調(diào)試手段如下:
? 在內(nèi)核運(yùn)行的時(shí)候訪問(wèn)存儲(chǔ)器
? 指令跟蹤,需要硬件包含指令跟蹤單元(ETM)
通常情況下,我們采用的是侵入式調(diào)試,但這種調(diào)試會(huì)打破程序的全速運(yùn)行狀態(tài)。非侵入式調(diào)試則可以在保證程序全速運(yùn)行的情況下,了解程序運(yùn)行的情況。在調(diào)試大型軟件和RTOS多任務(wù)系統(tǒng),或者與通信時(shí)序相關(guān)的應(yīng)用時(shí)(非侵入式調(diào)試會(huì)破壞通信時(shí)序),應(yīng)用代碼可能突然跑飛或者產(chǎn)生異常中斷,而導(dǎo)致問(wèn)題的原因可能難以發(fā)現(xiàn)。
此時(shí)非侵入式調(diào)試如指令跟蹤這樣的功能就有著不可比擬的作用。指令跟蹤能夠記錄問(wèn)題發(fā)生之前MCU內(nèi)部的指令執(zhí)行歷史記錄,這些信息可以幫助開(kāi)發(fā)者回溯問(wèn)題現(xiàn)場(chǎng)來(lái)準(zhǔn)確定位問(wèn)題發(fā)生的原因。
指令跟蹤的實(shí)現(xiàn)方式
在嵌入式MCU調(diào)試中指令跟蹤存在多種實(shí)現(xiàn)方式,通過(guò)對(duì)比我們將能夠更清楚的了解Segger J-Trace Pro產(chǎn)品流模式指令跟蹤功能的強(qiáng)大之處。
(1)使用MCU片上緩存實(shí)現(xiàn)指令跟蹤
一些MCU內(nèi)部包含指令緩存區(qū)域,緩存區(qū)域依據(jù)不同芯片型號(hào)命名可能有所不同,例如Embedded Trace Buffer(ETB),Micro Trace Buffer(MTB),Embedded Trace FIFO(ETF)等。指令跟蹤記錄被保存在該片上區(qū)域,當(dāng)程序停止運(yùn)行時(shí),PC端調(diào)試軟件讀取該區(qū)域內(nèi)數(shù)據(jù)以獲取指令跟蹤數(shù)據(jù)。
使用該方式實(shí)現(xiàn)指令跟蹤存在的限制:
? 片上的緩存空間很小,通常緩存空間大小只有kb級(jí)別
? 只能記錄非常有限的指令執(zhí)行歷史記錄
(2)使用調(diào)試器內(nèi)部緩存進(jìn)行指令跟蹤
另外一種實(shí)現(xiàn)指令跟蹤的方式是調(diào)試器內(nèi)部提供指令緩存空間,緩存空間大小可能為MB到GB級(jí)別,但受限于調(diào)試器本身的硬件實(shí)現(xiàn)成本,調(diào)試器內(nèi)部所能夠提供的緩存空間同樣不會(huì)很大。
該方式實(shí)現(xiàn)指令跟蹤存在的限制:
? 片上的緩存空間為MB到GB范圍
? 能記錄有限的指令執(zhí)行歷史,但無(wú)法記錄從應(yīng)用開(kāi)始執(zhí)行到出現(xiàn)異常的全過(guò)程指令記錄
? 通常需要暫停應(yīng)用運(yùn)行后,PC端軟件才會(huì)讀取緩存在調(diào)試器中的Trace數(shù)據(jù)
Segger J-Trace Pro流模式指令跟蹤
前面的兩種實(shí)現(xiàn)方式都因?yàn)榫彺婵臻g大小的影響而有其使用局限性,Segger J-Trace Pro產(chǎn)品則使用流模式的方式解決了前面兩種方式存在的問(wèn)題,能夠給開(kāi)發(fā)者帶來(lái)成熟的指令跟蹤解決方案。J-Trace Pro在SWD/JTAG調(diào)試接口引腳之外,與芯片通過(guò)額外的跟蹤功能引腳連接,包括Trace時(shí)鐘和數(shù)據(jù)傳輸引腳,MCU內(nèi)部ETM模塊中記錄的指令通過(guò)J-Trace Pro以流模式的方式實(shí)時(shí)傳輸?shù)絇C端,此時(shí)指令的緩存空間在PC電腦端,因此最大的緩存空間甚至可以達(dá)到TB級(jí)別,徹底解決了前面兩種實(shí)現(xiàn)方式所存在的局限性。
J-Trace Pro支持通過(guò)流模式實(shí)時(shí)的將指令跟蹤數(shù)據(jù)傳輸?shù)诫娔X端,該方案還帶來(lái)了如下優(yōu)勢(shì):
? 指令緩存空間大小取決于電腦硬盤大小(TB級(jí)別)
? 能夠記錄應(yīng)用從開(kāi)始執(zhí)行到出現(xiàn)異常的完整指令過(guò)程
? 能夠記錄用戶與應(yīng)用程序發(fā)生交互行為中的指令執(zhí)行過(guò)程
? 提供的其他高級(jí)調(diào)試功能:
實(shí)時(shí)代碼覆蓋率分析
實(shí)時(shí)的代碼執(zhí)行情況分析
本文介紹了嵌入式MCU調(diào)試過(guò)程中幾種指令跟蹤調(diào)試功能的實(shí)現(xiàn)方式,對(duì)比可以發(fā)現(xiàn)Segger J-Trace Pro產(chǎn)品的解決方案具有明顯優(yōu)勢(shì),此外Segger還提供了配套的調(diào)試軟件Ozone,能夠提供強(qiáng)大的指令跟蹤調(diào)試功能
審核編輯 :李倩
-
mcu
+關(guān)注
關(guān)注
146文章
17135瀏覽量
351033 -
嵌入式
+關(guān)注
關(guān)注
5082文章
19111瀏覽量
304885 -
寄存器
+關(guān)注
關(guān)注
31文章
5336瀏覽量
120262
原文標(biāo)題:如何使用SEGGER J-Trace Pro流模式實(shí)現(xiàn)指令跟蹤功能?
文章出處:【微信號(hào):麥克泰技術(shù),微信公眾號(hào):麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論