當(dāng)前位置:首頁 > 學(xué)習(xí)資源 > 講師博文 > ARM DS-5進(jìn)行高級調(diào)試和診斷的一些方法和技巧
ARM DS-5是一款功能強(qiáng)大的集成開發(fā)環(huán)境(IDE),專為ARM架構(gòu)的處理器設(shè)計。它提供了豐富的工具和功能,用于高級調(diào)試和診斷,幫助開發(fā)人員深入分析和優(yōu)化他們的應(yīng)用程序。以下是使用ARM DS-5進(jìn)行高級調(diào)試和診斷的一些方法和技巧:
1 DS-5 工程創(chuàng)建
1. 啟動 DS-5 并設(shè)置工作空間:從桌面菜單中選擇 “Eclipse for DS-5” 來啟動 DS-5。在彈出的 “Workspace Launcher” 對話框中,可以接受默認(rèn)的工作空間,也可以點(diǎn)擊 “Browse” 選擇一個文件夾作為工作空間,例如 “c:\ds-5_workspace”,并勾選 “Use this as the default and do not ask again” 選項(xiàng)后點(diǎn)擊 “OK”。
2. 獲取許可證:如果是首次使用 DS-5,會彈出 “No License Found” 對話框,點(diǎn)擊 “Open License Manager”,在 “ARM License Manager” 對話框中點(diǎn)擊 “Add License”,接著在 “Add License” 對話框中選擇 “Generate a 30-day evaluation license for DS-5 Ultimate Edition” 選項(xiàng)并點(diǎn)擊 “Next”。然后在 “Choose Network Interface” 對話框中選擇一個網(wǎng)絡(luò)接口,建議選擇物理網(wǎng)絡(luò)接口。在 “Developer Account Details” 對話框中輸入 ARM 開發(fā)者(銀牌)賬號的詳細(xì)信息,如果沒有賬號則需創(chuàng)建一個,最后點(diǎn)擊 “Finish”。當(dāng)許可證成功注冊后,可在 “ARM License Manager” 中看到 30 天的評估許可證以及可用的工具包,關(guān)閉該對話框,并在確認(rèn)重啟 Eclipse 的對話框中點(diǎn)擊 “Restart Eclipse”。
3. 創(chuàng)建新項(xiàng)目:從 DS-5 主菜單中選擇 “File”->“New”->“C Project”,彈出 “C Project” 對話框。在 “Project name” 字段中輸入項(xiàng)目名稱,如 “hello world”;在 “Project type” 下選擇 “Executable”->“Empty Project”;在 “Toolchains” 中選擇 “ARM Compiler 5”,點(diǎn)擊 “Finish” 即可創(chuàng)建一個名為 “hello world” 的 C 項(xiàng)目,可在 “Project Explorer” 視圖中查看該項(xiàng)目。
2 ARM DS-5 加載 ELF 文件運(yùn)行
1. 創(chuàng)建工程并掃描硬件信息:使用 ARM DS-5 前需創(chuàng)建工程項(xiàng)目,并掃描相應(yīng)硬件信息,如 CPU、Coresight 組件、Cache 等,掃描完成后再執(zhí)行 “build platform”12.
2. 創(chuàng)建加載腳本:可通過 JTAG 接口用 DS-5 將鏡像燒寫到內(nèi)存,配置 PC 指針來啟動固件。創(chuàng)建腳本時要注意將固件啟動匯編部分的 data 段的 copy 部分注釋掉,因?yàn)?DS-5 加載 elf 文件時會自動根據(jù) elf 符號表將 data 段加載到對應(yīng)地址1.
3. 執(zhí)行腳本:執(zhí)行 DS-5 腳本時先進(jìn)行 SoC reset 操作,reset 后系統(tǒng)從 bootrom 重啟,DS-5 接入,接著執(zhí)行 stop 命令,再 load elf 文件,DS-5 會自動解析入口點(diǎn),最后執(zhí)行 run 命令即可1.
3 ARM DS-5 斷點(diǎn)設(shè)置及常用 Debug 命令
1. 斷點(diǎn)設(shè)置:在 DS-5 的調(diào)試界面中,可在代碼行號左側(cè)空白處點(diǎn)擊設(shè)置普通斷點(diǎn)。對于條件斷點(diǎn),在斷點(diǎn)設(shè)置窗口中找到對應(yīng)的斷點(diǎn),于條件表達(dá)式框中輸入條件即可 。
2. 常用 Debug 命令:
1) stop 命令:用于暫停程序的執(zhí)行,比如在加載 elf 文件前執(zhí)行此命令,可使程序處于停止?fàn)顟B(tài)以便進(jìn)行后續(xù)操作1.
2) run 命令:使程序從當(dāng)前停止位置繼續(xù)運(yùn)行,可用于啟動已加載的 elf 文件17.
3) step into:單步執(zhí)行程序,遇到函數(shù)調(diào)用會進(jìn)入函數(shù)內(nèi)部繼續(xù)單步執(zhí)行,便于詳細(xì)查看程序的執(zhí)行流程和函數(shù)內(nèi)部的邏輯。
4) step over:同樣是單步執(zhí)行,但遇到函數(shù)調(diào)用時,會將函數(shù)當(dāng)作一個整體執(zhí)行完,直接跳到函數(shù)調(diào)用的下一行,適合在不需要深入函數(shù)內(nèi)部時快速查看主程序流程。
5) step return:在函數(shù)內(nèi)部執(zhí)行時,使用此命令可直接執(zhí)行到函數(shù)返回處,跳出當(dāng)前函數(shù),繼續(xù)執(zhí)行函數(shù)調(diào)用后的代碼。
4 ARM DS-5 + DSTREAM 使用配置——軟件配置
1. 申請 License:登錄 ARM 官網(wǎng)注冊賬號并申請免費(fèi)版本23.
2. 建立 Data Base:打開 DS-5 工具,按提示建立 Data Base23.
3. Platform Configuration:進(jìn)行掃描操作,完成后執(zhí)行 “build platform”123.
4. DEBUG 配置:根據(jù)具體的調(diào)試需求,進(jìn)行相應(yīng)的 DEBUG 配置,如選擇連接的目標(biāo)設(shè)備、調(diào)試模式等3.
5 ARM DS-5 Trace 使用
1. 創(chuàng)建 Debugger Core 連接:新建一個 “Debugger” core 連接,創(chuàng)建完成后需斷開先前已連接的,以便進(jìn)行后續(xù)的 trace 數(shù)據(jù)抓取等操作4.
2. 重新編譯平臺:完成 debugger 的創(chuàng)建后,重新編譯.sdf 文件,編譯時需選擇 “Full Debug and Trace”4.
3. 加載 elf 文件:將對應(yīng)的 elf 文件加載到 DS-5 中,以便在分析 trace 數(shù)據(jù)時能正確地顯示函數(shù)名、變量名等符號信息4.
4. 使用 Trace 控制窗口:通過 Trace 控制窗口可查看 trace 數(shù)據(jù),還可抓取 trace dump 快照進(jìn)行線下分析。此外,可按步驟配置來查看 trace 中函數(shù)的執(zhí)行情況,如函數(shù)執(zhí)行時間占比等
ETM 數(shù)據(jù) Trace 和指令 Trace
1)新建一個"Debugger" core 連接, 創(chuàng)建步驟如下圖所示,下圖創(chuàng)建的是一個名為 “Trace_Demo” 的 debuger core 連接,需要注意的是在創(chuàng)建完成后,需要將先前已經(jīng)連接的進(jìn)行斷開,如下圖的“New_configuration
2)重新編譯平臺
上面第一步完成了debuger 的創(chuàng)建之后,需要再重新編譯 .sdf 文件,編譯方法如下圖:
當(dāng)前是進(jìn)行trace數(shù)據(jù)抓取,所以選擇 “Full Debug and Trace”
Trace 控制窗口
6 總結(jié):
ARM DS - 5 高級調(diào)試與診斷技巧總結(jié):
1. 靈活運(yùn)用斷點(diǎn)、單步調(diào)試和觀察點(diǎn),精確控制程序執(zhí)行流程并監(jiān)測變量變化。
2. 借助多核調(diào)試和系統(tǒng)級調(diào)試功能,處理多核協(xié)同與硬件交互相關(guān)問題。
3. 利用性能和內(nèi)存分析技巧,排查性能瓶頸和內(nèi)存相關(guān)故障。
4. 掌握工程創(chuàng)建、文件加載運(yùn)行以及相關(guān)配置方法,保障調(diào)試工作順利開展。