STM32: OpenOCD semihosting

Jan 30, 2019 14:42


Originally published at Шалаш инженера. You can comment here or there.

Небольшая заметка для себя, чтобы не гуглить заново в следующий раз.
  • В Makefile меняем параметры линкера: вместо -specs=nano.specs пишем -specs=rdimon.specs, вместо -lnosys пишем -lrdimon. Мне также пришлось добавить -Wl,-no-wchar-size-warning, т. к. размерность wchar где-то не совпала.
  • В коде до main объявляем функцию extern void initialise_monitor_handles(void) и вызываем её в начале main. Важный момент - при отсутствии принимающей стороны на хосте этот вызов приведёт к HardFault, т. е. система сможет работать только под отладчиком.
  • Запускаем OpenOCD с командой arm semihosting enable и в его выводе увидим сообщения от printf. Ещё один важный момент - вывод будет в отладочных сообщениях, по telnet его не видно.
  • Для младших контроллеров может стать проблемой увеличение размера прошивки. В STM32F030 пришлось уменьшить размер Min_Heap_Size в LD-скрипте.


semihosting, Электроника, stm32, Программирование, openocd

Previous post Next post
Up