[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
Сделав это, перекомпилировав код и запустив сеанс отладки, вы получите ожидаемый нормальный сеанс отладки. Это только временное решение, но я надеюсь, что смогу кому-то помочь.