[Atollic Truestudio] [STM32]"加载失败"使用CMSIS-pack / Components进行GDB下载/调试

时间:2018-05-31 16:25:54

标签: gdb stm32 cmsis truestudio

我正在尝试将CMSIS-pack与我的新F103项目一起使用。到目前为止,我使用自动生成的项目结构,只是将一些文件移动到其他地方,一切正常。现在使用CMSIS-pack,虽然代码编译成功,但我得到了一些" Load Failed"将.elf下载到MCU中时出错。我运行自动生成的调试配置,与我之前的所有项目相同。我正在使用ST-link和GDB服务器。这是错误:

Failure at line:13 in 'Target Software Startup Scripts'. Please edit the debug configuration settings.

Load Failed

调试日志:

[0.000] init():  Atollic TrueSTUDIO gdbserver for ST-Link. Version 4.2.2 (WIN32 2018-02-26 16:20:21 15675)
[1.229] reset_hw_wtchpt_module():  Hardware watchpoint supported by the target 
[1.233] createFlashParams():  STM32 device: Flash size =1024
[1.335] STM32_AppReset():  Enter STM32_AppReset() function 
[1.440] STM32_AppReset():  NVIC_DFSR_REG = 0x00000009
[1.441] STM32_AppReset():  NVIC_CFGFSR_REG = 0x00000000
[1.442] STM32_AppReset():  XPSR = 0x01000000
[1.442] Device_Initialise():  ST_LINK Major version =2 Jtag version =27
[1.442] Device_Initialise():  ST_LINK VID=1155 PID=14155
[1.442] Device_Initialise():  ST_LINK device status: HALT_MODE
[1.442] Device_Initialise():  ST_LINK detects target voltage =3.26 Volt
[1.443] initServerContext():  ST-Link device initialization OK
[1.445] WaitConnection():  Waiting for connection on port 61234...
[2.028] WaitConnection():  Accepted connection on port 61234...
[2.028] Device_GetStatus():  ST_LINK device status: HALT_MODE
[2.045] handlePacket():  Reading 0x4 bytes of memory from addr 0x8006b54 
[2.045] handlePacket():  Reading 0x2 bytes of memory from addr 0x8006b54 
[2.069] handlePacket():  Reading 0x20 bytes of memory from addr 0xe00fffd0 
[2.071] handlePacket():  Reading 0x2 bytes of memory from addr 0x807a 
[2.071] handlePacket():  Reading 0x2 bytes of memory from addr 0x807e 
[2.084] STM32_AppReset():  Enter STM32_AppReset() function 
[2.189] STM32_AppReset():  NVIC_DFSR_REG = 0x00000009
[2.190] STM32_AppReset():  NVIC_CFGFSR_REG = 0x00000000
[2.191] STM32_AppReset():  XPSR = 0x01000000
[2.755] handlePacket():  Reading 0x4 bytes of memory from addr 0xffffffff 
[2.755] handlePacket():  Reading 0x4 bytes of memory from addr 0xffffffff 
[2.930] handlePacket():  Reading 0x40 bytes of memory from addr 0x8006b40 
[2.932] handlePacket():  Reading 0x40 bytes of memory from addr 0x8006b80 
[6.065] STM32_AppReset():  Enter STM32_AppReset() function 
[6.170] STM32_AppReset():  NVIC_DFSR_REG = 0x00000009
[6.171] STM32_AppReset():  NVIC_CFGFSR_REG = 0x00000000
[6.172] STM32_AppReset():  XPSR = 0x01000000

为什么不能下载代码的任何想法,而相同的配置适用于没有Components / CMSIS-pack的所有项目?

问候,Patryk

2 个答案:

答案 0 :(得分:1)

自3天以来,我只找到一种解决方案:卸载9.3.0 Atollic true studio版本,并安装9.0.1版。之后,您将不会收到类似的错误消息。某些版本的某些主板有问题...

答案 1 :(得分:0)

查看CMSIS自动生成的项目文件和CubeMx生成的项目的生成文件中的差异,我注意到.list文件中存在差异。 isr_vector未列出。

如果您选中this section 您会注意到,新的自动生成的项目中缺少某些内容。它是您设备的启动文件。

在项目树中的RTEconfig对象中,可以通过以下方式包括设备启动文件:

  

设备>启动

将其添加到RTE组件选择器并保存更改后,您将在项目树中找到文件

  • “ CMSIS系统和时钟配置文件” RTE> Device> STM32F103C8> system_stm32f10x.c

  • 将包括“ CMSIS设备外围设备访问标头” stm32f10x.h

  • 以及“ CMSIS系统和时钟配置标头”文件startup_stm32f10x.h

恐怕在当今的初始版本和唯一可用版本v1.0.0中,“ CMSIS设备启动中断向量”文件startup_stm32f10x.s并未以任何方式添加到项目中。

我修复该问题的方法是添加 startup_stm32f10x.s STM32F103C8_FLASH.ld 文件(来自CubeMx生成的项目< / strong>。

STM32F103C8_FLASH.ld位置必须添加到项目> C / C ++ Build>设置> C链接器>常规>链接器脚本

我将startup_stm32f10x.s文件复制到RTE> Device> STM32F103C8文件夹

这样做,重新编译代码并启动调试会话,您将按预期获得正常的调试会话。这只是一个临时解决方案,但我希望我能对某人有所帮助。