繼上一篇為大家介紹了《泰凌微電子JTAG工具使用教程(一)》,本篇將繼續(xù)為大家介紹JTAG相關(guān)工具命令行的使用和常見問題及解決方法。
1
GDB常用命令的使用
正常debug的時候,可以在Telink IOT Studio上面設(shè)置斷點進(jìn)行debug,斷點停住的時候,可以去讀PC以及狀態(tài)寄存器。但是在實際的debug過程中,經(jīng)常會遇到死機(jī)的狀況,這個時候可以采用命令行方式操作GDB去讀PC以及狀態(tài)寄存器或者memory。
在Debugger Console窗口中輸入相應(yīng)命令,可以對寄存器/內(nèi)存進(jìn)行讀寫操作。
命令舉例:
讀指令:
1
x/1w 0x20000e40 (從0x20000e40讀取一個word的數(shù)據(jù))
2
x/1h 0x20000e40(從0x20000e40讀取half word的數(shù)據(jù))
3
x/1b 0x20000e40(從0x20000e40讀取一byte的數(shù)據(jù))
其中
x/: 表示讀
1: 讀取數(shù)量
W: 單位(word)
寫指令:
1
set *(unsigned int*) 0x20000e40=0x12345678
在地址0x20000e40 寫一個word,數(shù)值為0x12345678;
2
set *(unsigned short*) 0x20000e40=0x5678
在地址0x20000e40 寫half word,數(shù)值為0x5678;
3
set *(unsigned char*) 0x20000e40=0x78
在地址0x20000e40 寫1個字節(jié),數(shù)值為0x78;
其中
Set: 代表寫
unsigned char: 寫入單位
0x20000e40 : 寫入地址
0x12345678 : 寫入數(shù)值
2
Telnet常用命令的使用
使用Telnet連接工具(putty或MobaXterm等)和ICEman可以在不stall MCU的情況下來讀寫寄存器和內(nèi)存。
-
環(huán)境搭建:Mobaxterm軟件下載地址:https://mobaxterm.mobatek.net/。
-
打開ICEman(打開前確保IDE中JTAG連接斷開了,否則可能會藍(lán)屏),如果采用四線模式連接方式則執(zhí)行"./ICEman -Z v5",采用兩線模式連接方式則執(zhí)行"./ICEman -Z v5 -I aice_sdp.cfg",輸出信息中提示軟件打開了Telnet 4444號端口。
-
使用Mobaxterm軟件去連接Telnet 4444號端口。
常用設(shè)置命令:
nds configure dmi_quick_access 1
nds mem_access bus該指令用設(shè)置通過總線進(jìn)行內(nèi)存訪問(使用DMA訪問內(nèi)存)
nds mem_access cpu該指令用設(shè)置通過CPU進(jìn)行內(nèi)存訪問
上面兩條內(nèi)存訪問路徑的指令請根據(jù)實際需求來設(shè)定,如果要讀寫內(nèi)存/寄存器,需要先執(zhí)行指令nds configure dmi_quick_access 1 和 nds mem_access bus
查看調(diào)試信息
1、讀寄存器/內(nèi)存的指令為,md[x] [addr] [count]。有三部分組成,其中mdx為讀取指令,[x]可選b(字節(jié))、h(半字)、w(字)、d(雙字)[addr]是要讀取的寄存器/內(nèi)存首地址地址,[count]是數(shù)量,不輸入時默認(rèn)為1。
eg:
mdb 0xc0200018 1
mdh 0xc0200018 1
mdw 0xc0200018 1
mdd 0xc0200018 1
2、寫寄存器/內(nèi)存的指令為,mw[x] [addr] [count]。有三部分組成,其中mdx為讀取指令,[x]可選b(字節(jié))、h(半字)、w(字)、d(雙字)[addr]是要讀取的寄存器/內(nèi)存首地址地址,[count]是數(shù)量。
eg:
mwb 0xc0200018 0x12
mwh 0xc0200018 0x1234
mww 0xc0200018 0x12345678
mwd 0xc0200018 0x1234567812345678
3
JTAG常見問題及解決方法
1、斷點設(shè)置異常
目前 TLSR9 系列 SOC 支持最多兩個硬件斷點,當(dāng)程序運行的起始地址是 0x20000000 時,說明它運行在 flash 里面,需要使用硬件斷點。而 step in 或 step over 等命令本身就會用到一個斷點,所以用戶調(diào)試時只能自定義一個斷點,否則就會發(fā)生異常。這也是為什么不建議勾選 Stop on startup at,因為這個選項實際上的工作是設(shè)置了一個斷點。當(dāng)調(diào)試時發(fā)生了 cannot access memory at address xx 異常時,可以使用 info br 命令檢查一下斷點數(shù)量。
2、斷點停止異常
在使用打斷點功能時需要注意:(1)斷點前必須存在對勾,否則斷點會停不住。(2)程序停的位置可能在設(shè)置斷點位置后的一兩行,屬于正?,F(xiàn)象。
3、鏈接源文件異常
斷點調(diào)試的過程中,可能會發(fā)生找不到源文件的錯誤,此時點擊 Edit Source Path... , 如下圖:
點擊 Add, 選擇 Path Mapping, 編輯如下:
左邊需要手動輸入,右邊可以選擇路徑。此問題的原理是,將 IoT Studio 中的路徑正確映射到本地路徑,所以最簡單的映射方式也可以是將 /cygdrive/c/直接映射到 C:(示例中的 SDK 放在C盤)。上述配置完成后,即可正常調(diào)試。
4
總結(jié)
JTAG強(qiáng)大的功能為芯片研發(fā)工作提供了極大的便利。以上就是在Telink IoT Studio中使用JTAG的詳細(xì)介紹,有多種調(diào)試方式和豐富的調(diào)試功能供用戶選擇,為用戶在各種復(fù)雜環(huán)境下進(jìn)行調(diào)試提供了更大的靈活性。
關(guān) 于 泰 凌
泰凌微電子致力于為客戶提供一站式的低功耗高性能無線連接SoC芯片解決方案,包括經(jīng)典藍(lán)牙,藍(lán)牙低功耗,藍(lán)牙Mesh,Zigbee,Thread,Matter,Apple HomeKit,Apple“查找(Find My)”,和私有協(xié)議等低功耗2.4GHz多協(xié)議無線連接系統(tǒng)級芯片和豐富的固件協(xié)議棧。公司產(chǎn)品廣泛應(yīng)用于智能照明,智能家居/樓宇,智能遙控,無線外設(shè),智能零售,穿戴設(shè)備,無線音頻,智能玩具,物流追蹤,智慧城市等各類消費和商業(yè)應(yīng)用場景中。
官網(wǎng):www.telink-semi.com
微信公眾號:telink-semi
https://developers.telink-semi.cn/
銷售接洽:
中國大陸(華東、華北) :
+86-21-20281118-8213
中國大陸(華南、香港、音頻) :
+86-0755-26614003
telinksales@telink-semi.com
原文標(biāo)題:【技術(shù)專欄】泰凌微電子JTAG工具使用教程(二)
文章出處:【微信公眾號:泰凌微電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
泰凌微
+關(guān)注
關(guān)注
6文章
143瀏覽量
10771
原文標(biāo)題:【技術(shù)專欄】泰凌微電子JTAG工具使用教程(二)
文章出處:【微信號:telink-semi,微信公眾號:泰凌微電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論