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-скрипте.