Я изо всех сил пытаюсь правильно внедрить printf из newlib в свой esp32, используя GCC.
Я просмотрел документацию newlib, и она дает мне общую информацию о том, как вызывается printf, но не объясняет мне внутреннюю реализацию.
Основываясь на моем текущем исследовании, я определил, что printf выводит форматированную строку в STDOUT. На ПК мне это было проще понять, потому что есть окно консоли, в котором будет отображаться форматированный вывод из printf, однако во встроенной системе я понимаю, что вы должны указать библиотеке, куда перенаправить форматированный вывод printf, и вот что Я пытаюсь выяснить.
Опять же, основываясь на своих исследованиях, я пришел к выводу, что для этого требуются некоторые функции, в частности функция _write
.
Мне очень сложно преодолеть разрыв между printf и использованием функции _write
. Я надеюсь, что кто-то здесь может помочь мне понять, как правильно реализовать printf.
И если я пропустил какую-то документацию, которая ясно объясняет это, то, пожалуйста, перенаправьте меня на нее. Я пробовал читать документацию по newlib, а также документацию, связанную с GCC, но на самом деле нигде не упоминается, как использовать printf, но есть много документации о том, как вызывать printf и форматировать строку, но эта часть проста. Мне нужно знать, как получить отформатированную строку из STDOUT MCU.
Спасибо всем!
printf()
и его родственников большей или меньшей сложности в Интернете. Если вы найдетеint printf(const char * restrict fmt, ...) { va_list args; va_start(args, fmt); int rc = vfprintf(stdout, fmt, args); va_end(args); return rc; }
, то у вас есть функция реле, и вместо этого вам нужно найти реализациюvfprintf()
. Но и это доступно… - person Jonathan Leffler   schedule 06.03.2019printf()
. Я думаю, что вопрос должен быть о том, как перенастроить Newlib так, чтобы ееprintf()
работало, а не о том, как реализоватьprintf
- person Clifford   schedule 06.03.2019