ARM DS-5進行高級調(diao)試和診(zhen)斷的一些方法和技(ji)巧
時間:2024-12-05 來源(yuan):華清(qing)遠見
ARM DS-5是(shi)一款功(gong)能強大(da)的集成開發(fa)環境(IDE),專(zhuan)為ARM架構的處理器設計。它提供了豐富的工具和(he)(he)(he)(he)功(gong)能,用(yong)于高級調(diao)(diao)試和(he)(he)(he)(he)診斷,幫助開發(fa)人(ren)員深入分析和(he)(he)(he)(he)優(you)化他們(men)的應用(yong)程序。以下是(shi)使用(yong)ARM DS-5進行(xing)高級調(diao)(diao)試和(he)(he)(he)(he)診斷的一些方法(fa)和(he)(he)(he)(he)技巧:
1 DS-5 工程創建
1. 啟動 DS-5 并設置工作空間:從桌面菜單中選擇 “Eclipse for DS-5” 來啟動 DS-5。在彈出的(de) “Workspace Launcher” 對話框中,可以接受默認的(de)工作空(kong)間,也可以點(dian)擊 “Browse” 選擇一個文件夾作為工作空(kong)間,例(li)如 “c:\ds-5_workspace”,并勾選 “Use this as the default and do not ask again” 選項(xiang)后點(dian)擊 “OK”。
2. 獲取許可證:如果是首(shou)次使(shi)用 DS-5,會(hui)彈(dan)出 “No License Found” 對話(hua)(hua)框(kuang),點(dian)擊 “Open License Manager”,在 “ARM License Manager” 對話(hua)(hua)框(kuang)中(zhong)(zhong)點(dian)擊 “Add License”,接(jie)著在 “Add License” 對話(hua)(hua)框(kuang)中(zhong)(zhong)選(xuan)(xuan)擇(ze) “Generate a 30-day evaluation license for DS-5 Ultimate Edition” 選(xuan)(xuan)項并(bing)點(dian)擊 “Next”。然后在 “Choose Network Interface” 對話(hua)(hua)框(kuang)中(zhong)(zhong)選(xuan)(xuan)擇(ze)一個(ge)網絡接(jie)口,建議選(xuan)(xuan)擇(ze)物理網絡接(jie)口。在 “Developer Account Details” 對話(hua)(hua)框(kuang)中(zhong)(zhong)輸入 ARM 開發(fa)者(銀牌)賬(zhang)號的(de)(de)(de)詳細信息,如果沒有賬(zhang)號則需創建一個(ge),最后點(dian)擊 “Finish”。當(dang)許可證成功注冊后,可在 “ARM License Manager” 中(zhong)(zhong)看到 30 天的(de)(de)(de)評估許可證以(yi)及可用的(de)(de)(de)工具包,關閉該(gai)對話(hua)(hua)框(kuang),并(bing)在確(que)認重啟 Eclipse 的(de)(de)(de)對話(hua)(hua)框(kuang)中(zhong)(zhong)點(dian)擊 “Restart Eclipse”。
3. 創建新項目:從 DS-5 主(zhu)菜單中選(xuan)(xuan)擇 “File”->“New”->“C Project”,彈出 “C Project” 對話框。在 “Project name” 字段中輸入(ru)項(xiang)(xiang)(xiang)目(mu)名稱,如 “hello world”;在 “Project type” 下選(xuan)(xuan)擇 “Executable”->“Empty Project”;在 “Toolchains” 中選(xuan)(xuan)擇 “ARM Compiler 5”,點擊 “Finish” 即(ji)可創建一個名為 “hello world” 的 C 項(xiang)(xiang)(xiang)目(mu),可在 “Project Explorer” 視圖中查看該項(xiang)(xiang)(xiang)目(mu)。

2 ARM DS-5 加載 ELF 文件運行
1. 創建工程并掃描硬件信息:使用 ARM DS-5 前(qian)需創(chuang)建工程(cheng)項目,并掃描相應硬件信息(xi),如 CPU、Coresight 組件、Cache 等,掃描完成后(hou)再執行(xing) “build platform”12.
2. 創建加載腳本:可(ke)通(tong)過 JTAG 接口用(yong) DS-5 將鏡像燒寫到內存(cun),配置(zhi) PC 指針(zhen)來啟動(dong)固件(jian)。創建腳(jiao)本時要注意將固件(jian)啟動(dong)匯編部分的 data 段的 copy 部分注釋掉,因為 DS-5 加(jia)載 elf 文件(jian)時會(hui)自(zi)動(dong)根據(ju) elf 符號表將 data 段加(jia)載到對應地址(zhi)1.
3. 執行腳本:執行(xing) DS-5 腳本時(shi)先進行(xing) SoC reset 操(cao)作(zuo),reset 后(hou)系(xi)統(tong)從 bootrom 重啟,DS-5 接(jie)入,接(jie)著(zhu)執行(xing) stop 命(ming)令,再 load elf 文件,DS-5 會自(zi)動(dong)解析(xi)入口點,最(zui)后(hou)執行(xing) run 命(ming)令即可1.

