本文整理了網(wǎng)上一些對J-Link、J-Trace、Open JTAG區(qū)別的討論,同時也加入一些自己的理解。 J-Link、J-Trace、Open JTAG都是用來調(diào)試程序的(當然還有其他工具可以進行調(diào)試,比如ICE),J-Link和J-Trace是SEGGER公司的(http://www.segger.com)。Open JTAG(http://www.openjtag.org/)是一個開源項目,其目標是使嵌入式開發(fā)者能夠通過JTAG接口,用開放的硬件和軟件系統(tǒng)進行燒寫、校驗和調(diào)試[1]。他們都基于JTAG調(diào)試接口協(xié)議。
一、工作原理[2]
調(diào)試arm,總要遵循arm的調(diào)試接口協(xié)議吧,jtag就是其中的一種吧。當仿真時,iar,keil,ads等等都有一個公共的調(diào)試接口,RDI(RDI接口是ARM公司提出的調(diào)試接口標準,主要用于ARM芯片的JTAG仿真。)就是其中的一咱吧,那么我們?nèi)绾瓮瓿蒖DI-->arm調(diào)試協(xié)議(JTAG)的轉(zhuǎn)換呢?如是乎就有兩種做法:
(1) 在電腦上寫一個服務程序,把keil,ads,iar中的RDI命令解析成相關(guān)的JTAG協(xié)議,然后通后一個物理轉(zhuǎn)換接口(注意,這個轉(zhuǎn)換只是電氣物理層上的轉(zhuǎn)換,就像RS232那樣的作用)發(fā)送你的的目標板。 h-jtag就是這樣的。 h-jtag的硬件就僅是一個物理電平的轉(zhuǎn)換接口,所以很簡單。而電腦中裝的h-jtag軟件就是前面說到的服務程序,負責協(xié)議轉(zhuǎn)換的。
(2)另一種做法,就是做一個板,用此板直接接收來自keil,ads,iar等軟件的調(diào)試命令,由此板做rdi->jtag協(xié)議的轉(zhuǎn)換。然后與目標板通信,這就是jlink的工作原理。(這也就實現(xiàn)了USB轉(zhuǎn)JTAG協(xié)議。)
有一回貼說:“大佬,兩者都是軟件完成的,只不過軟件放的地方不一樣(一個放計算機,一個放仿真器里面了).真正的硬件,就象是JTRACE一樣,用FPGA來實現(xiàn).實質(zhì)上,還是軟件到硬件的過程.”。
二、J-Link、J-Trace區(qū)別
最近在看《J-Link/J-Trace User Gudide(UM08001)》Page12,發(fā)現(xiàn)文中說JLink與JTrace區(qū)別,淺顯易懂,摘錄如下:J-Link
JTAG emulator for ARM cores
USB driven JTAG interface for ARM cores.
JTAG emulator for ARM cores
USB driven JTAG interface for ARM cores with
Trace memory. supporting the ARM ETM (Embed-
ded Trace Macrocell).
ARM Keil Tools官網(wǎng)(http://www.keil.com/pr/article/1141.htm)就更詳細了,摘抄如下:
The SEGGERJ-Linkis a USB to JTAG adapter supporting ARM7™, ARM9™and Cortex™-M3 processor based devices with JTAG speeds of up to 12MHz. It interfaces to all evaluation boards and target hardware using a standard 20-pin or 14-pin (optional) JTAG connector.
The SEGGERJ-Traceis a combined unit offering real-time trace and JTAG debugging for all ARM7 and ARM9 devices with an integrated ETM (Embedded Trace Macrocell). An integrated 2MB trace buffer enables high speed instruction and data trace at speeds of up to 200MHz, connecting to the target device via a 38-pin Mictor cable. J-Trace also includes a J-Link interface for standard JTAG target debugging via a 20-pin connector.
本文引用地址:
http://2s4d.com/article/201611/319313.htmTrace information from J-Trace is displayed in dedicated windows, providing a seamless interface with other μVision debug and analysis tools.
J-Link is part of several starter kits from various vendors and is indentical with SAM-ICE (from Atmel) and mIDAS-Link (from Analog Devices). With direct J-Link support users can now easily begin taking advantage of the unique and advanced features of RealView MDK compared to other tool offerings and starter kits.
RealView MDK is available from Keil or your local Keil distributor. J-Link and J-Trace are available from SEGGER Microcontroller and its world wide sales channels.
在貼子《jLINK和J-Trace仿真器的區(qū)別能否重復講述一下?》中,精辟回答了J-Link和J-Trace的區(qū)別,如下:
J-Link就像照相機,程序(在斷點處)停下來才能看調(diào)試信息,通過JTAG/SWD接口;J-Trace就像錄像機,可以紀錄、回放整個調(diào)試接口,通過ETM接口。最近一些Cortex-M3的芯片支持SWO接口,就好像是高速連拍照相機,采樣間隔小的話,有那么點Trace的樣子,這個調(diào)試功能在J-Link v7和EWARM v5.30中已經(jīng)得到支持。
三、J-Link與Open JTAG區(qū)別
正如上文所述,這兩者都是用來調(diào)試程序的,都實現(xiàn)了USB轉(zhuǎn)JTAG協(xié)議功能,即用USB連接主機,用JTAG線連接板子的JTAG口,而這之間的轉(zhuǎn)換通過J-Link或者Open JTAG轉(zhuǎn)換。另,J-Link一般是獨立的組件,而Open JTAG一般集成到板子上。更多比較可以參考資料[2][3],但[3]中說J-Link不支持Linux,現(xiàn)在可以了,我正在用,可以參考我的博文《Ubuntu 10.04下J-Link配置及使用》,目前功能還不是很完善,只是Beta版。
四、J-Link GDBServer與Open OCD
openOCD(http://openocd.berlios.de/web/)是上位機程序(人可以直接發(fā)出操控命令的計算機,一般是PC。對應于下位機)。jlink gdbserver和openocd是一回事,都是擔任一個gdb server的角色,用來解釋來自arm-elf-gdb的調(diào)試信號,并且控制硬件(Jlink或者openjtag)[4]
參考資料:
[1] 博文《OpenJTAG——Jlink的強勁對手》
[2] 博文《看到好多玩過ARM的人還搞不懂hjtag與jlink的區(qū)別…》
[3] 博文《OpenJTAG與Jlink/J-link的區(qū)別
[4] 帖子《JLink-GDBServer + eclipse 的調(diào)試環(huán)境》
評論