- FreeRTOS. Вывод отладочной информации в UART. Что-то я не
справляюсь. Сделал функцию быстрого вывода блока символов в буфер с
последующей передачей при помощи DMA. Отладил, работает отлично.
Потокобезопасно - быстро и блокирует прерывания в критической
секции. Nikolay_Po(659 знак., 11.08.2025 21:34, dao, полностью)
- Решено тут: Nikolay_Po(1 знак., 20.08.2025 15:16, ссылка)
- Немного продвинулся. Подробности на форуме FreeRTOS. Nikolay_Po(1084 знак., 18.08.2025 19:46, ссылка)
- FreeRTOS имеет специальную функцию idle BlackMorda(1 знак., 13.08.2025 20:34, ссылка)
- Зачем печатать из задач? Класть в задаче в оперативку нужное.
Завести задачу с самым низким приоритетом и печатать из неё? - jlm(13.08.2025 20:03)
- Я ниже так и предложил, сделать по аналогии с ОС Windows, у которой
1 принтер и куча приложений/задач, желающих на нём попечатать. - vpv.vpv(14.08.2025 07:16)
- Так и есть в данном случае, один принтер на всю систему, называется
printf() и, что может быть логичней, чем брать и печатать на него
из любого места. - petrd(14.08.2025 07:49)
- откройте из двух терминалов один порт - Vit(14.08.2025 08:49)
- Такое нельзя сделать. Но это не аналогия для данной ситуации. - petrd(14.08.2025 09:13)
- А я думаю - аналогия! Я бы сделал одну задачу-драйвер, для UART,
как для принтера. В нашем случае, последовательного. Внутри этой
задачи прерывания, DMA, монопольный (!) доступ к телу (железу) и
пр.. А все остальне задачи обращаются не к UART'у, а к
обслуживающей его задаче, вернего уровня приложений: "Не будет ли
так любезен Джинн вот это вот передать?". И ждать, когда
UART'овский Джин твой флажок сбросит, т.е. запрос будет обработан. - vpv.vpv(15.08.2025 10:54)
- Следите! Уже сделано так. Все имеют доступ к printf(), внутри него,
когда сообщение готово, вызывается _write() в котором сообщение
отправляется в завернутый в критическую обертку StreamBufferSend().
В задаче из завернутого в критическую обертку StreamBufferRecieve()
это сообщение копируется, его длина и адрес передается в DMA, пуск
DMA, начинается транзакция в UART, задача ставится на ожидание,
пока от прерывания DMA не придет уведомление о завершении
транзакции. C приходом petrd(503 знак., 15.08.2025 11:47)
- Начало новой транзакции никак не мешает завершению передачи
предыдущего символа. Вы же, по опустошению буфера DMA, UART не
выключаете? Nikolay_Po(213 знак., 15.08.2025 12:59)
- Нет, конечно, ничего не выключаю. Похоже на воду дую ....
размышляю, пришло уведомление о завершении транзакции ДМА, а UART
еще передает, задача успела вытащить следующее сообщение, засунула
адрес и длину в ДМА, стартует, а от UART запроса к ДМА еще не
поступало, ну и, значит, стоп, ДМА ждет когда придет запрос от
него. - petrd(15.08.2025 13:21)
- Изобретаем journald вместе. Люблю такое :) - Cкpипaч(15.08.2025 10:55)
- не нужно передёргивать с ситуациями. компорт компа это USART с
дополнительными сигналами. здесь же аж голый USART. можете
семафорить, можете ещё как лочить, но обеспечьте отсутствие одновременного доступа Vit(1 знак., 14.08.2025 09:57, ссылка)
- Завёл тему на форуме FreeRTOS Nikolay_Po(1 знак., 13.08.2025 19:37, ссылка)
- Дошёл до того, что сделал пример, демонстрирующий проблему.
Демонстрирует. Nikolay_Po(3623 знак., 15.08.2025 13:42, ссылка)
- Перечитайте еще раз документацию на xStreamBufferReceive() где
сразу же сверху написано NOTE: Судя по вашему коду выполянется
vTaskSuspendAll(), но это ничего не дает и не является
сериализацией доступа ("последовательнизацией" для записывающих
потоков). Судя по всему, xStreamBuffer не потокобезопасный и у вас
просто "ломается", приходит во внутреннее неконсистентное
состояние. И там же, прямо написано как нужно сделать чтобы он
работал нормально. "One way to achieve such EmbedProg(336 знак., 14.08.2025 04:47,
, ссылка)
- Сделал такую штуку для наблюдения за состоянием задач. Можно
заглядывать в TaskState и StackRemainder: Nikolay_Po(1080 знак., 13.08.2025 14:00, картинка, картинка)
- Сделать так, как это сделано в других ОС, в которых UART один, а
пользовательских задач и желающих что-то на него вывести - много.
Тот же Windows и принтер. :))) Зачем изобретать велосипед? - vpv.vpv(13.08.2025 06:45)
- А к железке могут "единомоментно" несколько тысяч клиентов
подсоединиться? Иначе не понимаю, зачем там вообще ртось! - Eddy_Em(12.08.2025 21:34)
- как вариант реализации, можно и на статическом буфере petrd(1218 знак., 12.08.2025 08:25)
- IMNHO, отжимать ресурс с монопольным доступом для какой-то отладки
это жЫрный моветон. неявное выделение памяти и неопределенность
аппетитов потребителей могут накрыть медным тазом любое разумное
начинание. припоминается форк-бомба. ну и зачем-то появился
vfprintf, кто-то когда-то использовал имена устройств вывода, а не
только стандартные потоки или файлы, явно. в том же фортране
форматрованный вывод можно было не только на терминал пользователя
запустить, но и на Vit(1497 знак., 12.08.2025 02:36)
- Как мне кажется, SWO не относится к быстрым механизмам. По сути это
тот же UART, пусть высокочастотный, но без ДМА и прерываний, т.е.
побайтовый вывод с ожиданием готовности в бесконечном цикле. RTT -
это быстро, но требует JLINK, подходит только для м/к, чье
отладочное ядро умеет читать-писать память без остановки
процессора, выхлоп RTT идет на сеггеровский терминал, т.е. добавить
свой анализатор вывода не просто. В современных м/к достаточно
много UART и DMA, мне пока не AlexBi(286 знак., 12.08.2025 09:18)
- Спасибо за мнение. Отладка у меня останется и в релизе. Оставлю
гребёнку с Rx/Tx UARTa - типа порта консоли. Компортов в МК у меня
штук шесть. Из них для работы требуется два-три. Так что выделение
ресурса для отладки - дело осознанное и умышленное. Nikolay_Po(95 знак., 12.08.2025 08:07)
- [off] Eddy_Em(251 знак., 11.08.2025 23:10)
- Я бы сделал так. Сделал задачу (поток) для передачи через UART.
Ссылки на данные и их размер передавал бы в этот поток из других
потоков. - mmc(11.08.2025 21:47)
- Стек раздуветься из за глубоко вложенных функций и локальных
переменных. Надо поискать есть ли аллокация локальных буферов и
перенести в кучу или аллоцировать глобально. - framer_bum(11.08.2025 21:43,
)
- eclipse ide стала на глазах деградировать klen(681 знак., 16.08.2025 18:53, dao, картинка, полностью)
- успешно и продуктивно использую "для маленьких флешь" фаловую
систему LittleFS. скоро планируется большая обнова - v3 которая
довольно сильно по другому сделана. кому интересно, почитать можно
сдесь klen(1 знак., 16.08.2025 22:11, dao, ссылка, полностью)
- Товарищ купил осцылл от Fnirsi. Аж 350МГц. За 18тыр. Чес гря,
думал, что они свои з@ёбы подчистили. Хер там. Усреднение и
стробоскопия в полный рост. Непериодический сигнал совершэнно
неузнаваем. - mse homjak(15.08.2025 14:00, dao)
- Попытка импортозамещения. Можно ли вместо Keithley2750, MULTIMETER/SWITCH SYSTEM применить Вольтметр универсальный цифровой В7-78/1? =L.A.=(2 знак., 10.04.2025 16:39, dao, ссылка, ссылка, полностью)
- Спрошу местных хацкеров.. Загрузил в Макбук 365-й офис.. Как ево
активировать, глядя в этот ваш гитхаб? -- > Solo(1 знак., 09.08.2025 18:57, dao, ссылка, полностью)
- На компе два физических порта, можно ли как то их настроить, чтобы
оба находились в одной сети без внешних приблуд? - Make_Pic(07.08.2025 17:31, dao, полностью)
- Матлаб в эквипотенцияли умеет? (яндекс молчит) - Kpoк(08.08.2025 16:41, dao, полностью)
- Альтиум.. Как можно защититься от такого казуса? Имеем схему. И
вроде все ок.. Все соединено.. Начинаю делать трассировку пп.
Обнаруживается, что некоторые цепи не соединились( хотя визуально
все ок)?? Даю 2 фото.. Balda(42 знак., 06.08.2025 14:25, dao, картинка, картинка, полностью)
- На каком конструкторе можно сделать сайт - каталог "для своих" с
картинками и кратким описанием, на 5-10 страниц ? - De_user(05.08.2025 11:07 - 13:12, dao, полностью)
- Нужна бесплатная софтинка для прослушивания comPorta. Чтобы мог работать как терминал, так и получать доступ к com порту для прослушки обмена пользовательской программы с прибором - Constantin24(31.01.2017 15:09, dao, полностью)
- Бесплатных очень мало Sergey_N(235 знак., 05.08.2025 20:18, ссылка, ссылка)
- Так их гора! Eddy_Em(291 знак., 05.08.2025 08:22, ссылка)
- вот эту мне рекомендовали, сам как-то юзал, но давно LordN(33 знак., 05.08.2025 07:13, ссылка, ссылка)
- тяну мазу за VIRTUAL SERIAL PORTS EMULATOR, бери х86 полностью
фриваре, он позволяет создавать порты к которые можно открыть
несколько раз IBAH(1 знак., 19.01.2023 17:38, ссылка)
- Saleae + дешманская коробочка! Yft(2 знак., 19.01.2023 12:26, ссылка, ссылка)
- Терминалок много разных, мне из бесплатного комплекта Moxa Pcomm lite нравится. А в качестве монитора Bushound'a хватает, но он платный. - mut(01.02.2017 19:49 - 19:52)
- Все, что программное пробовал, какое то ущербное. Все собирался забацать примочку на FT2232 (2 канала). Целяй "железно" к проволокам "TX" и смотри, что хошь... Но 1) лень раньше родилась, 2) практически не юзаю сейчас COM, посему обхожусь Гудвин(76 знак., 01.02.2017 09:50)
- COM Port Toolkit. Упс. Он порезал фряшную версию. Ну теперь можно с чистой совестью пользовать леченую. - Codavr(31.01.2017 19:06 - 19:14)
- Hyper terminal! - VLLV(31.01.2017 19:09)
- portmon - Nikolay801_(31.01.2017 19:05, ссылка)
- не активен Constantin24(120 знак., 01.02.2017 08:03)
- Всегда паялась мелкая фиговинка на монтажке, несколько диодов, пара резисторов, пара электролитов, 3 разъема DB9, 2 проходных, 1 для фиксации обмена. Читали или в файл писали любой терминалкой. Могу схему нарисовать завтра. - Visitor(31.01.2017 18:44)
- Программист завел и синхронизировал 16 агентов Claude Opus 4, и
теперь они работают за него. Цифровые помощники пишут код, тестят и
общаются с клиентами, а он лишь проверяет результат. Codavr(1 знак., 05.08.2025 11:28 - 13:30, dao, ссылка, полностью)
- То ли меня опять версия Виндовс гнобит, то ли я ничего не понимаю.
Надо установить Stone Designer Setup 3.0.12. Ну ладно там Вин 7
32-бит ему не нравится. На ноуте у меня 64-бит. Там вроде всё
культурно. Запускается только после регистрации. Мы не гордые - всё
заполнил. На почту код верификации получил. Жму Логин. Ввожу почту
и свой пароль. А мне - "неверный пароль". Возвращаюсь всё по новой.
Там же и повтор пароля есть. Не ругается. Опять ввожу - фигвам и
так по кругу. Никто Лaгyнoв(61 знак., 03.08.2025 11:43, dao, полностью)
- Ткните в какую нибудь программу для расчета катушки. Тыкаюсь по
интернету ничего вменяемого не нахожу. Нужно рассчитать по
габаритам и диаметру провода количество витков и сопротивление. Самому считать лениво. - IBAH(01.08.2025 11:41, dao, полностью)
- Вопрос, кому нибудь удалось запрограммировать загрузчик на
STM32f103C8 Duino BluePill, чтобы загрузка скомпилированных
приложений из IDE Arduino загружались штатными средствами оболочки
(через виртуальный COM порт на PC? - Make_Pic(22.07.2025 18:17, dao, полностью)