Проблема с запуском симулятора QEMU из STM32CubeIDE

#c #c #eclipse-cdt #qemu #stm32cubeide

#c #c #eclipse-cdt #qemu #stm32cubeide

Вопрос:

Я пробую STM32CubeIDE, и я пытался заставить его работать с плагином отладки GDB QEMU, который является частью пакета Eclipse CDT. Мне удалось создать проект и конфигурацию отладки для моей платы обнаружения STM32F4, и отладчик частично запускается, однако, как только симулятор запускается, окно графического интерфейса, которое он создает, внезапно выходит из строя, и я получаю эту ошибку:

 Error in final launch sequence
Failed to execute MI command:
-target-select remote localhost:1234
Error message from debugger back end:
Truncated register 18 in remote 'g' packet
Failed to execute MI command:
-target-select remote localhost:1234
Error message from debugger back end:
Truncated register 18 in remote 'g' packet
Truncated register 18 in remote 'g' packet
  

Я думаю, что это вызвано некоторым несоответствием между установленным мной плагином CDT и набором инструментов GCC, который поставляется с моей установкой Ubuntu 20.04. Однако я не уверен, как это исправить.

Есть ли что-нибудь, что я пытаюсь исправить?

Ответ №1:

Похоже, что было несколько факторов, объясняющих, почему это не сработало. Во-первых, сообщения об ошибках, которые я получал сразу после завершения работы отладчика GUI, были вызваны неправильной установкой пакета arm-none-eabi-gdb. Чтобы исправить это, я загрузил пакет с сайта ARM и следовал инструкциям, подробным здесь. После повторной установки пакета arm-none-eabi-gdb я снова зашел в настройки конфигурации отладки проекта, перешел на вкладку «отладчик» в этом окне, а затем изменил путь к исполняемому файлу GDB из переменных, установленных для меня IDE, на фактический путь к исполняемому файлу GDB (в данном случае /usr/bin/arm-none-eabi-gdb ).).

После того, как это было сделано, отладчик больше не будет немедленно завершаться, но я все еще получал некоторые ошибки в консоли вскоре после его запуска (см. Ниже). Кроме того, графический интерфейс отладчика не выдаст значимого вывода, и Ubuntu предупредит, что процесс заморожен.

 NVIC: Bad read offset 0xd88
qemu-system-gnuarmeclipse: Attempt to set CP10/11 in SCB->CPACR, but FP is not supported yet.
  

Чтобы решить эту проблему, я щелкнул правой кнопкой мыши по проекту на панели project Explorer в IDE, затем перешел в раздел сборки C / C , затем в раздел настроек под ним и, наконец, в раздел «Настройки инструмента» этого меню. В разделе «Настройки MCU» есть два варианта для «Единицы измерения с плавающей запятой» и «ABI с плавающей запятой», которые я изменил на «Нет» и «Программная реализация» соответственно. После сохранения этих изменений конфигурации я перешел к файлу system_stm32f4xx.c в каталоге src / проекта и прокомментировал эти строки:

   /* FPU settings ------------------------------------------------------------*/
  #if (__FPU_PRESENT == 1) amp;amp; (__FPU_USED == 1)
    SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */
  #endif
  

После этого я очистил проект, перестроил его и перезапустил отладчик. Затем он функционировал нормально.