我正在尝试将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
答案 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文件夹
这样做,重新编译代码并启动调试会话,您将按预期获得正常的调试会话。这只是一个临时解决方案,但我希望我能对某人有所帮助。