完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在尝试在 python 中开发一个自动测试脚本来测试在驻留在自定义 PCB 上的 STM32L496RG 上运行的嵌入式软件。为此,我尝试使用 ST 无头 GDB 调试器和无头构建实用程序。这个特殊的测试要求我在测试期间必须对源代码进行轻微修改(通过 python 脚本),我已经成功地完成了。
当我运行自动化测试脚本时,我能够修改代码、重建程序并执行测试步骤,这似乎总是在测试中第一次起作用,但之后就再也没有了。然后我必须断开调试器,甚至可能重新启动 MCU 以准备下一个我需要修改更多代码的测试步骤。第二次修改代码并重新构建后,我尝试启动调试器,它成功地与目标连接(或者看起来如此)。我通过确认 gdb 服务器与目标连接来验证这一点,然后 gdb 客户端使用正确的 elf 文件启动,最后服务器和客户端相互连接/链接。 现在这是关键,当程序第一次正确启动时,我收到一条消息,指出调试器所在的起始地址(在等待绿灯继续时),这是(如您所料)开始在重置处理程序。 Reset_Handler () 位于 ..Startup/startup_stm32l496rgtx.s:63 63 ldr sp, =_estack /* Atollic 更新:设置堆栈指针 */ 但是在第二次重建之后,它声明它正在开始执行程序: Eeprom_Format () 中的 0x08019670 位于 ../Src/Eeprom.c:82 82 nStatus = Nvm_WriteLong(eepromBaseAddress,NVM_FORMAT_HEADER); 我认为这是程序中的地址。但是,../Src/Eeprom.c 是一个源文件,它存在于工作区内的另一个项目中,但不存在于这个特定项目中。此其他项目仅用于初始化此项目的 eeprom。这个问题似乎只在以无头方式运行所有这些时才会发生。当我使用 STM32CubeIDE GUI 构建并运行相同的代码时,一切似乎都运行良好。我在工作区中确实有多个项目,但我看不出它们是如何妨碍的,因为 gdb 调试器在安装过程中确认它指向正确的 elf 文件路径。我应该在启动调试器之前进行批量擦除或其他操作吗?这听起来像是构建问题还是调试器问题? 关于发生了什么的任何想法? |
|
相关推荐
1个回答
|
|
好的。我想到了。这不是构建问题。您可能会争辩说它甚至不是 ST-Link GDB 调试器问题。但是,我绝对认为这是 GDB 调试器问题。
我假设 ST-Link GDB 无头调试器的功能与它在 STM32CubeIDE 的 UI 版本中的功能相同。具体来说,用于启动 GDB 调试器的无头命令会在目标启动时自动将更新的 elf 文件编程到目标上。我假设这是因为如果它不打算为您将它加载到目标上,为什么启动 GDB 客户端的命令会采用 elf 文件的文件路径。 arm-none-eabi-gdb.exe C:..DebugProjectName.elf 如果程序不打算对参数做任何事情,为什么不直接调用不带参数的客户端可执行文件呢?下面的这个命令就可以了。 arm-none-eabi-gdb.exe 无论如何,我通过添加对 STM32Programmer 的无头命令调用来解决这个问题,以便在启动 GDB 调试会话之前手动将更新的图像加载到目标上。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2590 浏览 1 评论
3194 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1769 浏览 1 评论
3592 浏览 6 评论
5972 浏览 21 评论
924浏览 4评论
1300浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
566浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1287浏览 3评论
1338浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 16:15 , Processed in 1.138480 second(s), Total 46, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号