问题标签 [segger-jlink]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3506 浏览

c - 在 STM32F765 上使用引导加载程序时 J-Link 调试器出现问题

我正在使用 ST Nucleo 板上的 J-Link EDU 和 STLink 调试器。为了进行测试,引导加载程序代码位于 0x8000000 处,并且只是跳转到主应用程序代码所在的 0x8020000。当我使用 Jlink EDU 时,每次都无法成功烧写 0x8020000 的 flash,如果我修改程序并开始调试,Jlink 会擦除 flash 但没有烧写成功,并且引导加载程序跳转后,MCU得到硬故障。现在无论我使用 Jlink 还是 STLINK(转换为 Jlink)都会发生这种情况。通常我看到它停留在 0xFFFFFFFE。此时,JLINK 已擦除应用程序代码,但未能对其进行编程。

有趣的是,STlink 调试器在转换回来并与 openocd 一起使用时没有任何问题,引导加载程序跳转到主应用程序代码并从那里调试。

我还发现,如果我通过 STLink 和 OpenOCD 在 0x8020000 处对主应用程序代码进行编程,然后切换到 JLINK EDU 进行调试,只要 JLINK 不对其重新编程,它就可以工作。如果在日志中,我看到JLINK刷了代码,那么ST从bootloader跳转后就崩溃了。所以我绝对认为这与 JLINK 在调试期间如何擦除和编程 ST 有关。

我还尝试使用 JLINK 指挥官进行编程,但似乎也失败了。除非我完全擦除芯片。

我正在使用带有 GNU ARM Eclipse 插件的 System Workbench 2.0 进行 Jlink 调试,并使用截至目前最新的 ARM 工具链和 Jlink 616c。我在双组配置中使用带有闪存的 STM32F765VI。

为了清楚起见,我还附上了 JLINK 和 STLINK 的 GDB 日志。我想使用 JLINK 进行调试,因为我可以在 Eclipse 中使用 SWO 控制台,而在 OpenOCD 中它非常麻烦,所以想解决它。

尝试编程后 JLINK 调试失败:

如果 JLINK 不闪烁,则成功调试:

STLINK成功调试

JLINK指挥官失败日志

0 投票
0 回答
123 浏览

vb.net - 用 VB.net 在 cmd 中编写命令

我现在开始使用 VB.net 开发小程序。

我从一个 App Windows Form 开始。我想知道一些关于我的微控制器的信息(例如 MAC 地址等)。要知道这些信息,我必须使用 Segger J-Link 访问它的寄存器,并使用一个名为 J-Link commands 的软件。要读取寄存器,我必须打开 jlinkCommander.exe 并指定一些参数(设备、目标、以 kHz 为单位的速度等),并编写一些命令行。

在此处输入图像描述

如何打开 JlinkCommander.exe 并将所有这些参数放在 Windows 窗体中按一个按钮?

0 投票
1 回答
175 浏览

swd - 如何使用 Jlink 脚本擦除部分

目前我使用:

擦除

加载文件“image.hex”

我怎样才能只擦除图像的一部分? 图像大小是已知的。

0 投票
1 回答
2003 浏览

debugging - 在 STM32 中使用 SEGGER SystemView

目前我正在 STM32L476VGT 上使用 FreeRTOS 开发一个项目。到目前为止,我一直在使用 Ozone(SEGGER)和 J-Link(Edu 和 Ultra+)进行调试

现在我想使用 SystemView (SEGGER) “调试”或记录系统事件,但它不起作用。

首先是我认为重要的一些配置:16Mhz HSE --> internal 80Mhz SysClk FreeRTOS V8.2.3

J-link(连接 SCLK、SDIO 和 SWO)

使用 cubeMx 创建的项目,因此 ST HAl 库正在使用中(我知道对很多人来说是英国媒体报道软件,但当我拿到项目时就是这样)。

主程序

为了使用 SystemView,我只添加了添加到项目中的基本代码行。

在这一行下,我附上了 System Viewer 的屏幕截图。

在此处输入图像描述

编辑1:

我从一开始就创建了一个新的项目。

STM32L476RG 是 R 是另一块带有 3 个 LED 立方体的板:STM32L4 lib 1.10.0 FreeRTOS V9.0.0

主程序

结果相同:

在此处输入图像描述

如果我点击停止,我会得到:

在此处输入图像描述

另外,如果我按照SEGGER SystemView UM0802 pdf手册中的说明进行说明:

为了:

我得到相同的输出

非常感谢,

吉列尔莫

0 投票
1 回答
367 浏览

c - 如何理解为什么会发生 ARM 异常?

我正在尝试了解我遇到的 ARM 异常的原因是什么。它在系统启动期间随机发生,并且可能以几种不同的方式出现。

最简单的一种如下:

我的理解是,有一些持续的异常,可以在第 1 帧中看到。它试图将寄存器保存到堆栈中:

101 stmfd sp!, {r0-r12} @ 保存 r4-r12 而我们正在处理它

但是,堆栈指针在以下位置不正确:

ABT:R13=7FFFFF88

两个我都不明白:

  1. 在 ABT 和 IRQ 上下文中,SP 的这种价值可能是什么原因?
  2. 第 0 帧实际上是什么?换句话说,Cortex 在已经处于异常处理程序中时如何对数据中止做出反应?

该设备通常可以正常启动,这种情况每 10 次启动会发生 3 次。从调试器启动时,它永远不会发生,只有发布并且只有从引导加载程序启动时才会发生。

0 投票
1 回答
884 浏览

debugging - CAN 1 RX 在环回模式下工作,但不在正常模式下

我正在使用基于 STM32F413RG 的定制板并尝试在其上运行一些基于 CAN 总线的应用程序。

