JLink仿真器使用汇总

目录:

一、Keil下载设置

二、SWD仿真硬件连接

1、SWD实时仿真接线

2、注意

三、仿真设置

四、仿真问题解决(Keil5.12)

1、仿真时添加变量或数组

2、程序下载

3、仿真器与线路板连接需可靠

4、使用J-Link时,Keil无响应

5、出现“USB无法连接”提示

6、Can not read register 17

五、J-Flash解除STM32写保护

六、J-Link下载Hex文件

1、简述

2、与J-Link相关的设置

3、烧录文件载入与连接目标

4、问题总结

1)可连接成功,擦除失败   2)通过程序Download与J-Flash均无法烧录程序

七、JLink-JScope与RTT使用

1、简介

2、HSS模式使用

3、RTT模式使用


所有的操作基于 Win7/64位,STM32F103VET6 使用 J-Link(SWD模式),另可参见“Keil编译软件的使用汇总三、Keil5.12错误的处理”。


一、Keil下载设置

1、通过第1步进入“Options”对话框,第2步用于选择仿真工具,比如 J-LINK 或 ST-Link 等。

2、此时需连接 J-Link 至 PCBA (印制电路板组装件)并已经给整板加电,或者由 J-Link 供电。第4步用于设置 JTAG 或 SWD。若能识别到单片机,如下图蓝色框所示,本节以 JTAG 为例说明。

3、点击第5步的“LOAD”就可下载。

二、SWD仿真硬件连接

1、SWD实时仿真接线

SWD 只占用两根单片机的端口,分别为 PA13 与 PA14,本内容着重介绍。

2、注意

JTMS、JTCK 外接电路中不能有电容。也可不用 RST端,在 STM32F407VET6 中实际仿真,速率要降低,我最多到 1MHz,如下图。

速率高了 Keil 5 中出现“SYSRESETREQ has confused core. Trying to reconnect and use VEC”提示。故实践出真知,RST 端有必要连接。

三、仿真设置

J-Link 的 SWD 仿真时,代码中对单片机口线的设置如下。

void KEY_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//关闭JTAG,否则 增加PBin(3)键失效
//GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
//设置为GPIO_Remap_SWJ_Disable,表现为找不到芯片;有时能找到芯片,但程序执行到KEY_Init()函数会停住,或者报“CPU_REG_SET():Register 0 is already marked as valid.”
//设置为GPIO_Remap_SWJ_JTAGDisable即可解决此问题。
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD, ENABLE);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
}

四、仿真问题解决(Keil5.12)

1、仿真时添加变量或数组

1)连接上 J-Link 仿真器,出现数组显示为变量,只要在此处设置断点,再仿真到相应的数组位置即可解决此问题。

2)点变量或数组右键可快速添加到 Watch 中。

3)对于局部变量全速运行时,看不到变量的内容,可修改为全局变量。

2、程序下载

1)程序下载完成后,J-Link 使单片机处于复位状态

只要 Start Debug,然后再 Stop Debug 即可。

或者勾选“Reset and Run”

2)读保护与写保护

在试验时“编程到 Flash 时写选项字节”前面切记不要打钩。

3)尽量不要由 J-Link 给线路板供电,内部有短接

4)勾选 2处不能烧写的设置

3、仿真器与线路板连接需可靠

查看仿真器是否连接上 PCBA 并成功识别 ARM 单片机的方法。

4、使用J-Link时,Keil无响应

J-Link 连接上线路板,中途线路板断电(或长时间没有操作),Keil 软件极容易出现无响应。拔去 J-Link 连接电脑的 USB 线再插上,此时 J-Link 已与 MCU 断开连接。会出现如下图的现象,点击确定即可。这样操作一般不容易掉固件。

5、出现“USB无法连接”提示

1)J-Link 没有插入数据线,产品连接J-Link,产品上电比较容易发生丢失固件;

2)长期 J-Link 不断电,打开 Keil 时也会丢失固件;

3)电脑报“USB无法连接”,此种情况只能给 J-Link 重刷固件,移步:实记JLink-V8刷固件方法

6、Can not read register

按“二、仿真设置做法即可解决此问题。

