廣州致遠(yuǎn)電子有限公司
TKScope仿真器調(diào)試Cortex-M3內(nèi)核的芯片有幾項(xiàng)高級(jí)功能,如觀察運(yùn)行時(shí)間、支持時(shí)間斷點(diǎn)、變量操作斷點(diǎn)等。通過(guò)這些高級(jí)調(diào)試手段,用戶能更加清楚地了解程序的運(yùn)行狀態(tài)。遇到問(wèn)題時(shí),可以快速地進(jìn)行程序定位。本文詳細(xì)闡述這些功能的具體應(yīng)用方法。
目前,TKScope支持的Cortex-M3內(nèi)核的芯片具體種類如下:
◆Atmel,AT91SAM3Uxx系列;
◆ENERGY,EFM32GxxxFxx系列;
◆TI,LM3Sxx系列;
◆ NXP,LPC17xx、LPC13xx系列;
◆ST,STM32Fxx系列;
◆TOSHIBA,TMPM330、TMPM370、TMPM380系列。
本文所講述的特性適用于上述各個(gè)系列的芯片。此外,TKScope支持Flash無(wú)限制斷點(diǎn),如上述的TI、ST各系列;其他公司的系列受制于芯片本身的限制,只支持到最大6個(gè)硬件斷點(diǎn)。
TKScope仿真器可以觀察Cortex-M3內(nèi)核的運(yùn)行時(shí)間,精度為1個(gè)時(shí)鐘,滿足客戶觀察高精度的仿真時(shí)間。TKScope不但在程序停止?fàn)顟B(tài)下可觀察運(yùn)行時(shí)間,而且在程序全速運(yùn)行時(shí)也可以快速顯示當(dāng)前的運(yùn)行時(shí)間。
運(yùn)行時(shí)間主要有 2個(gè)指標(biāo)——Tsum 和 Tcur,如圖1所示。
(1)Tsum
運(yùn)行時(shí)間總和,即復(fù)位后運(yùn)行到當(dāng)前停止時(shí)的有效運(yùn)行時(shí)間總和。Tsum是有效運(yùn)行時(shí)間的累積總和,程序處于仿真狀態(tài)但停止運(yùn)行時(shí),時(shí)間不累積。
(2)Tcur
當(dāng)前運(yùn)行時(shí)間,即當(dāng)前一次有效運(yùn)行操作經(jīng)歷的時(shí)間值。Tcur便于用戶觀察本次操作經(jīng)歷的時(shí)間。
為了保證運(yùn)行時(shí)間的準(zhǔn)確性,需要設(shè)置系統(tǒng)時(shí)鐘值。打開仿真器的[主要設(shè)置]界面,系統(tǒng)時(shí)鐘值必須與用戶實(shí)際運(yùn)行的時(shí)鐘值一致,也就是PLL輸出的時(shí)鐘值。
從圖1中可以看出,程序設(shè)置了2個(gè)斷點(diǎn),此時(shí)程序在第2個(gè)斷點(diǎn)處停止。運(yùn)行時(shí)間的具體意義如下:Tsum顯示的是程序從開始運(yùn)行到第2個(gè)斷點(diǎn)處所經(jīng)歷的時(shí)間;Tcur顯示的是從第1個(gè)斷點(diǎn)處運(yùn)行到第2個(gè)斷點(diǎn)處所經(jīng)歷的時(shí)間。
TKScope仿真器支持時(shí)間斷點(diǎn)功能,即運(yùn)行時(shí)間與時(shí)間斷點(diǎn)設(shè)置的時(shí)間相同時(shí),程序停止運(yùn)行。如圖2所示,在運(yùn)行時(shí)間的下面可以看到Tbreak,這就是時(shí)間斷點(diǎn)。用戶可以根據(jù)實(shí)際觀察需要,設(shè)置Tbreak的值,注意單位是ns。當(dāng)程序運(yùn)行時(shí)間累積到Tbreak的值時(shí),程序停止運(yùn)行。
TKScope支持變量操作斷點(diǎn),當(dāng)對(duì)某一個(gè)變量進(jìn)行讀寫操作時(shí),通過(guò)設(shè)置變量讀寫操作斷點(diǎn),讓程序停止運(yùn)行。
在Keil MDK環(huán)境下,進(jìn)入仿真狀態(tài)之后,打開[Debug]菜單下的[Breakpoints]選項(xiàng)。在Breakpoints窗口即可定義變量操作斷點(diǎn)。
具體定義方法:在Expression文本框內(nèi)輸入變量的地址,然后選擇讀寫屬性,并正確設(shè)置字節(jié)范圍,最后單擊Define按鈕即可。
圖1 運(yùn)行時(shí)間觀察窗口
圖2 時(shí)間斷點(diǎn)窗口
例如,在從地址0x20004000開始、16字節(jié)范圍內(nèi),定義讀寫斷點(diǎn)操作,具體設(shè)置方法如圖3所示。
圖3 定義讀寫操作斷點(diǎn)
在圖3中單擊Define按鈕之后,斷點(diǎn)即可設(shè)置成功,如圖4所示。圖4中共定義了4種類型的斷點(diǎn)。
斷點(diǎn)1:表示從地址0x20004000開始、16字節(jié)范圍內(nèi),出現(xiàn)讀或?qū)懙牟僮?則中斷。
斷點(diǎn)2:表示從地址0x20004100開始、8字節(jié)范圍內(nèi),出現(xiàn)讀的操作,則中斷。
斷點(diǎn)3:表示從地址0x20004200開始、4字節(jié)范圍內(nèi),出現(xiàn)寫的操作,則中斷。
斷點(diǎn)4:表示從地址0x20004300開始、1字節(jié)范圍內(nèi),出現(xiàn)讀或?qū)懙牟僮?則中斷。
圖4 Breakpoints定義斷點(diǎn)窗口
注意:len表示在一個(gè)地址范圍內(nèi)該斷點(diǎn)有效,len必須為 1、2、4、8、16 、32(乘 2 遞增),同時(shí)地址必須處于 len的起始位置。例如 len=16,則地址必須為0x10字節(jié)對(duì)齊,0x40000010為有效的起始地址,而地址0x40000018為無(wú)效,將被系統(tǒng)強(qiáng)行修正為0x40000010。
TKSope仿真Cortex-M3內(nèi)核有這些高級(jí)手段,更加方便用戶調(diào)試,讓開發(fā)工程更輕松。TKScope針對(duì)其他內(nèi)核也會(huì)推出一些列的高級(jí)調(diào)試手段,后續(xù)會(huì)繼續(xù)介紹,敬請(qǐng)關(guān)注。
單片機(jī)與嵌入式系統(tǒng)應(yīng)用2011年5期