0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenOCD是什么?J-Link、J-Trace、Open JTAG的区别

sanyue7758 来源:TrustZone 2023-12-12 09:43 次阅读

前言

最近在调试一些单板,对于这个调试工具我真的是又爱又恨,熟悉了那就是金箍棒,不熟悉那就是拦路虎。

有的东西用了很久还不知道这个玩意是干嘛的,于是这里来整理一篇来学习一下。

调试的工具针对不同的领域当然有很多的,这里涉及到的工具是OpenOCD,这个玩意我们一起来学习一下相应的使用方式。

一、OpenOCD是什么?

我们在使用的时候会用到OpenJTAG,那么先来看看OPENJTAG是什么?

1-OPENJTAG是什么?

OpenJTag是一个开源项目(包含软件和硬件)。

硬件是一个USB接口转JTag接口的适配器。

借助开源软件OpenOCD可以完成程序的烧写,调试等任务OpenJTag的功能:

往Flash烧写程序:支持NOR Flash 和 NAND Flash

支持Windows以及Linux

能够用在支持GDB调试协议的工具上:如IAR, Eclipse

USB转串口功能

所以本质上还是开源软件OpenOCD

2-J-Link、J-Trace、Open JTAG区别

J-Link、J-Trace、Open JTAG都是用来调试程序的(当然还有其他工具可以进行调试,比如ICE),J-Link和J-Trace是SEGGER公司的(http://www.segger.com)。Open JTAG(http://www.openjtag.org/)是 一个开源项目,其目标是使嵌入式开发者能够通过JTAG接口,用开放的硬件和软件系统进行烧写、校验和调试[1]。他们都基于JTAG调试接口协议。

本质上都是基于JTAG接口协议的。

3-OpenOCD是什么

OpenOCD(Open On-Chip Debugger)开源片上调试器,是一款开源软件,最初是由Dominic Rath同学还在大学期间发起的(2005年)项目。OpenOCD旨在提供针对嵌入式设备的调试、系统编程和边界扫描功能。

OpenOCD的功能是在仿真器的辅助下完成的,仿真器是能够提供调试目标的电信号的小型硬件单元。仿真器是必须的,因为调试主机(运行OpenOCD的主机)通常不具备这种电信号的直接解析功能。

仿真器支持一个或多个传输协议,每个协议涉及不同的电信号,且使用不同的协议栈进行消息传递。市面上有很多种仿真器,并且这些仿真器的命名没有统一的规律。

仿真器有时候会被封装成独立的加密狗,这种称为硬件接口加密狗。一些开发板上面直接集成了硬件接口加密狗,这样可以使开发板通过USB直接连到主机上进行调试。

例如,JTAG仿真器支持JTAG协议的信号,可以用来进行TAPs和目标板子之间符合JTAG协议(IEEE 1149.1)的通讯。TAP(Test Access Port)是处理特殊指令和数据的单元。TAPs在芯片与板子之间和之内以菊花链的形式进行连接。JTAG支持调试和边界扫描。

还有SWD仿真器,这种仿真器支持使用SWD(Serial Wire Debug)信号与一些比较新的ARM芯片进行通讯,而且还可以作为那些同时支持JTAG和SWD的芯片的仿真器。不过SWD仅支持调试,不支持边检扫描。

对于一些芯片,还有专门的编程下载器,这些下载器仅支持擦写FLASH的功能,不支持调试和边界扫描。对于此类专用下载器,OpenOCD暂时并不支持。

加密狗:OpenOCD目前支持多种类型的硬件加密狗:基于USB的,基于并行端口的,以及其他在内部运行OpenOCD的独立盒子。

GDB调试:它允许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)的内核使用GDB协议进行调试。

Flash编程:擦写FLASH支持外部CFI兼容NOR闪存(Intel和AMD / Spansion命令集)和几个内部闪存(LPC1700,LPC1800,LPC2000,LPC4300,AT91SAM7,AT91SAM3U,STR7x,STR9x,LM3,STM32x和EFM32)。包括各种NAND闪存控制器(LPC3180,Orion,S3C24xx等)的初步支持。

小结一下:

OpenOCD (Open On-Chip Debugger)是一个开源的片上调试器,旨在提供针对嵌入式设备的调试、系统编程和边界扫描功能。

OpenOCD的功能需要调试仿真器来辅助完成,调试仿真器是一个提供调试目标电信号的小型硬件单元。常用的有Jink、STLink等,一些开发板直接集成了调试仿真器,如小熊派开发板就集成了STLink。

bf632c30-9816-11ee-8b88-92fbcf53809c.png

通过下面的OpenOCD架构图我们能更好的认识OpenOCD。

可以看出OpenOCD提供了GDBServer,可以通过它进行GDB相关的调试操作。

提供TeInet Server,可以通过Telnet连接对目标板进行烧录、重启等操作。

OpenOCD的配置基于TCL脚本,可以使用默认自带的TCL脚本,也可以编写自定义的脚本。

bf6eb56e-9816-11ee-8b88-92fbcf53809c.png

4-OpenJTAG怎么用?

上面我们提到OpenOCD需要调试仿真器配合使用,一般我们还会使用gdb client与其配合进行远程调试。

bf88099c-9816-11ee-8b88-92fbcf53809c.png在这里插入图片描述

5-JTAG与SWD的区别

