Включив следующие флаги компоновщика:
LDFLAGS += --specs=rdimon.specs -lc -lrdimon
похоже, вы пытаетесь использовать так называемый полухостинг. Вы говорите компоновщику включить библиотеки системных вызовов.
Полухостинг - это механизм, который позволяет коду, выполняющемуся на цели ARM, обмениваться данными и использовать средства ввода / вывода на главном компьютере, на котором запущен отладчик.
Примеры этих средств включают ввод с клавиатуры, вывод на экран и дисковый ввод-вывод. Например, вы можете использовать этот механизм, чтобы разрешить функциям библиотеки C, таким как printf () и scanf (), использовать экран и клавиатуру хоста вместо того, чтобы иметь экран и клавиатуру в целевой системе.
Поскольку вы используете инструменты с открытым исходным кодом для разработки STM32 (Makefile и arm-none-eabi), я предполагаю, что вы также используете openOCD для программирования своего микроконтроллера. openOCD требует, чтобы вы также включили полухостинг, используя следующую команду:
arm semihosting enable
Вы можете выполнить команду вашего скрипта openOCD, убедившись, что вы завершили стадию конфигурации и перешли на стадию выполнения с помощью команды init. Ниже приведен пример скрипта openOCD (адаптированного для STM32F103):
source [find target/stm32f1x.cfg]
init
arm semihosting enable
Другие упомянутые здесь решения, в которых вы перенаправляете функцию fputc()
на интерфейс UART, также будут работать и могут. Полухостинг будет работать на всех последних версиях ARM Cortex-M, но для этого потребуется некоторая конфигурация компилятора и отладчика (см. Выше). Перенацеливание функции fputc()
на интерфейс UART будет работать с любым компилятором, но вам нужно будет проверить конфигурацию контактов для каждой платы.
person
Guillaume Legrain
schedule
19.12.2016
print
набор функций, который использует UART (или другие протоколы связи). Найдите некоторые библиотеки UART или, возможно, некоторые библиотеки отладки, которые используют ваш отладчик (например, Segger RTT с JLink Viewer на вашем ПК, если у вас есть отладчик Segger) - person Tim   schedule 23.09.2016