[Atollic Truestudio] [STM32] «Ошибка загрузки» во время загрузки / отладки GDB с использованием CMSIS-pack / Компоненты - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь использовать CMSIS-pack с моим новым проектом F103.До сих пор я использовал автоматически сгенерированную структуру проекта, просто перемещая некоторые файлы в другое место, и все работало нормально.Теперь с CMSIS-пакетом, хотя код успешно скомпилирован, я получаю некоторую ошибку «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

Любые идеи, почему он не может загрузить код, хотя одни и те же конфигурации работают для всех моих проектов без компонентов / CMSIS-пакет?

С уважением, Патрик

1 Ответ

0 голосов
/ 30 мая 2019

Глядя на различия в файлах, созданных для сборки автоматически создаваемого файла проекта CMSIS и проекта, созданного в CubeMx, я заметил, что в файле .list есть различия.Isr_vector не указан.

Если вы отметите этот раздел Вы заметите, что в новом автоматически сгенерированном проекте чего-то не хватает.Это файлы запуска для вашего устройства.

В объект RTEconfig в дереве проекта есть способ включить файлы запуска устройства, отметив галочкой:

Device> Startup

После добавления этого в селектор компонентов RTE и сохранения изменений в дереве проекта вы найдете файлы

  • "Файл конфигурации системы и часов CMSIS"RTE> Устройство> STM32F103C8> system_stm32f10x.c

  • «Заголовок периферийного доступа к устройству CMSIS» stm32f10x.h будет включен

  • , поэтомуФайл «Заголовок конфигурации системы и часов CMSIS» startup_stm32f10x.h

Боюсь, что в первоначальной и единственной доступной версии, v1.0.0, «Векторы прерываний при запуске устройства CMSIS»файл startup_stm32f10x.s не добавляется в проект никоим образом.

Я исправил это путем , добавив startup_stm32f10x.s и STM32F103C8_FLASH.л.д. файлы из проекта CubeMx Generated .

Необходимо добавить местоположение STM32F103C8_FLASH.ld в проект> C / C ++ Build> Настройки> C Linker> General> скрипт компоновщика

Я скопировал файл startup_stm32f10x.s в папку RTE> Device> STM32F103C8

После этого, перекомпилировав код и начав сеанс отладки, вы получите, как и ожидалось, обычный сеанс отладки.Это только временное решение, но я надеюсь, что могу кому-то помочь.

...