ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
16 августа
1535325 Топик полностью
Vit (12.08.2025 02:36, просмотров: 351) ответил Nikolay_Po на FreeRTOS. Вывод отладочной информации в UART. Что-то я не справляюсь. Сделал функцию быстрого вывода блока символов в буфер с последующей передачей при помощи DMA. Отладил, работает отлично. Потокобезопасно - быстро и блокирует прерывания в критической секции.
IMNHO, отжимать ресурс с монопольным доступом для какой-то отладки это жЫрный моветон. неявное выделение памяти и неопределенность аппетитов потребителей могут накрыть медным тазом любое разумное начинание. припоминается форк-бомба. ну и зачем-то появился vfprintf, кто-то когда-то использовал имена устройств вывода, а не только стандартные потоки или файлы, явно. в том же фортране форматрованный вывод можно было не только на терминал пользователя запустить, но и на 

системную

консоль, принтер и даже тупо в нуль. тут вспоминается легкая ржака - у мелкософта была версия Windows Fundamentals for Legacy PCs в которой искаропки был выпилен драйвер dev/null - Null.sys. можно вспомнить консольную отправку данных в тот же ком-порт, при этом в той же винде команду mode... а в лялихе ком-порт это и системный выхлоп (со своими настройками, в т.ч. скорости) и стандартный вывод для запущенной программы, и, если в программе используется выхлоп именно в тот же ком-порт, то оно тоже функционирует, но её настройки для скорости перебиваются при следующем попавшемся системном выхлопе... дебаг это дебаг (причем в таргете релиз по правилам хорошего тона он должен отключаться - рулёжка с одиноким системным printf это ещё тот секас), а правильный дебажный выхлоп должен оказывать минимальное влияние на <i>пользовательскую </i>задачу и жрать ресурсы не на все денньги. смешивание же системного и пользовательского отношу к "детской болезни левизны"(С). в примерах от вас ниже есть вариант с маллоком, за который в большинстве случаев я бы бил ногами по рукам, и варианты с тем или иным статическим буфером и предпочтительным использованием snprintf - сильно не рассматривал, но отвращение не нападало. КМК, использование SWO, RTT и подобных быстрых механизмов со всякими debug_printf не только освобождает ресурсы UART и DMA (хоть вам, похоже, их и не было жалко), но и "воспитывает" в плане отделения мух от котлет - системного от пользовательского.