电竞比分网-中国电竞赛事及体育赛事平台

分享

OpenOCD介紹

 SocFans 2021-01-19
【摘要】 什么是OpenOCDOpenOCD(Open On-Chip Debugger)是一個開源的片上調(diào)試器,旨在提供針對嵌入式設(shè)備的調(diào)試、系統(tǒng)編程和邊界掃描功能。OpenOCD的功能需要調(diào)試仿真器來輔助完成,調(diào)試仿真器是一個提供調(diào)試目標電信號的小型硬件單元。常用的有JLink、STLink等,一些開發(fā)板直接集成了調(diào)試仿真器,如小熊派開發(fā)板就集成了STLink。通過下面的OpenOCD架構(gòu)圖我們能...

什么是OpenOCD

OpenOCD(Open On-Chip Debugger)是一個開源的片上調(diào)試器,旨在提供針對嵌入式設(shè)備的調(diào)試、系統(tǒng)編程和邊界掃描功能。

OpenOCD的功能需要調(diào)試仿真器來輔助完成,調(diào)試仿真器是一個提供調(diào)試目標電信號的小型硬件單元。常用的有JLink、STLink等,一些開發(fā)板直接集成了調(diào)試仿真器,如小熊派開發(fā)板就集成了STLink。
1.png

通過下面的OpenOCD架構(gòu)圖我們能更好的認識OpenOCD??梢钥闯鯫penOCD提供了GDB Server,可以通過它進行GDB相關(guān)的調(diào)試操作。提供Telnet Server,可以通過Telnet連接對目標板進行燒錄、重啟等操作。OpenOCD的配置基于TCL腳本,可以使用默認自帶的TCL腳本,也可以編寫自定義的腳本。
openocd.png

如何使用

上面我們提到OpenOCD需要調(diào)試仿真器配合使用,一般我們還會使用gdb client與其配合進行遠程調(diào)試。
openocd.png

具體命令行操作步驟如下:

  1. 啟動OpenOCD(以小熊派開發(fā)板為例)
    openocd –f board\stm32l4discovery.cfg
    -f 參數(shù)指定加載的TCL腳本文件,可以在OpenOCD 的scripts目錄下找到很多自帶的腳本。具體值根據(jù)不同開發(fā)板指定。
    1.png

  2. 啟動gdb客戶端并連接
    arm-none-eabi-gdb
    啟動gdb客戶端
    target remote :3333
    連接到gdb server(OpenOCD默認為3333端口)
    1.png

接下來就可以使用gdb命令進行開發(fā)板的調(diào)試了。

相關(guān)概念

JTAG

JTAG(Joint Test Action Group,聯(lián)合測試行動小組)是一種國際標準測試協(xié)議(IEEE 1149.1兼容),主要用于芯片內(nèi)部測試?,F(xiàn)在多數(shù)的高級器件都支持JTAG協(xié)議,如ARM、DSP、FPGA器件等。標準的JTAG接口是4線:TMS、 TCK、TDI、TDO,分別為模式選擇、時鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。 相關(guān)JTAG引腳的定義為:

  • TMS:測試模式選擇,TMS用來設(shè)置JTAG接口處于某種特定的測試模式;

  • TCK:測試時鐘輸入;

  • TDI:測試數(shù)據(jù)輸入,數(shù)據(jù)通過TDI引腳輸入JTAG接口;

  • TDO:測試數(shù)據(jù)輸出,數(shù)據(jù)通過TDO引 腳從JTAG接口輸出;

SWD

串行調(diào)試(Serial Wire Debug),一種和JTAG不同的調(diào)試模式,與JTAG的20個引腳相比,SWD只需要4個(或者5個)引腳,結(jié)構(gòu)簡單,但是使用范圍沒有JTAG廣泛,主流調(diào)試器上也是后來才加的SWD調(diào)試模式。

SWD和傳統(tǒng)的調(diào)試方式區(qū)別:

  • SWD模式比JTAG在高速模式下面更加可靠。在大數(shù)據(jù)量的情況下面JTAG下載程序會失敗,但是SWD發(fā)生的幾率會小很多。基本使用JTAG仿真模式的情況下是可以直接使用SWD模式的,只要你的仿真器支持,所以推薦大家使用這個模式。

  • 在GPIO剛好缺一個的時候,可以使用SWD仿真,這種模式支持更少的引腳。

  • 在板子的體積有限的時候推薦使用SWD模式,它需要的引腳少。

OpenOCD資料

  • 項目主頁 http:///

  • 用戶手冊 http:///doc/html/index.html

  • 源碼鏡像 https://github.com/ntfreak/openocd

  • OpenOCD通常都是源碼發(fā)布,當(dāng)然網(wǎng)上有一些編譯好的二進制分發(fā),例如這個 https:///arm-eabi/openocd/

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多