[Atollic Truestudio][STM32] "Ошибка загрузки" во время загрузки / отладки GDB с использованием CMSIS-pack/Components

Я пытаюсь использовать 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-пакета?

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

0 ответов

За последние 3 дня я нашел только одно решение: удалить версию 9.3.0 Atollic true studio и установить версию 9.0.1. После этого вы не можете получить такую ​​ошибку. Некоторые версии имеют проблемы с некоторыми платами...

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

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

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

Устройство> Запуск

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

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

  • будет включен заголовок "CMSIS Device Peripheral Access" stm32f10x.h

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

Боюсь, что в начальной и единственной доступной на сегодняшний день версии v1.0.0 файл "CMSIS Device Startup Interrupt Vectors" файл startup_stm32f10x.s никак не добавляется в проект.

То, как я установил это было путем добавления в startup_stm32f10x.s и STM32F103C8_FLASH.ld файлы из CubeMx сгенерированного проекта.

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

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

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

Другие вопросы по тегам