JTAG (Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如ARM、DSPFPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。相关JTAG引脚的定义为:

TMS:测试模式选择,TMS用来设置JTAG接口处于某种特定的测试模式;

TCK:测试时钟输入;

TDl:测试数据输入,数据通过TDI引|脚输入JTAG接口;

TDO:测试数据输出,数据通过TDO引脚从JTAG接口输出;

串行调试(Serial Wire Debug),一种和JTAG不同的调试模式,与JTAG的20个引脚相比,SWD只需要4个(或者5个)引脚,结构简单,但是使用范围没有JTAG广泛,主流调试器上也是后来才加的SWD调试模式。

SWD和传统的调试方式区别:SWD模式比JTAG在高速模式下面更加可靠。在大数据量的情况下面JTAG下载程序会失败,但是SWD发生的几率会小很多。基本使用JTAG仿真模式的情况下是可以直接使用SWD模式的,只要你的仿真器支持,所以推荐大家使用这个模式。在GPIO刚好缺一个的时候,可以使用SWD仿真,这种模式支持更少的引脚。在板子的体积有限的时候推荐使用SWD模式,它需要的引脚少。







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • USB接口
    +关注

    关注

    9

    文章

    672

    浏览量

    54987
  • 适配器
    +关注

    关注

    8

    文章

    1823

    浏览量

    66944
  • JTAG
    +关注

    关注

    6

    文章

    383

    浏览量

    71151
  • J-Link
    +关注

    关注

    0

    文章

    77

    浏览量

    21951
  • GDB调试
    +关注

    关注

    0

    文章

    23

    浏览量

    1390

原文标题:OpenOCD是什么?

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    J-Trace调试器比起J-link的优势在哪些方面?

    看了半天J-Trace调试器的介绍,想向用过的大佬咨询比起J-link的优势在哪些方面? 是不是在某些调试场合特别能提高调试效率?
    发表于 04-15 06:48

    J-LINK无法找到CPU

    J-LINK 与电脑连接打开软件J-link ARm 时显示could not find supported CPU on core on JTAG chain.
    发表于 08-25 15:19

    j-link固件可以换掉新的j-link吗?

    求大神解答,刷固件一直刷不出来,网上的方法都试过了。。。固件修复不了我就担心换新的j-link还是一样的问题,是操作系统问题还是j-link硬件问题??
    发表于 08-14 21:14

    SEGGER J-Link与PIC32问题

    烧录该图像,一切都如我所料。请注意,我还尝试了回收电源、断开J-Link与mcu的连接、比较用J-Link和PicKit3烧录的十六进制文件(100%相同)、在配置中禁用JTAG。位和运行时通过
    发表于 09-24 10:37

    什么是J-Link探针?

    UltraSoC日前宣布:公司已与SEGGER达成合作伙伴关系,以在UltraSoC集成化的系统级芯片(SoC)监测和分析环境中为J-Link调试探针提供支持。SEGGER的J-Link探针是业界
    发表于 10-21 08:00

    J-Link Plus如何直接烧写SPI Flash?

      J-Link不仅支持单片机片内Flash的烧写,还能够通过SPI协议直接烧录SPI Flash。因为使用的是SPI协议,哪怕SPI Flash所连接的MCU不在segger支持范围内,在无需
    发表于 12-16 17:27

    J-Link无法连接芯片的常见解决办法

    在某些情况下,J-Link/Flasher仿真器可能无法与芯片正确连接,而导致在IDE中调试失败,出现例如“Failed to get CPU status after 4 retries”的报错
    发表于 02-19 10:08

    J-Link script文件的作用与用法

    某些情况下需要J-Link来执行一些自定义的操作,比如多核芯片的JTAG链的配置,硬件需要一些特殊的处理等。这些操作需要由用户根据自己的实际情况来定制,所以需要使用脚本来进行编写。J-Link
    发表于 03-02 16:40

    如何使用J-Link的虚拟串口VCOM功能?

    J-Link提供了虚拟COM功能,在使用J-Link的情况下,如果启用了虚拟COM端口,则J-Link会显示为具有多个接口的复合设备:J-Link功能和COM Port接口,两者可以
    发表于 04-28 13:30

    【益登科技 Silicon Labs SLWSTK6021A开发板试用体验】超值下载工具J-LINK/J-TRACE COMTEX

    J-TraceCortex,加上部分传感器和子板接口,子板插上后,调试器连接子板的MCU进行下载调试,没有插子板时,它的外接调试接口就可以接外部板子进行调试,此时底板就是的J-LINK/J-Trace Cortex,在
    发表于 07-01 11:21

    J-Link的高级使用

    Jlink 的高级使用J-Link简介J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。简单地说,是给一个JTAG协议转换盒。其连接到计算机用的是USB接口,
    发表于 08-06 08:32

    J-LINKJTAG的相关资料推荐

    添加链接描述JTAG是调试接口协议J-LINK是协议转换器调试ARM,要遵循ARM的调试接口协议,JTAG就是其中的一种。当仿真时,IAR、KEIL、ADS等都有一个公共的调试接口,RDI就是其中的一种,那么我们如何完成RDI–
    发表于 01-27 07:09

    解析J-LinkJ-TraceOpen JTAG原理以及其区别

    J-LinkJ-TraceOpen JTAG都是用来调试程序的(当然还有其他工具可以进行调试,比如ICE),J-Link
    的头像 发表于 01-30 09:29 1.8w次阅读
    解析<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'>区别</b>

    J-LinkJ-Trace烧录器的使用说明免费下载

    本文档的主要内容详细介绍的是J-LinkJ-Trace烧录器的使用说明免费下载。
    发表于 11-28 08:00 11次下载
    <b class='flag-5'>J-Link</b>和<b class='flag-5'>J-Trace</b>烧录器的使用说明免费下载

    J-LinkJ-Trace用户指南免费下载

    J-Link/J-Trace有不同的版本,每个版本都是为不同的目的/目标设备设计的。目前,J-Link/J-Trace有以下几种型号:J-Link
    发表于 03-03 08:00 14次下载
    <b class='flag-5'>J-Link</b>和<b class='flag-5'>J-Trace</b>用户指南免费下载