Segger J-Link 与 JTAG 程序员?

电器工程 微控制器 手臂
2022-01-10 07:35:53

我没有用ARM开发过,我对程序员有点困惑。

我一直在使用 PIC 和 8051 进行编码,并且都使用制造商提供的加载器。没有混乱。

但是 ARM 有点不同,因为内核大多相同?

您是否必须购买 Segger “J-Link” JTAG 编程器才能对 ARM 进行编程?我看到专业的 Segger 装载机就像数百美元一样。好像有点狠。。。

我看到 ST 使 JTAG 编程器成为“ST-Link”的成本远低于“J-Link”——什么给出了?

ARM Cortex M 的加载器是怎么回事?ARM MCU 制造商的加载工具是否被锁定为只能与他们的 MCU 一起使用?

ST-Link 是否可以对另一个 ARM Cortex M 进行编程,如果您正确固定它?

我试图最终为 ARM Cortex M3 提供兼容的加载器,其制造商不制造加载器......

3个回答

ARM 使用 JTAG 或 SWD,最常见的微控制器 ARM 内核是 Cortex 系列,它们几乎完全通过 SWD 进行编程和调试。

JTAG 和 SWD 都有很好的定义,大多数供应商都描述了如何进入和操作调试访问端口 (DAP),这是您通常访问内部总线、CPU、存储器和外围设备的方式。您用于开发/调试的 PC 和 micro 的 JTAG/SWD 端口之间的物理接口是适配器。

虽然您几乎可以使用任何东西连接到端口并操作 SWD 接口,但大多数供应商都会有自己的“风味”适配器。使用供应商推荐的工具通常是阻力最小的途径,因为供应商将支持他们的适配器,他们推荐的软件将与他们的适配器一起使用,并且应该合理地记录事情,使事情尽可能顺利。

话虽如此,我对供应商工具的体验是,它们是不合标准、快速且肮脏的工具。我经常在使用 OpenOCD 和供应商工具(主要是 ST-Link、Olimex、OpenSDA 等)时遇到问题,尤其是在调试方面。告诉你:没什么比最终让嵌入式系统在调试环境下显示错误以及调试器软件/ide(gdb、eclipse等)、OpenOCD、供应商驱动程序和供应商适配器不同步、丢弃调试连接并需要重新启动硬件才能重试。这种令人沮丧的环境不稳定性为 Segger 等供应商打开了大门,这些供应商制造自己的 JTAG/SWD 适配器,提供出色的支持,并且其工具可与许多不同的供应商合作。对于一个统一的界面,几乎可以与您使用的所有设备一起使用,有一些话要说。

我花了很多时间避开 J-Link,因为它的价格以及我更喜欢使用开放软件和供应商工具。几年前,我开始在一个项目中使用 J-Link 适配器,该项目已经拥有它们并且没有回头。他们的工具都是多平台的,他们的独立调试器 Ozone 非常棒。我很少遇到 OpenOCD 和 J-Link 的“调试不稳定中间”问题,也从来没有遇到过 Ozone 的问题。

Segger 还采取了相当不错的步骤,即为开发套件上的任何板载调试器提供免费“升级”,将供应商特定的调试器转变为许可的 J-Link。这当然是为了让您尝试和使用他们的工具,这样您就可以购买它们以在自己的板上使用,但这是一个绝妙的策略。有关 ST-Link的更多信息,请按照其他供应商的“模型 -> 其他 J-Links”链接。他们还有教育折扣和价格非常合理的 J-Link“精简版”硬件(我认为是 50 美元?)并且仅限于 Cortex 处理器内核。

现在 Segger 并不是唯一的第三方适配器:一个专门针对 gdb 的开源调试器可用。这是黑魔法探测器. 他们销售硬件,但也有在 GPL 下发布的完整原理图、布局和软件。我还没有机会使用这些,但我很高兴尝试这个调试器。在调试器上实现 GDB 协议应该会显着提高稳定性。当然还有其他更高端的系统,例如劳特巴赫和(现已不复存在的)Abatron BDI2000 和 BDI3000 适配器。更高级/更昂贵的工具通常是联网的,而不是直接连接到调试 PC,提供(更快)更快的 JTAG 接口,并且通常还具有单独的跟踪端口可用,这些端口与兼容的 MCU 一起为您提供每条执行指令的详细日志,它执行的时间和每条指令后的内部处理器状态。

