在嵌入式Linux開(kāi)發(fā)領(lǐng)域,串口打印調(diào)試因操作簡(jiǎn)單、易上手的特性而被廣泛使用。但當(dāng)應(yīng)用場(chǎng)景轉(zhuǎn)向AMP實(shí)時(shí)方案時(shí),其局限性被急劇放大——實(shí)時(shí)性不足、性能開(kāi)銷較高、調(diào)試深度有限的問(wèn)題,在多核協(xié)同工作場(chǎng)景中尤為突出,尤其在需要精確分析核心間同步機(jī)制、中斷響應(yīng)時(shí)序及資源共享沖突時(shí),傳統(tǒng)串口調(diào)試往往難以滿足需求。
針對(duì)這一痛點(diǎn),JTAG調(diào)試技術(shù)提供了專業(yè)且高效的解決方案。
JTAG(Joint Test Action Group)調(diào)試技術(shù)是一種廣泛應(yīng)用于嵌入式系統(tǒng)開(kāi)發(fā)和硬件測(cè)試的國(guó)際標(biāo)準(zhǔn)技術(shù),它具備深度交互與實(shí)時(shí)控制能力,可在線設(shè)置斷點(diǎn)、執(zhí)行單步調(diào)試,同時(shí)支持實(shí)時(shí)查看并修改寄存器與變量值;更關(guān)鍵的是,其非侵入式調(diào)試模式無(wú)需在代碼中插入打印語(yǔ)句,能最大程度保留程序原有邏輯與運(yùn)行性能,且可隨時(shí)暫停CPU,精準(zhǔn)捕捉任一時(shí)刻的系統(tǒng)完整狀態(tài),快速定位各類復(fù)雜調(diào)試難題。
方案架構(gòu):一體化JTAG調(diào)試生態(tài)
這里我們用飛凌嵌入式基于RK3568處理器設(shè)計(jì)開(kāi)發(fā)的OK3568-C開(kāi)發(fā)板進(jìn)行演示。


飛凌嵌入式實(shí)現(xiàn)的方案基于完整的工具鏈整合,在Windows環(huán)境下提供無(wú)縫調(diào)試體驗(yàn)。系統(tǒng)架構(gòu)分為三個(gè)關(guān)鍵層次:開(kāi)發(fā)主機(jī)層、硬件接口層和目標(biāo)設(shè)備層。
開(kāi)發(fā)主機(jī)層基于Eclipse IDE,集成CDT開(kāi)發(fā)工具和GNU MCU Eclipse插件,提供友好的圖形化界面。調(diào)試指令通過(guò)GDB生成,經(jīng)由OpenOCD轉(zhuǎn)換協(xié)議,最終通過(guò)J-Link硬件接口與RK3568芯片通信。

這一架構(gòu)的核心優(yōu)勢(shì)在于高度集成與透明化,開(kāi)發(fā)者無(wú)需關(guān)注底層通信細(xì)節(jié),可專注于代碼邏輯和問(wèn)題定位。
一、調(diào)試實(shí)戰(zhàn):可視化的問(wèn)題定位流程
溫馨提示:以下演示視頻在PC端觀看,畫(huà)面更清晰
1. 斷點(diǎn)暫停
在飛凌嵌入式的JTAG方案中,斷點(diǎn)調(diào)試變得直觀簡(jiǎn)單。工程師只需在代碼左側(cè)雙擊即可設(shè)置斷點(diǎn),程序執(zhí)行到此處自動(dòng)暫停,方便檢查此刻所有核心的變量、寄存器和內(nèi)存狀態(tài)。
(1)設(shè)置斷點(diǎn):雙擊代碼左側(cè),當(dāng)出現(xiàn)“藍(lán)色小球”后說(shuō)明此處有一個(gè)斷點(diǎn),程序執(zhí)行到此處后會(huì)暫停運(yùn)行。
1
2
3
4
5
6(2) 取消斷點(diǎn):雙擊代碼左側(cè)的“藍(lán)色小球”,當(dāng)小球消失后,則表示此處斷點(diǎn)取消。
7(3) 忽略所有斷點(diǎn):此時(shí)所有斷點(diǎn)取消,程序可全速運(yùn)行。
1
22. 單步、多步執(zhí)行
(1) 單步執(zhí)行多種模式:Step Over可跳過(guò)函數(shù)調(diào)用,Step Into可深入函數(shù)內(nèi)部,Step Return則可快速執(zhí)行完當(dāng)前函數(shù)剩余部分。
1
2
3
(2) 多步執(zhí)行:包括“運(yùn)行到光標(biāo)處”和“繼續(xù)運(yùn)行”,滿足不同場(chǎng)景需求。
1
23. 變量查看
(1) 局部變量實(shí)時(shí)顯示當(dāng)前函數(shù)作用域內(nèi)的值變化,而且能修改變量的數(shù)值。

