问题标签 [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.
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指挥官失败日志
swd - 如何使用 Jlink 脚本擦除部分
目前我使用:
擦除
加载文件“image.hex”
我怎样才能只擦除图像的一部分? 图像大小是已知的。
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手册中的说明进行说明:
为了:
我得到相同的输出
非常感谢,
吉列尔莫
c - 如何理解为什么会发生 ARM 异常?
我正在尝试了解我遇到的 ARM 异常的原因是什么。它在系统启动期间随机发生,并且可能以几种不同的方式出现。
最简单的一种如下:
我的理解是,有一些持续的异常,可以在第 1 帧中看到。它试图将寄存器保存到堆栈中:
101 stmfd sp!, {r0-r12} @ 保存 r4-r12 而我们正在处理它
但是,堆栈指针在以下位置不正确:
ABT:R13=7FFFFF88
两个我都不明白:
- 在 ABT 和 IRQ 上下文中,SP 的这种价值可能是什么原因?
- 第 0 帧实际上是什么?换句话说,Cortex 在已经处于异常处理程序中时如何对数据中止做出反应?
该设备通常可以正常启动,这种情况每 10 次启动会发生 3 次。从调试器启动时,它永远不会发生,只有发布并且只有从引导加载程序启动时才会发生。
debugging - CAN 1 RX 在环回模式下工作,但不在正常模式下
我正在使用基于 STM32F413RG 的定制板并尝试在其上运行一些基于 CAN 总线的应用程序。
我试图从 CAN 1 开始,并使用 CMSIS 库编写裸机代码来传输和接收。
这是三个函数的代码 - Init、Send 和 Receive。
从 CAN 1 发送数据包很好。接收时,我看不到 Rx 寄存器上的任何状态变化。但是,在确定信号范围时,我可以看到在接收到数据包时从 TX 引脚传输 ACK。
CAN 1 错误状态完全为空 (0x0)。
但是,当我在激活环回模式的情况下尝试相同的代码时,我可以看到寄存器上收到一条消息,并且我的代码也将其拾取。
附上 CAN 1 RF0R 寄存器在环回模式下的屏幕截图,指示接收。
这个范围(RX 的通道 0 和 TX 的通道 2)表明它在 RX 上接收到一条消息,并在正常模式下在其 TX 上发回一个 ACK。
我也检查了终止和它的罚款。(增加了 120 欧姆。无论如何,得到一个 ACK,所以我认为这不是问题)。
我不知道我可能会出错的地方。没有明确的错误消息。但是,在正常模式下,Rx 消息不会反映在任何一个寄存器上。
debugging - GDB 中断命令不会在命令文件中执行
我有一个调试脚本,它执行以下操作:
- 设置两个断点。让我们称它们为开始和结束断点。
- 启动后,脚本将继续执行,直到命中启动断点。
- 一旦命中开始断点,我将执行单步执行,直到命中结束断点。
这是我的命令文件:
澄清一下,一旦我开始调试会话,程序就会在main开始处停止;这就是为什么我在脚本中继续跳转到开始断点的原因。
问题是当断点被命中时 break 命令不会被执行。这是我在控制台中得到的:
控制台或日志文件不会打印任何内容。但是,当我将相同的中断命令直接写入控制台并手动执行时,它可以工作。
我正在使用 JLink 调试器和 openOCD 调试带有 RISC-V 的 VEGAboard。
更新:
我发现问题出在循环中。因此,每当我摆脱循环并简单地硬编码下一个命令的数量时,break 命令就会成功执行。
这种行为仍然很奇怪,我希望有人能解释一下。
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 在后台运行,配置如下图所示
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 是否存在错误!?非常感谢任何帮助
gdb - 使用 J-Link 在 PlatformIO 上调试失败
我正在尝试使用 J-Link 在 vscode 上设置 platformIO 的调试环境,以与 STM32f407ZG 芯片配合使用。
它可以构建和上传。但是每次我尝试调试它都会抛出这样的错误
我的 platformio.ini 看起来像这样:
我到底在哪里做错了,接下来我应该怎么做才能让它发挥作用?
build - 添加自定义源文件后,在 Segger Embedded Studio 上构建失败,没有说明原因
我正在从 nRF SDK 修改一个简单的示例项目(blinky)。我在项目目录内的新文件夹中添加了一个头文件和一个 .c 文件,然后将该路径添加./lib
到 common preprocessor user include directories
。然后我将标题包含在main.c
. 我可以自己编译新库,但是当我构建整个项目时,我得到Build failed
了错误,没有明确的理由跟进。
这是一张图片:
这里有人知道如何打败这个吗?