ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
22 декабря
429161 Топик полностью
Связанные сообщения
АрхитектураАвтоматыBigloop
Прототреды это биг-луп вывернутый наизнанку. Или наоборот. То же самое, что конечные автоматы им. Шалыто, switch-технология. Удо...2020-06-11
Железо нужно симулировать не на уровне битов и фронтов сигналов, а на уровне высокоуровневых операций (например, чтение-запись б...2019-11-07
Да, примерно об этом я и думаю. Что систему КА можно запускать параллельно, на пуле потоков, по выбирая готовые к запуску по мер...2019-10-22
Как запустить параллельную систему КА написано у Шалыто лет 20 тому назад. Впрочем и самому додуматься можно. Тема уже изъезженн...2019-10-22
Ровно наоборот. Конечные автоматы подразумевают ЯВНОЕ выделение всех возможных состояний программы (как множества состояний сист...2019-10-21
Выскажу ещё раз: FreeRTOS сырая недоделка, смысла особого, без реализации ряда перечисленного (см. ниже) не имеет и, хуже того, ...2019-10-18
"В контексте МК" никаких задач не должно быть! :) Контроллер рассчитан на обслуживание периферии, а потому никаких других событи...2019-09-20
Кооперативную не хотите попробовать? Написана на С, без ассемблера2019-09-02
Ты что-то не то говоришь. В тикле там свой встроенный цикл обработки событий, либо можно свой написать вместо него, смотря как у...2018-12-01
Когда ПО прибора запускается на обычном ПК. Для этого обычно ПО разделяется на два слоя, как минимум: платформо-независимый (бол...2018-05-23
Подход, если не нужно реальное вытеснение (т.е. критично время реакции), порочный: сложные системы в "больших компьютерах", наоб...2015-09-12
Да, трэш угар и содомия. Иногда абстракции через край, поэтому я имею такое мнение, что иногда и не грех в исходники прямо вписа...2013-12-29
Не совсем. Над HAL может быть ещё один слой, уже нужный для совмещения разных программных интерфейсов. Т.е. есть модуль A, котор...2013-10-25
Давно холиваров не было. Как насчёт RTOS vs Main Loop? Поделитесь практическим опытом. Сам RTOS не применял, да и не очень хочет...2013-07-24
Топик посвящён программированию микроконтроллеров в условиях необходимости экономии электроэнергии и архитектуре ПО в целом.2011-10-24
Полезны аж 3 прослойки (ассемблеристам дальше лучше не читать):2011-10-13
Тут очень любят рассуждать о RTOS и всём таком. Но как-то массово замалчивается, что стандартная C-библиотека для неопределённог...2011-08-13
fk0легенда (31.07.2013 16:47, просмотров: 899) ответил Скрипач на Признаюсь честно, я батареечных приборов не делал. Максимум - с резервированием питания. Но писать "чисто событийно" пробовал. Не понравилось.
Вот и отличненько. Удалось значит понять суть: императивный стиль программирования повсеместно вдалбливаемый в (не)окрепший мозг -- суть есть тонкая диверсия. Невозможно писать программы в императивном стиле. Особенно, управляющие программы. Потому, что есть глубокий параллелизм, как самих процессов управления, так и внешних поступающих событий. Хорошим кажется автоматный подход (опять отсылаю к Шалыто). Он даёт и ответ на вопрос как проектировать алгоритм, даже не программу, как построить архитектуру ПО. Но он не несёт в себе ответа, а как теперь всё это заставить работать на процессоре исполняющем инструкции сугубо последовательно. Switch-технология хороша, но... Масштабы её практического применения упираются в небольшие программки, там та же проблема, что и в big loop (она по-сути им и является), та же проблема, что и в protothreads. Опять же нужен планировщик, RTOS, событийное программирование... что угодно, что позволит запускать код строго когда необходимо, а не проверять условия в бесконечном цикле. И вот перейти от автоматной программы (по switch-технологии) к событийной уже крайне просто. Или, если хочется, можно те же автоматы завернуть в событийную обёртку (собственно разница только в том, что все события будет обрабатывать одна функция автомата с разными, в зависимости от события, аргументами). И надо сломить один раз свой мозг. И научиться мыслить не последовательно, а параллельно, в автоматном или событийно-ориентированном стиле. Разница примерно такая же, как между императивным и функциональным, или логическим программированием (к вопросу, почему изучение lisp или prolog весьма способствует освобождению от пут мышления в стиле pascal). Тяжело войти, потому, что багаж знаний, привычка императивного программирования сильно мешает. Но достаточно перешагнуть всего один раз, будет может не очень легко. Зато дальше, через некоторое время, мышление изменится и станет гораздо легче оперировать алгоритмами в разных формах, без привязки к последовательному выполнению. И станет очевидно, что последовательная форма на самом-то деле зачастую вовсе не нужная. А для начала можно поступать так, что проектируем автомат на бумаге карандашём -- затем переводим в код руками (автоматный по switch-технологии или событийно-ориентированный, где за основу берутся события из схемы автомата на бумаге...) Именно автомат, а не блок схему. Т.к. последняя не предполагает никакого параллелизма.
[ZX]