ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
16 августа
1535320 Топик полностью
mmc (12.08.2025 00:44, просмотров: 111) ответил Nikolay_Po на Гляну при случае. Вопрос - оно "потокобезопасно"? LTO у GCC не только не включает не используемые функции, но и переиспользует одинаковые фрагменты разных функций, в зависимости от стратегии оптимизации.
Я использую функцию из xprintf для вывода лога из разных потоков в проекте с scmRTOS в качестве ОС. На scmRTOS перешел с FreeRTOS из-за жесткого дефицита места в флэше. Поэтому оптимизация по размеру включена на максимум. С проблемами не сталкивался. Функции из xprintf заняли 544 байта. Аналогичная функция из SEGGER_RTT занимает около 1.5 килобайта. 

Формирование строки лога не требует использования разделяемых ресурсов, это можно делать там, где такая потребность возникает. А вот доступ к UART должны делить между собой разные потоки. Поэтому, на мой взгляд, разумно сделать работу с UART в отдельном потоке, а данные он будет брать из очереди, которую будут заполнять остальные потоки.