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

    文章

    699

    浏览量

    55569
  • 适配器
    +关注

    关注

    8

    文章

    1931

    浏览量

    67899
  • JTAG
    +关注

    关注

    6

    文章

    398

    浏览量

    71587
  • J-Link
    +关注

    关注

    0

    文章

    83

    浏览量

    22115
  • GDB调试
    +关注

    关注

    0

    文章

    24

    浏览量

    1437

原文标题:OpenOCD是什么?

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

收藏 人收藏

    评论

    相关推荐

    J-Link中的JTAG接口使用注意事项

    其中,最常见的接口就要算是JTAG了。J-Link有一个JTAG连接器,这是一个20针的连接系统,如下所示。
    发表于 09-22 09:46 2546次阅读

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

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

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

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

    UM08001_JlinkARM资料

    J-link / J-Trace ARM Manual Rev. 82 ,User guide of the JTAG emulators for ARM Cores——Jlink的用户说明
    发表于 11-09 17:55 33次下载

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

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

    J-Link script的组成

    脚本语言不需要编译,它由解释器动态解释执行。J-Link Commander(路径C:Program Files (x86)SEGGERJLinkJLink.exe)是一个解释器,负责对J-Link script文件进行解释。
    的头像 发表于 03-09 10:57 2111次阅读

    教你轻松J-Link不能连接目标MCU的问题

    J-Link是嵌入式软件、硬件工程师最常用的工具之一,但是,在使用这个工具时,也会遇到各种各样的问题。 今天来给大家讲讲最常见的一个问题:J-Link不能连接目标MCU。 J-Link的连接
    的头像 发表于 06-30 11:18 5785次阅读
    教你轻松<b class='flag-5'>J-Link</b>不能连接目标MCU的问题

    基于J-Link Remote Server软件的远程调试方法

    SEGGER提供了一个J-Link Remote Server软件,可以使得在任何地方连接J-Link调试应用。J-Link Remote Server提供了图形界面和命令行的版本,支持
    的头像 发表于 06-14 08:56 2067次阅读

    J-Link script的组成与使用方法

    J-Link作为被广泛使用的调试器,提供了多种配套的软件工具。例如命令配置软件J-Link Commander,GDB server,J-Flash等。其中,J-Link Comman
    的头像 发表于 08-01 12:20 2503次阅读

    J-Link中的JTAG接口的正确使用注意事项

    所有标记为NC的针脚均未连接在J-Link内部。这里可以应用任何信号;J-Link将忽略这种信号。引脚4、6、8、10、12、14、16、18、20是连接到J-Link中GND的GND引脚。它们还应连接到目标系统中的GND。
    的头像 发表于 09-23 09:57 3122次阅读
    <b class='flag-5'>J-Link</b>中的<b class='flag-5'>JTAG</b>接口的正确使用注意事项

    SEGGER J-Link调试仿真器支持新型可编程SOC(片上系统)系列

    所有J-Link型号(J-Link PRO、J-Link ULTRA+、J-Link PLUS和J-Link BASE)最新硬件版本现在都支
    的头像 发表于 04-14 14:20 2217次阅读

    J-Link 中的JTAG 接口:正确使用需要了解的注意事项,在这里!

    J-Link 中的JTAG 接口:正确使用需要了解的注意事项,在这里!
    的头像 发表于 12-01 16:01 1387次阅读
    <b class='flag-5'>J-Link</b> 中的<b class='flag-5'>JTAG</b> 接口:正确使用需要了解的注意事项,在这里!

    SEGGER为J-Link和Flasher提供Device Provisioner工具

    日前,SEGGER宣布为其Flasher系列编程器以及J-LinkJ-Trace系列调试跟踪工具提供Device Provisioner工具。
    的头像 发表于 10-22 15:12 333次阅读