通過JLINK實現串列埠顯示除錯
首先宣告,這個技巧是從網上找到的,並非本人原創。
我們在除錯的時候,經常會需要使用到printf指令,通過串列埠除錯工具來檢視變數的值,如果是單步或線上除錯時,就需要連線JLINK和串列埠線,對於筆記本,現在都是需要USB轉串列埠,使用起來比較麻煩。
經過在網上搜尋,發現一個好的方法,就是隻用JLINK一根線,就可以既線上除錯程式,同時也可以檢視printf顯示的資料,方法如下:
首先,建立一個.c 的檔案,內容如下:
#define ITM_Port8(n) (*((volatile unsigned char *)(0xE0000000+4*n)))
#define ITM_Port16(n) (*((volatile unsigned short*)(0xE0000000+4*n)))
#define ITM_Port32(n) (*((volatile unsigned long *)(0xE0000000+4*n)))
#define DEMCR (*((volatile unsigned long *)(0xE000EDFC)))
#define TRCENA 0x01000000
struct __FILE { int handle; /* Add whatever you need here */ };
FILE __stdout;
FILE __stdin;
int fputc(int ch, FILE *f)
{
if (DEMCR & TRCENA)
{
while (ITM_Port32(0) == 0);
ITM_Port8(0) = ch;
}
return ch;
}
然後在配置裡面(Options for Target)選擇除錯工具為J-LINK/J-TRACE Cortex,點選Settings,選擇Trace選項,使能Trace,時鐘選擇實際時鐘,比如我是72MHz,在ITM Stimulus Ports只勾選Port0,。
最後,點選模擬,選擇View---serial windows----debug viewer就可以像在串列埠除錯工具裡面一樣顯示了。
我們在除錯的時候,經常會需要使用到printf指令,通過串列埠除錯工具來檢視變數的值,如果是單步或線上除錯時,就需要連線JLINK和串列埠線,對於筆記本,現在都是需要USB轉串列埠,使用起來比較麻煩。
經過在網上搜尋,發現一個好的方法,就是隻用JLINK一根線,就可以既線上除錯程式,同時也可以檢視printf顯示的資料,方法如下:
首先,建立一個.c 的檔案,內容如下:
#define ITM_Port8(n) (*((volatile unsigned char *)(0xE0000000+4*n)))
#define ITM_Port16(n) (*((volatile unsigned short*)(0xE0000000+4*n)))
#define ITM_Port32(n) (*((volatile unsigned long *)(0xE0000000+4*n)))
#define DEMCR (*((volatile unsigned long *)(0xE000EDFC)))
#define TRCENA 0x01000000
struct __FILE { int handle; /* Add whatever you need here */ };
FILE __stdout;
FILE __stdin;
int fputc(int ch, FILE *f)
{
if (DEMCR & TRCENA)
{
while (ITM_Port32(0) == 0);
ITM_Port8(0) = ch;
}
return ch;
}
然後在配置裡面(Options for Target)選擇除錯工具為J-LINK/J-TRACE Cortex,點選Settings,選擇Trace選項,使能Trace,時鐘選擇實際時鐘,比如我是72MHz,在ITM Stimulus Ports只勾選Port0,。
最後,點選模擬,選擇View---serial windows----debug viewer就可以像在串列埠除錯工具裡面一樣顯示了。
相關文章
- web實現串列埠除錯助手Web串列埠除錯
- 串列埠通訊gui介面顯示串列埠GUI
- 用VB除錯串列埠通訊 (轉)除錯串列埠
- 樹莓派已經通過網路連線通過串列埠通訊在串列埠除錯小助手列印與操作樹莓派串列埠除錯
- win10 如何除錯串列埠_win10串列埠除錯怎麼除錯Win10除錯串列埠
- 9針串列埠除錯串列埠除錯
- serial for mac 串列埠除錯工具Mac串列埠除錯
- 通過串列埠進行通訊 :串列埠
- FX-3U PLC串列埠與PC通訊除錯串列埠除錯
- linux串列埠命令列除錯Linux串列埠命令列除錯
- 沒有真實串列埠裝置時使用"虛擬串列埠驅動"除錯你的串列埠程式碼串列埠除錯
- 痞子衡嵌入式:串列埠除錯工具Jays-PyCOM誕生記(3)- 串列埠功能實現(pySerial)串列埠除錯
- ros中使用serial包實現串列埠通訊ROS串列埠
- 打工筆記--------------------------c#實現串列埠通訊筆記C#串列埠
- C#實現掃碼槍串列埠通訊C#串列埠
- 嵌入式系統除錯Uboot串列埠互動除錯除錯boot串列埠
- 串列埠通訊利器:SerialPortStream庫詳解,輕鬆實現C#串列埠開發串列埠C#
- 虛擬串列埠工具和串列埠除錯工具詳解 - 附下載地址串列埠除錯
- 串列埠通訊串列埠
- gdbserver連線Ubuntu除錯程式(使用串列埠)ServerUbuntu除錯串列埠
- 超好用的繪圖串列埠除錯助手繪圖串列埠除錯
- Java實現RS485串列埠通訊Java串列埠
- 前端通過background實現圖片裁剪顯示的方法前端
- QT實現串列埠助手中串列埠名的實時更新QT串列埠
- 【linux學習--工具篇】串列埠除錯工具Linux串列埠除錯
- java 實現微控制器與PC串列埠通訊Java串列埠
- 串列埠通訊 (轉)串列埠
- 串列埠資料抓取及串列埠通訊模擬串列埠
- 【recovery】android使用串列埠列印recovery除錯日誌Android串列埠除錯
- 嵌入式:本機檢視串列埠除錯資訊串列埠除錯
- 一款小而美的線上串列埠除錯工具串列埠除錯
- linux 串列埠通訊Linux串列埠
- 串列埠通訊協議串列埠協議
- Android 串列埠通訊Android串列埠
- C# 串列埠通訊C#串列埠
- 11. 串列埠通訊串列埠
- 串列埠通訊型別串列埠型別
- (10)uart串列埠通訊串列埠