有时为了低功耗,将所有的 IO 引脚下拉也会出现此问题。在 JTAG 调试的时候,不能将所有的 IO 下拉,那样 JTAG 就不能正常工作了,将对应的语句注释掉就可以了。

五、J-Flash解除STM32写保护

通过 J-Flash 软件,配合 JLink 仿真器来解锁。

在 Target Device 中选择对应要解锁的芯片。

以本人所用的 STM32F103VE 为例,Flash size 为 512KB,本应选择 STM32F411CE,由于STM32F411CE 的 Flash size 为 512KB+16MB,因此,选择 STM32F411VE。只要 Flash size 大小与要解锁的芯片的 Flash 大小一致,Device 可以不一致。

芯片与 JLink 连接后,选择 Target-Connect 即可连接成功。

The "allow opt. bytes" device selection is only available for STM32F1 series devices. For later devices, memory mapped programming of the option bytes is not feasible as for some series, the option bytes become valid immediately which would cause immediate connection loss to a device (in case readout protection is enabled) before the option byte programming can be verified.

The STM32 series devices provide option bytes which allow "permanent" configuration as well as readout protection for the device. In order to enable or disable readout protection, a sequence of multiple read / write accesses to special function registers of the STM32 MCU has to be performed. The sequence is different for each sub-family of the STM32 device series and is described in the respective reference manual of the device. A list of example J-Link commander files and J-Flash projects which enable or disable the readout protection of an STM32 device is provided below. Please note that the provided files serves as an example / proof of concept. A user may alter them in order to suit their specific use case, e.g. using smaller timeouts, programming other values, etc.

NOTE: A power-on reset is required when securing the device while a debug probe is connected.

六、J-Link下载HEX文件

1、概述

本处以烧录 STM32F103VET6说明,软件:Flasher_Windows_V722a,实际测试 J-Flash V4.90 版亦可行。

2、与J-Link相关的设置

加密芯片后通过 SWD 不能下载程序。

3、烧录文件载入与连接目标

J-Flash 7.22a版本成功下载

J-Flash 4.90版本成功下载

4、问题总结

1)可连接成功,擦除失败

提示:RAM check failed @address 0x20000000.

Write: 0x03020100 07060504 

Read : 0xAAAAAAAA AAAAAAAA

(0 bytes of RAM have been checked successfully)

Failed to erasechip

解决:出现此错误是硬件的错误,与 JLINK 与板子的连线或者板子 JTAG 接口的问题

2)通过程序 Download 与 J-Flash 均无法烧录程序

SWD 仅使用 +3.3V、GND、JTMS、JTCK 四根线,未使用 RST。对于先前已烧录程序的单片机出现使用 ISP 烧录可以成功,但有些单片机 Download 与 J-Flash 均无法烧录,出现找不到芯片之现象,只要接入 RST 即可解决。关于 ISP 另可参看“单片机3种烧录方式解析”。

七、Jlink-JScope与RTT使用

1、简介

软件下载移步:https://www.segger.com/downloads/jlink/,J-Link V7.57 安装后,如下图所示。

其中的 J-Scope 为 SEGGER 公司推出,它可以在目标 MCU 运行时,实时分析数据并图形化显示的软件。它不需要 SWO 或目标上的任何额外引脚等功能,但使用可用的标准调试端口。

J-Scope 可以以类似示波器的方式显示多个变量的值。它读取 elf 或 axf 文件并允许选择多个变量进行可视化。只需将目标微控制器连接到 J-Link 并启动 J-Scope。只需几个步骤即可配置 J-Scope,并选择要显示的符号。配置可以存储在项目文件中,以便于重复使用和移植。

在 J-Scope 中选择的每个符号都可以单独配置。上下移动图形以更改零基线或更改其分辨率。选择是在图表中显示符号还是仅在监视面板中显示其值。分析收集的数据,滚动可视化图形,放大和缩小或将数据保存到文件中以供进一步分析。

J-Scope 可以与调试环境并行使用,并扩展IDE的调试体验。J-Scope 是 Jlink 的一个强大的功能,可以在 MCU 运行时,实时查看全局变量的值,并以图形化显示,就像示波器一样。它是通过 SWD 接口或者 JTAG 接口,读取 axf 文件来选择要显示的变量。以下内容来自:CSDN的“笙歌君独忧”。