3 ARM DS-5 斷點設置及常用 Debug 命令
1. 斷點設置:在(zai) DS-5 的(de)調試界面中(zhong),可在(zai)代碼行號左側空(kong)白(bai)處點擊(ji)設置普通斷(duan)(duan)點。對于條件(jian)斷(duan)(duan)點,在(zai)斷(duan)(duan)點設置窗(chuang)口中(zhong)找到(dao)對應的(de)斷(duan)(duan)點,于條件(jian)表達(da)式框(kuang)中(zhong)輸入條件(jian)即(ji)可 。
2. 常用 Debug 命令:
1) stop 命令:用于暫(zan)停程序(xu)(xu)的執(zhi)行,比如在加載 elf 文(wen)件前執(zhi)行此命(ming)令,可使程序(xu)(xu)處于停止狀態(tai)以便進行后續操作1.
2) run 命令:使程序(xu)從當(dang)前(qian)停止位置繼續運行(xing),可用于(yu)啟動已加載的(de) elf 文件(jian)17.
3) step into:單(dan)步執(zhi)行程序,遇(yu)到函數調用會(hui)進入函數內部繼續(xu)單(dan)步執(zhi)行,便于詳(xiang)細查(cha)看(kan)程序的(de)(de)執(zhi)行流程和函數內部的(de)(de)邏輯。
4) step over:同樣是單(dan)步執(zhi)行(xing),但遇到函(han)數調用時,會(hui)將(jiang)函(han)數當作一個整體執(zhi)行(xing)完,直(zhi)接跳到函(han)數調用的下一行(xing),適合(he)在不需要(yao)深入函(han)數內部時快速查看主程序流程。
5) step return:在(zai)函數(shu)(shu)內部執行時(shi),使用(yong)此命令可直接執行到函數(shu)(shu)返回處(chu),跳出當前函數(shu)(shu),繼續(xu)執行函數(shu)(shu)調用(yong)后的代碼。

4 ARM DS-5 + DSTREAM 使用配置——軟件配置
1. 申請 License:登(deng)錄 ARM 官網注(zhu)冊賬號(hao)并申請免費版本23.
2. 建立 Data Base:打開 DS-5 工具(ju),按提(ti)示建立 Data Base23.
3. Platform Configuration:進行掃描操作,完(wan)成后執(zhi)行 “build platform”123.
4. DEBUG 配置:根據具體的調試需求,進行相應(ying)的 DEBUG 配置,如選擇連接的目標設備(bei)、調試模式(shi)等(deng)3.



5 ARM DS-5 Trace 使用
1. 創建 Debugger Core 連接:新(xin)建(jian)一個 “Debugger” core 連接,創建(jian)完(wan)成后(hou)需斷開先前已連接的(de),以便進行后(hou)續的(de) trace 數據抓取等操作4.
2. 重新編譯平臺:完(wan)成(cheng) debugger 的創建(jian)后,重(zhong)新(xin)編譯.sdf 文件,編譯時(shi)需選擇 “Full Debug and Trace”4.
3. 加載 elf 文件:將對應的 elf 文件(jian)加載到 DS-5 中,以便在(zai)分(fen)析(xi) trace 數據時能正(zheng)確(que)地顯示(shi)函數名、變(bian)量(liang)名等符號信(xin)息4.
4. 使用 Trace 控制窗口:通過(guo) Trace 控(kong)制窗口可查(cha)看(kan) trace 數據(ju),還可抓(zhua)取(qu) trace dump 快照進行(xing)線下分(fen)析(xi)。此外,可按(an)步驟配置來查(cha)看(kan) trace 中函(han)數的執行(xing)情(qing)況,如函(han)數執行(xing)時(shi)間占比等
ETM 數據 Trace 和指令 Trace
1)新建一個(ge)"Debugger" core 連接(jie), 創建步(bu)驟(zou)如(ru)下(xia)圖所示,下(xia)圖創建的(de)是一個(ge)名為 “Trace_Demo” 的(de) debuger core 連接(jie),需要(yao)注意的(de)是在創建完成(cheng)后,需要(yao)將(jiang)先(xian)前(qian)已經(jing)連接(jie)的(de)進行斷開,如(ru)下(xia)圖的(de)“New_configuration

2)重新編譯平臺
上面第一(yi)步完成了debuger 的創建之后,需要再重新編譯(yi) .sdf 文件(jian),編譯(yi)方(fang)法如下圖:

當前是進行trace數據抓(zhua)取,所以選擇 “Full Debug and Trace”

Trace 控制窗口

6 總結:
ARM DS - 5 高級調試與診斷技巧總結(jie):
1. 靈活運用(yong)斷點、單步調試和觀察點,精確控(kong)制程序執(zhi)行流程并(bing)監測(ce)變量(liang)變化。
2. 借助多(duo)核調(diao)試和系統(tong)級調(diao)試功(gong)能,處理多(duo)核協同與硬(ying)件交互相關問題。
3. 利(li)用性(xing)能和內存分析技巧,排查性(xing)能瓶頸和內存相關(guan)故(gu)障。
4. 掌握工程創建、文件加載運行以(yi)及相關配置(zhi)方法(fa),保障調試工作順利(li)開展。

