ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
24 апреля
619114 Топик полностью
Связанные сообщения
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
Да, трэш угар и содомия. Иногда абстракции через край, поэтому я имею такое мнение, что иногда и не грех в исходники прямо вписа...2013-12-29
Не совсем. Над HAL может быть ещё один слой, уже нужный для совмещения разных программных интерфейсов. Т.е. есть модуль A, котор...2013-10-25
Вот и отличненько. Удалось значит понять суть: императивный стиль программирования повсеместно вдалбливаемый в (не)окрепший мозг...2013-07-31
Давно холиваров не было. Как насчёт RTOS vs Main Loop? Поделитесь практическим опытом. Сам RTOS не применял, да и не очень хочет...2013-07-24
Топик посвящён программированию микроконтроллеров в условиях необходимости экономии электроэнергии и архитектуре ПО в целом.2011-10-24
Полезны аж 3 прослойки (ассемблеристам дальше лучше не читать):2011-10-13
Тут очень любят рассуждать о RTOS и всём таком. Но как-то массово замалчивается, что стандартная C-библиотека для неопределённог...2011-08-13
fk0, легенда (12.09.2015 13:33, просмотров: 641) ответил Make_Pic на Как без использования RTOS красивее правильнее сделать, чтобы запускалась последовательно очередь из функций поочередно, но во время ожидания TimeDelay события каждой функцией, управление отдавалось main loop?
Подход, если не нужно реальное вытеснение (т.е. критично время реакции), порочный: сложные системы в "больших компьютерах", наоборот, стараются сделать однопоточными и событийно-управляемыми. Иначе сложность синхронизации параллельных пороков http://caxapa.ru/279767.html
превышает разумные величины. Если система с big-loop достаточно простая и быстрая, чтоб обеспечить приемлимое время реакции во всех случаях, то многопоточность не нужна, т.к. сулит только проблемы. См. ссылку. Но если big loop разросся до слишком больших величин, то и оборачиваться (что ограничивает время реакции) он станет слишком медленно, т.к., в этом цикле только и делатся, преимущественно, что проверяются условия (не выполняющиеся раз от разу). Если нужна более высокая реактивность (или низкое энергопотребление), то нужен какой-то планировщик с списками ожидания и связанными с ними условиями. Принципиально не вытеснение, а именно наличие развитой системы взаимодействия параллельных потоков. ОС может быть вовсе кооперативной. А с этим у простых RTOS туго. Часто отсутствуют многие важные функции присутствующие в "больших" ОС. Например, возможность ожидания более чем одного события одновременно (аналог select() или WaitForMultipleEvents, или хотя бы прерывание ожидания сигналом). Сейчас скажут очередь. Но проблема очереди, в том, что поступившие события обрабатываются строго в порядке очереди. Нет приоритетов. Хорошо, если ОС унаследована от ITRON, где есть Event Flags. Или Thread Local Storage отсутствует. С моей точки зрения, вообще "планировщик" не должен быть частью ОС. По крайней мере сложный планировщик. ОС должна дать базовые сервисы. Достаточно unix-подобной системы на уровне начала 80-х. Гораздо важней управление памятью и загрузкой программ, драйвера ввода-вывода, обработка ошибок. Сложный планировщик скорей должен быть некой библиотекой скорей, наподобии libevent. Когда события попадают на вход планировщика, он выбирает наиболее приоритетное, и вызывает функцию его обработки. Места вытеснению здесь нет, это событийно-управляемая система. Вытеснение есть только на уровне ОС между отдельными процессами, по возможности наиболее изолированными.
[ZX]