目前支持的内核:

2、HSS模式使用

通过采样周期定时从内存文件中读取变量的值,所以采样周期和可执行文件是必须的,为了更加准确有效的采集到对的数据,最好用 volatile 声明变量。这种模式比较简单,只需加载 Keil 生成的 xx.axf 或 IAR 生成的 xx.out 即可。

优点:随时可连接 MCU,不影响 MCU 正常运行,因为不需添加任何代码,所以也不会占用 MCU 紧张的资源。

缺点:速度慢,采样速率基本固定在 1KHz 左右,因此仅仅适合采样变量变化速率低于 1KHz 的情况,因为数据是根据采样率来的,所以实时性不是太准,低速率下影响不大。

1)打开 J-Scope,创建一个工程

2) 配置

3)选择要查看的变量

4)开始

3、RTT模式使用

需要将 RTT 需要的软件包加载到应用程序中,RTT 模式下,所有的数据和时间戳均是有 MCU 来提供。

优点:比 HSS 更高的数据吞吐量,最高可达 2MB/S,不过这个是由 MCU 上使用的缓冲区大小决定,即使只有 512字节的小缓冲区也可以达到 1MB/S,够用了;J-Scope 数据采集与 MCU 的应用程序执行同步,因为应用程序决定何时以及如何采样数据;不需要知道变量位置,RTT 缓冲区的位置由 J-Scope 自动检测;时间戳等数据可以被添加到数据样本中。

缺点:稍微比较麻烦,需要移植 RTT 代码,占用 MCU 资源,大概需要 1.4kb 左右的 Flash,1KB 左右的 RAM。

1) 找到 JLINK 驱动的安装目录

解压后可以看到如下图所示文件,Example 目录是参考的 Demo、RTT 和 Syscalls 文件夹下就是移植所需要的文件。

RTT 目录内容:

Syscalls 目录内容:

2)添加文件到工程

(1) 在工程下新建一个文件夹,将上述中提到的文件放到这个文件夹中

(2) 添加文件到工程

(3) 添加头文件路径

将 RTT 的代码添加到工程内,并且在需要打印的地方包含“SEGGER_RTT.h”,这样就可以使用 SEGGER_RTT 进行打印了。

以上两种模式使用 JTAG 或 SWD 模式均可。


天道忌满,人道忌全;一半在于己,一半听自然。 觉得不错,动动发财的小手点个赞哦!

使用J-Link仿真器时,以下是一些基本的使用教程: 1. 准备工作: - 从Segger官方网站上下载并安装J-Link软件和驱动程序。 - 将J-Link连接到计算机上,可以通过USB线缆连接到计算机的USB接口。 2. 连接目标设备: - 使用适当的连接器将J-Link连接到目标设备上的调试接口。这可能是JTAG、SWD或其他接口类型,具体取决于目标设备的架构和支持。 - 在连接之前,确保目标设备的电源已打开,并且与J-Link之间的电气连接正确。 3. 配置J-Link软件: - 打开J-Link软件(J-Link Commander或J-Link Configurator)。 - 在软件界面中,选择正确的目标设备和接口类型。 - 如果需要,可以配置其他选项,例如时钟频率、调试模式等。 4. 连接到目标设备: - 在J-Link软件中,选择连接命令(Connect)。 - J-Link将尝试与目标设备建立连接,并显示连接状态信息。 - 如果连接成功,您可以继续进行后续操作,例如下载程序、调试代码等。 5. 下载程序: - 在J-Link软件中,选择下载命令(Download)。 - 指定要下载的程序文件(通常是一个可执行文件或固件文件)。 - J-Link将把程序文件下载到目标设备上的内部存储器中。 6. 调试代码: - 在J-Link软件中,选择调试命令(Debug)。 - J-Link将与目标设备建立调试连接,并启动调试会话。 - 您可以使用J-Link软件提供的调试功能,例如断点设置、寄存器查看、变量跟踪等来调试目标设备上的代码。 请注意,以上步骤只是基本的使用教程,实际操作可能会因不同的开发环境、目标设备和需求而有所差异。建议您参考J-Link仿真器的用户手册和Segger官方网站上的文档,以获取更详细和特定的使用指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱上电路设计

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值