前言
最近在調(diào)試一些單板,對于這個調(diào)試工具我真的是又愛又恨,熟悉了那就是金箍棒,不熟悉那就是攔路虎。
有的東西用了很久還不知道這個玩意是干嘛的,于是這里來整理一篇來學(xué)習(xí)一下。
調(diào)試的工具針對不同的領(lǐng)域當(dāng)然有很多的,這里涉及到的工具是OpenOCD,這個玩意我們一起來學(xué)習(xí)一下相應(yīng)的使用方式。
一、OpenOCD是什么?
我們在使用的時候會用到OpenJTAG,那么先來看看OPENJTAG是什么?
1-OPENJTAG是什么?
OpenJTag是一個開源項(xiàng)目(包含軟件和硬件)。
借助開源軟件OpenOCD可以完成程序的燒寫,調(diào)試等任務(wù)OpenJTag的功能:
往Flash燒寫程序:支持NOR Flash 和 NAND Flash
支持Windows以及Linux
能夠用在支持GDB調(diào)試協(xié)議的工具上:如IAR, Eclipse
USB轉(zhuǎn)串口功能
所以本質(zhì)上還是開源軟件OpenOCD
2-J-Link、J-Trace、Open JTAG區(qū)別
J-Link、J-Trace、Open JTAG都是用來調(diào)試程序的(當(dāng)然還有其他工具可以進(jìn)行調(diào)試,比如ICE),J-Link和J-Trace是SEGGER公司的(http://www.segger.com)。Open JTAG(http://www.openjtag.org/)是 一個開源項(xiàng)目,其目標(biāo)是使嵌入式開發(fā)者能夠通過JTAG接口,用開放的硬件和軟件系統(tǒng)進(jìn)行燒寫、校驗(yàn)和調(diào)試[1]。他們都基于JTAG調(diào)試接口協(xié)議。
本質(zhì)上都是基于JTAG接口協(xié)議的。
3-OpenOCD是什么
OpenOCD(Open On-Chip Debugger)開源片上調(diào)試器,是一款開源軟件,最初是由Dominic Rath同學(xué)還在大學(xué)期間發(fā)起的(2005年)項(xiàng)目。OpenOCD旨在提供針對嵌入式設(shè)備的調(diào)試、系統(tǒng)編程和邊界掃描功能。
OpenOCD的功能是在仿真器的輔助下完成的,仿真器是能夠提供調(diào)試目標(biāo)的電信號的小型硬件單元。仿真器是必須的,因?yàn)檎{(diào)試主機(jī)(運(yùn)行OpenOCD的主機(jī))通常不具備這種電信號的直接解析功能。
仿真器支持一個或多個傳輸協(xié)議,每個協(xié)議涉及不同的電信號,且使用不同的協(xié)議棧進(jìn)行消息傳遞。市面上有很多種仿真器,并且這些仿真器的命名沒有統(tǒng)一的規(guī)律。
仿真器有時候會被封裝成獨(dú)立的加密狗,這種稱為硬件接口加密狗。一些開發(fā)板上面直接集成了硬件接口加密狗,這樣可以使開發(fā)板通過USB直接連到主機(jī)上進(jìn)行調(diào)試。
例如,JTAG仿真器支持JTAG協(xié)議的信號,可以用來進(jìn)行TAPs和目標(biāo)板子之間符合JTAG協(xié)議(IEEE 1149.1)的通訊。TAP(Test Access Port)是處理特殊指令和數(shù)據(jù)的單元。TAPs在芯片與板子之間和之內(nèi)以菊花鏈的形式進(jìn)行連接。JTAG支持調(diào)試和邊界掃描。
還有SWD仿真器,這種仿真器支持使用SWD(Serial Wire Debug)信號與一些比較新的ARM芯片進(jìn)行通訊,而且還可以作為那些同時支持JTAG和SWD的芯片的仿真器。不過SWD僅支持調(diào)試,不支持邊檢掃描。
對于一些芯片,還有專門的編程下載器,這些下載器僅支持擦寫FLASH的功能,不支持調(diào)試和邊界掃描。對于此類專用下載器,OpenOCD暫時并不支持。
加密狗:OpenOCD目前支持多種類型的硬件加密狗:基于USB的,基于并行端口的,以及其他在內(nèi)部運(yùn)行OpenOCD的獨(dú)立盒子。
GDB調(diào)試:它允許ARM7(ARM7TDMI和ARM720t),ARM9(ARM920T,ARM922T,ARM926EJ-S,ARM966E-S),XScale(PXA25x,IXP42x),Cortex-M3(Stellaris LM3,ST STM32和Energy Micro EFM32)和基于Intel Quark(x10xx)的內(nèi)核使用GDB協(xié)議進(jìn)行調(diào)試。
Flash編程:擦寫FLASH支持外部CFI兼容NOR閃存(Intel和AMD / Spansion命令集)和幾個內(nèi)部閃存(LPC1700,LPC1800,LPC2000,LPC4300,AT91SAM7,AT91SAM3U,STR7x,STR9x,LM3,STM32x和EFM32)。包括各種NAND閃存控制器(LPC3180,Orion,S3C24xx等)的初步支持。
小結(jié)一下:
OpenOCD (Open On-Chip Debugger)是一個開源的片上調(diào)試器,旨在提供針對嵌入式設(shè)備的調(diào)試、系統(tǒng)編程和邊界掃描功能。
OpenOCD的功能需要調(diào)試仿真器來輔助完成,調(diào)試仿真器是一個提供調(diào)試目標(biāo)電信號的小型硬件單元。常用的有Jink、STLink等,一些開發(fā)板直接集成了調(diào)試仿真器,如小熊派開發(fā)板就集成了STLink。
通過下面的OpenOCD架構(gòu)圖我們能更好的認(rèn)識OpenOCD。
可以看出OpenOCD提供了GDBServer,可以通過它進(jìn)行GDB相關(guān)的調(diào)試操作。
提供TeInet Server,可以通過Telnet連接對目標(biāo)板進(jìn)行燒錄、重啟等操作。
OpenOCD的配置基于TCL腳本,可以使用默認(rèn)自帶的TCL腳本,也可以編寫自定義的腳本。
4-OpenJTAG怎么用?
上面我們提到OpenOCD需要調(diào)試仿真器配合使用,一般我們還會使用gdb client與其配合進(jìn)行遠(yuǎn)程調(diào)試。
在這里插入圖片描述
5-JTAG與SWD的區(qū)別
JTAG (Joint Test Action Group,聯(lián)合測試行動小組)是一種國際標(biāo)準(zhǔn)測試協(xié)議(IEEE1149.1兼容),主要用于芯片內(nèi)部測試。現(xiàn)在多數(shù)的高級器件都支持JTAG協(xié)議,如ARM、DSP、FPGA器件等。標(biāo)準(zhǔn)的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。相關(guān)JTAG引腳的定義為:
TMS:測試模式選擇,TMS用來設(shè)置JTAG接口處于某種特定的測試模式;
TCK:測試時鐘輸入;
TDl:測試數(shù)據(jù)輸入,數(shù)據(jù)通過TDI引|腳輸入JTAG接口;
TDO:測試數(shù)據(jù)輸出,數(shù)據(jù)通過TDO引腳從JTAG接口輸出;
串行調(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模式,它需要的引腳少。
審核編輯:劉清
-
USB接口
+關(guān)注
關(guān)注
9文章
703瀏覽量
55850 -
適配器
+關(guān)注
關(guān)注
8文章
1976瀏覽量
68295 -
JTAG
+關(guān)注
關(guān)注
6文章
401瀏覽量
71878 -
J-Link
+關(guān)注
關(guān)注
0文章
84瀏覽量
22209 -
GDB調(diào)試
+關(guān)注
關(guān)注
0文章
24瀏覽量
1492
原文標(biāo)題:OpenOCD是什么?
文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
J-Link中的JTAG接口使用注意事項(xiàng)
J-Trace調(diào)試器比起J-link的優(yōu)勢在哪些方面?
【益登科技 Silicon Labs SLWSTK6021A開發(fā)板試用體驗(yàn)】超值下載工具J-LINK/J-TRACE COMTEX
UM08001_JlinkARM資料
解析J-Link、J-Trace、Open JTAG原理以及其區(qū)別
![解析<b class='flag-5'>J-Link</b>、<b class='flag-5'>J-Trace</b>、<b class='flag-5'>Open</b> <b class='flag-5'>JTAG</b>原理以及其<b class='flag-5'>區(qū)別</b>](https://file.elecfans.com/web1/M00/45/82/o4YBAFpvy1WAYJj-AAApb4ANEf8214.png)
J-Link和J-Trace燒錄器的使用說明免費(fèi)下載
![<b class='flag-5'>J-Link</b>和<b class='flag-5'>J-Trace</b>燒錄器的使用說明免費(fèi)下載](https://file.elecfans.com/web1/M00/AE/EE/o4YBAF3fPaCAOs2oAAHHBvJ16aQ883.png)
J-Link和J-Trace用戶指南免費(fèi)下載
![<b class='flag-5'>J-Link</b>和<b class='flag-5'>J-Trace</b>用戶指南免費(fèi)下載](https://file.elecfans.com/web1/M00/E2/D6/o4YBAGA-9CmAFcMuAAGhEcka0DI651.png)
J-Link script的組成
教你輕松J-Link不能連接目標(biāo)MCU的問題
![教你輕松<b class='flag-5'>J-Link</b>不能連接目標(biāo)MCU的問題](https://file.elecfans.com/web2/M00/04/B9/pYYBAGDb44qAFp3uAAAYzd2E5VU527.png)
基于J-Link Remote Server軟件的遠(yuǎn)程調(diào)試方法
J-Link script的組成與使用方法
J-Link中的JTAG接口的正確使用注意事項(xiàng)
![<b class='flag-5'>J-Link</b>中的<b class='flag-5'>JTAG</b>接口的正確使用注意事項(xiàng)](https://file.elecfans.com/web2/M00/6C/4A/pYYBAGMtEqCAfDN7AAAgdXuL_ck466.gif)
評論