我试图从 CAN 1 开始,并使用 CMSIS 库编写裸机代码来传输和接收。

这是三个函数的代码 - Init、Send 和 Receive。

从 CAN 1 发送数据包很好。接收时,我看不到 Rx 寄存器上的任何状态变化。但是,在确定信号范围时,我可以看到在接收到数据包时从 TX 引脚传输 ACK。

CAN 1 错误状态完全为空 (0x0)。

但是,当我在激活环回模式的情况下尝试相同的代码时,我可以看到寄存器上收到一条消息,并且我的代码也将其拾取。

附上 CAN 1 RF0R 寄存器在环回模式下的屏幕截图,指示接收。 CAN 1 寄存器显示环回模式下的消息接收

这个范围(RX 的通道 0 和 TX 的通道 2)表明它在 RX 上接收到一条消息,并在正常模式下在其 TX 上发回一个 ACK​​。 正常模式下的 CAN 1 Rx 和 Tx

我也检查了终止和它的罚款。(增加了 120 欧姆。无论如何,得到一个 ACK​​,所以我认为这不是问题)。

我不知道我可能会出错的地方。没有明确的错误消息。但是,在正常模式下,Rx 消息不会反映在任何一个寄存器上。

0 投票
0 回答
256 浏览

debugging - GDB 中断命令不会在命令文件中执行

我有一个调试脚本,它执行以下操作:

  1. 设置两个断点。让我们称它们为开始结束断点。
  2. 启动后,脚本将继续执行,直到命中启动断点。
  3. 一旦命中开始断点,我将执行单步执行,直到命中结束断点。

这是我的命令文件:

澄清一下,一旦我开始调试会话,程序就会在main开始处停止;这就是为什么我在脚本中继续跳转到开始断点的原因。

问题是当断点被命中时 break 命令不会被执行。这是我在控制台中得到的:

控制台或日志文件不会打印任何内容。但是,当我将相同的中断命令直接写入控制台并手动执行时,它可以工作。

我正在使用 JLink 调试器和 openOCD 调试带有 RISC-V 的 VEGAboard。

更新:

我发现问题出在循环中。因此,每当我摆脱循环并简单地硬编码下一个命令的数量时,break 命令就会成功执行。

这种行为仍然很奇怪,我希望有人能解释一下。

0 投票
0 回答
373 浏览

cmake - 无法在 Clion 中使用嵌入式 gdb 服务器进行调试

我在使 gdb-debug 在 CLION 中工作时遇到问题 我在 Windows10 中使用 J-Link GDB 服务器和 arm-none-eabi-gdb 作为调试器 编译完成,以下文件在 cmake-build-debug 下创建文件夹(注意:我使用 -g -Og 来编译 -DDEBUG 标志)。

生成的文件

我遇到的问题是在 CLion 配置的嵌入式 GDB 服务器配置中使用 arm-none-eabi-gdb 调试器进行调试,只是当我从 CLion 执行调试时它无法正常工作。

更详细地说,我使用以下配置(我还使用 J-Link 硬件作为我的调试器,通过 STM32F103RBT6 板上的 SWD 连接)。

我的 CMakeLists.txt 文件(最后一部分是 UPLOAD Target)如下所示

CmakeLists.txt UPLOAD 部分 注意:arm-none-eabi-gdb 和 JLinkGDBServerCL都在 Windows PATH 环境中

在使用命令行时,我可以轻松调试而没有问题(注意我转到构建文件夹并从那里运行 arm-none-eabi-gdb),在下图中,可以看到一切正常[查看 (gdb ) 命令],而 Jlink GDB 服务器 GUI 在后台运行,配置如下图所示

我之前运行的 JLinkGDBServer GUI

gdb 通信工作正常,如下所示

来自构建文件夹中 cmd 提示符的 gdb

当我在另一个命令提示符窗口中使用以下 CLI GDB 服务器时,我得到的结果与通过执行以下命令 "C:\Program Files (x86)\SEGGER\JLink\JLinkGDBServerCL.exe" -port 2331 -s -device STM32F103RB - endian little -speed 1000 -vd -select USB -if swd -noir -singlerun -strict

但从 Clion 方面,我遇到了 CLion 的嵌入式 GDB 服务器调试配置的两个问题

首先在下图中,它在所有 CLion Embedded GDB 服务器配置中都不会执行 GDB 服务器

我得到以下错误结果图像请注意,我在每次尝试之前生成 CMakeLists.txt 文件,然后在每次调试之前重建项目。

Embedded GDB Server 配置输出和执行结果 - 不工作

我想知道我的设置是否有问题,或者 CLion Embedded GDB Server 是否存在错误!?非常感谢任何帮助

0 投票
0 回答
357 浏览

gdb - 使用 J-Link 在 PlatformIO 上调试失败

我正在尝试使用 J-Link 在 vscode 上设置 platformIO 的调试环境,以与 STM32f407ZG 芯片配合使用。

它可以构建和上传。但是每次我尝试调试它都会抛出这样的错误

我的 platformio.ini 看起来像这样:

我到底在哪里做错了,接下来我应该怎么做才能让它发挥作用?

0 投票
1 回答
926 浏览

build - 添加自定义源文件后,在 Segger Embedded Studio 上构建失败,没有说明原因

我正在从 nRF SDK 修改一个简单的示例项目(blinky)。我在项目目录内的新文件夹中添加了一个头文件和一个 .c 文件,然后将该路径添加./lib到 common preprocessor user include directories。然后我将标题包含在main.c. 我可以自己编译新库,但是当我构建整个项目时,我得到Build failed了错误,没有明确的理由跟进。

这是一张图片:

构建失败,没有说明原因

这里有人知道如何打败这个吗?