您也可以随时实现自己的。我在赛普拉斯的 PSoC5LP 中嵌入了我自己的 SWD 接口,以解决一个特定问题,该问题允许我通过一个 USB 连接对整个设备链进行编程以进行制造。您也可以使用并行端口或一对 GPIO 线来摆动信号。这一切都取决于你所追求的。

刚刚问的不是这个问题。

ARM做内核,内核有SWD接口,现在公开文档,有很多解决方案。是的,您可以使用 stlink 与 stm32 以外的芯片进行通信。同样,一只手臂在推动,不记得它的名字,在较新的 ti 启动板上找到,例如我认为有一个的 msp432 板。你可以花几块钱在 ebay 上获得 j-link 克隆,效果很好。你可以进入 openocd 并在并行后端实现你想要的任何东西,可以通过一个用作 gpio 的 ftdi 设备说一下,速度很慢,但工作得很好。还有一些人使用各种板、mcus 等简单地实现了 swd 工具。

特别是一些供应商 NXP 和 ST 继续提供基于 uart 的引导加载程序,它完全独立于 arm 和 swd 接口进入 arm 内核,这些引导加载程序是简单的协议,您可以使用 USB 在半小时内完成自己的工具在您的开发机器(ftdi 等)上进行 uart,或者有许多已经编写好的。遗憾的是,atmel 已经放弃了 samba,他们提供了一个可以下载到 samd 部分的软件,但您必须负责不擦除它,而且该部分非常容易擦除闪存,令人不安的容易。因此,对于像您过去可以依赖的其他供应商这样的界面来说,这有点失败。

如果你想从这个角度来看,基本上有太多的选择可供选择。更不用说,如果您从芯片供应商处购买开发板并下载他们的软件,预计只需单击或几次鼠标即可工作。

请注意,此答案是基于意见的。

我认为,如果您是 ARM 新手,您应该首先关注一家制造商。

就我而言,最好的选择是 STM。我在短时间内学到了很多东西,因为有很多便宜的开发板和不同的微控制器,我可以重复使用带有继电器、显示器等的 arduino 兼容扩展板。

如果你熟悉“生态系统”(STM32IDE,CubeMX),STM32是非常友好的。便宜的小程序ST-Link V3对于第一年的开发来说已经足够了。

STM 提供了几种编程器/调试器:

ST-Link V2 可以为目标提供电源(这不适用于隔离版本)。

如果我没记错的话,ST-Link V3 无法为目标板供电,但速度要快得多。当您调试具有大闪存的微控制器时(与 8 位微控制器相比),这真的很重要。

ST-Link V3 SET 很烂(与 MINI 变体相比差异不大),如果你没有理由就不要买它。我正在使用它,我觉得那是未完成的产品,或者是为某些未知公司特殊需求而制造的产品。

ST-Link V3 MINI 变体价格便宜并且可以完成它们的工作(编程和调试)。

SEGGER 公司拥有对调试密集型应用程序(多任务、FreeRTOS 等)非常有用的软件和硬件工具。

有一个名为 SEGGER SystemView 的工具,它可以显示任务需要多少时间以及操作系统如何切换任务。它可以与 SEGGER J-Link 硬件工具或简单的 UART 一起使用。如果您第一次使用 FreeRTOS,这实际上是一个非常好的工具,可以帮助您了解正在发生的事情。您可以看到您的任务何时运行等(下图)。

图片来自 SEGGER 网站

SEGGER J-Link(硬件工具)种类很少。更昂贵的变体速度更快并且具有更多的缓冲内存(您可以一次跟踪/分析更多事件)或具有以太网或 WiFi。较便宜的工具具有较小的缓冲区,您可能不得不多次分析多任务应用程序,因为它可能无法跟踪所有事件。