麻豆一区二区三区蜜桃免费_中文字幕Va一区二区三区 _国产成人综合久久二区_丰满多毛的大隂户毛茸茸_国产麻豆剧果冻传媒免费老狼_无码人妻精品一区二区三区久久久 _亚洲中文无码精品卡通_蜜臀亚洲AV永久无码精品老司机

【ARM】開源調(diào)試解決方案DAPLink 和 OpenOCD

1、 文檔目標(biāo)

本文介紹了流行的開源調(diào)試解決方案 DAPLink 和 OpenOCD 的情況。


2、 什么是 DAPLink?

Arm Mbed DAPLink 是一個(gè)開源軟件項(xiàng)目,一直在 Arm、其合作伙伴、眾多硬件供應(yīng)商和世界各地的開源社區(qū)的大力開發(fā)下。

DAPLink 支持對(duì) Arm Cortex CPU 上運(yùn)行的應(yīng)用軟件進(jìn)行編程和調(diào)試。DAPLink 通常稱為固件接口,在連接到應(yīng)用 MCU 的 SWD 或 JTAG 端口。


DAPLink是arm開源的一款燒寫器,硬件電路與 STlink可以兼容,可以用于cortex系列的單片機(jī)調(diào)試與程序燒寫。V2版本增加串口支持。由于arm開源了整個(gè)項(xiàng)目,所以任何人使用DAPLink,都不存在版權(quán)的問(wèn)題。


如果您使用支持 CMSIS-DAP 調(diào)試協(xié)議的 IDE 進(jìn)行開發(fā),則是兼容DAPLink 。


3、什么是 OpenOCD?

OpenOCD(即開放片上調(diào)試器)是一種用于嵌入式系統(tǒng)開發(fā)的功能強(qiáng)大且多功能的開源軟件工具。它具有多種用途,包括針對(duì)各種微控制器和處理器的調(diào)試、系統(tǒng)內(nèi)編程和邊界掃描測(cè)試。


OpenOCD 支持 JTAG 和 SWD 等各種硬件接口,允許開發(fā)人員與嵌入式設(shè)備上的軟件進(jìn)行交互和調(diào)試。其靈活性、多架構(gòu)支持和跨平臺(tái)兼容性使其成為嵌入式系統(tǒng)開發(fā)人員工具鏈中的寶貴工具,可在開發(fā)過(guò)程中促進(jìn)固件編程和邊界掃描測(cè)試等任務(wù)。


4、OpenOCD 支持 DAPLink 嗎?

是的,OpenOCD 的 master 分支支持它。以下位置有 CMSIS-DAP 的接口配置: interface/cmsis-dap.cfg

驅(qū)動(dòng)程序?qū)崿F(xiàn)自動(dòng)檢測(cè)以下 DAPLink 設(shè)備及其各自的 USB VID/PID 組合:

VID 0xc251: Keil Software

PID 0xf001: LPC-Link-II CMSIS_DAP

PID 0xf002: OPEN-SDA CMSIS_DAP (Freedom Board)

PID 0x2722: Keil ULINK2 CMSIS-DAP

PID 0x2750: Keil ULINKplus CMSIS-DAP

OpenOCD作為服務(wù)器,并通過(guò)端口3333接受來(lái)自GDB的傳入連接或通過(guò)端口4444接受來(lái)自telnet的傳入連接。GDB用于源文件步驟調(diào)試。telnet連接用于刷新。OpenOCD連接到 DAPLINK仿真器。DAPLINK適配器連接到目標(biāo)


5、OpenOCD command 常用命令

  • 適配器命令

“adapter driver ” 命令告訴OpenOCD您正在使用哪種類型的調(diào)試適配器,比如DAPLINK/cmsis-dap的驅(qū)動(dòng)器名稱是”cmsis-dap”;

“transport select “通信方式配置,聲明使用SWD/JTAG或其他通信方式,例如為”swd”;

“adapter_khz ” 該命令設(shè)置時(shí)鐘通信速率,例如5M的為”500″;

  • 目標(biāo)板狀態(tài)處理命令(Target state handling)

init 此命令終止配置階段并進(jìn)入運(yùn)行階段,如重置目標(biāo),編程閃存等需要執(zhí)行該命令

poll 查詢目標(biāo)板當(dāng)前狀態(tài)

halt 中斷目標(biāo)板的運(yùn)行

resume <address> 恢復(fù)目標(biāo)板的運(yùn)行,如果指定了<address>,則從地址開始運(yùn)行

step <address> 單步執(zhí)行,如果指定了<address>,則從地址開始執(zhí)行一條指令

reset [run|halt|init] run:復(fù)位并運(yùn)行目標(biāo); halt:復(fù)位并停止目標(biāo)運(yùn)行; init:立即停止目標(biāo),并執(zhí)行復(fù)位的init腳本

  • 編程一個(gè)文件默認(rèn)情況下將執(zhí)行以下操作:

1. 執(zhí)行'init'

2. 調(diào)用"reset init"來(lái)重置和停止目標(biāo)

3. 調(diào)用"flash write_image"給指定的文件名擦除和寫入到Flash

4. 調(diào)用"verify_image "對(duì)比下載文件是否有誤

5. 調(diào)用"reset run"復(fù)位運(yùn)行程序

6. 退出OpenOCD服務(wù)

關(guān)于OpenOCD 相關(guān)的用戶手冊(cè)請(qǐng)參考:https://openocd.org/doc/html/index.html


【更多軟件使用問(wèn)題請(qǐng)站內(nèi)搜索或關(guān)注B站:億道電子查看視頻教學(xué)】