(2) 全局變量則在整個(gè)調(diào)試會(huì)話期間均可訪問(wèn),暫停后能反映系統(tǒng)全局狀態(tài)的實(shí)時(shí)快照。
1
2
3
4
5
64. 內(nèi)存查看
(1) 地址訪問(wèn)與修改功能直接而強(qiáng)大。通過(guò)內(nèi)存瀏覽器,工程師可以直接讀取指定內(nèi)存或寄存器地址,觀察內(nèi)存內(nèi)容、驗(yàn)證寄存器配置。
1
2
3
4
5(2) 還可向指定地址寫(xiě)入新值,動(dòng)態(tài)改變內(nèi)存數(shù)據(jù)、配置外設(shè)寄存器。
1
2
3
4
5以上這套AMP多核協(xié)同場(chǎng)景下的JTAG調(diào)試方案顯著地降低了實(shí)時(shí)核調(diào)試技術(shù)的使用門檻。將調(diào)試工作可視化,可同時(shí)監(jiān)控AMP實(shí)時(shí)核狀態(tài),讓程序跳轉(zhuǎn)、任務(wù)切換等動(dòng)作變得更加清晰,希望這套方案能夠?qū)δ兴鶐椭?/p>
-
嵌入式
+關(guān)注
關(guān)注
5208文章
20620瀏覽量
336672 -
JTAG
+關(guān)注
關(guān)注
6文章
415瀏覽量
75268 -
Amp
+關(guān)注
關(guān)注
0文章
101瀏覽量
48638 -
SWD
+關(guān)注
關(guān)注
1文章
60瀏覽量
12694 -
RK3568
+關(guān)注
關(guān)注
5文章
654瀏覽量
8090
發(fā)布評(píng)論請(qǐng)先 登錄
北京迅為RK3568開(kāi)發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)
RK3568開(kāi)發(fā)板數(shù)據(jù)手冊(cè)
【ROC-RK3568-PC開(kāi)發(fā)板試用體驗(yàn)】Firefly ROC-RK3568-PC開(kāi)發(fā)板初探
RK3568開(kāi)發(fā)板借助 U 盤(pán)或 TF 卡拷貝程序到開(kāi)發(fā)板上
【教程上新】基于迅為iTOP-RK3568開(kāi)發(fā)板的OpenCV開(kāi)發(fā)手冊(cè)
迅為RK3568開(kāi)發(fā)板Debian系統(tǒng)使用python 進(jìn)行攝像頭開(kāi)發(fā)
迅為RK3568開(kāi)發(fā)板驅(qū)動(dòng)開(kāi)發(fā)指南-輸入子系統(tǒng)
能力再次提升! 迅為RK3588/RK3568開(kāi)發(fā)板&核心板新增定制分區(qū)鏡像
【迅為工業(yè)RK3568穩(wěn)定可靠】itop-3568開(kāi)發(fā)板Linux驅(qū)動(dòng)開(kāi)發(fā)實(shí)戰(zhàn):RK3568內(nèi)核模塊符號(hào)導(dǎo)出詳解
突破AMP架構(gòu)調(diào)試瓶頸:RK3568開(kāi)發(fā)板的JTAG仿真方案
評(píng)論