Причина (ы) / выгода (ы) использования операционной системы реального времени вместо цикла while на MCU - PullRequest
0 голосов
/ 22 мая 2018

Я работаю на платформе колесного робота.Моя команда реализует некоторые алгоритмы на MCU, чтобы

  1. продолжал получать показания датчиков (массив сонаров, ИК-массив, датчики двигателя, IMU)
  2. принимать пользовательскую команду (через последовательный порт, подключенный кпланшет)
  3. управление исполнительными механизмами (двигателями) для выполнения пользовательских команд.
  4. продолжайте посылать показания датчиков на планшет для более сложных алгоритмов.

В настоящее время мы реализуем всев глобальном цикле while, хотя я знаю, что большинство других прецедентов делают то же самое с операционной системой реального времени.

Скажите, пожалуйста, о преимуществах и причинах использования ОС в реальном временивместо простого цикла while.

Спасибо.

Ответы [ 5 ]

0 голосов
/ 10 июня 2018

ОСРВ будет обеспечивать приоритетное вытеснение.Если ваш код отключен при разборе последовательной команды и ее выполнении, он не может реагировать ни на что другое, пока не вернется в ваш звероподобный цикл.ОСРВ предоставит абстракции, необходимые для мгновенного переключения контекста на основе события прерывания.В противном случае задержка отклика на событие в худшем случае будет самой длинной возможной экскурсией из основного цикла, и иногда вам действительно нужны длительные процессы.Например, обновить ЖК-панель или ответить на перечисление USB-устройств.Preemption позволяет вам уйти и делать все это безопасно, зная, что 16-разрядный таймер, работающий на тактовой частоте процессора, не перевернется несколько раз, прежде чем это будет сделано.В то время как для простых управляющих заданий достаточно цикла, проблема начинается с него, когда вы попадаете во что-то вроде перечисления USB-устройств, это больше не практично и требует полного переписывания.Начав с упреждающей структуры, которую предоставляет RTOS, вы получаете гораздо большую гибкость в будущем.Но определенно есть немного больше предварительной работы, и определенно кривая обучения.

0 голосов
/ 22 мая 2018

ОСРВ - это не цикл while, а цикл + инструменты, которые организуют ваши задачи.Как они организуют ваши задачи?Назначьте им приоритеты, решите, сколько времени у каждого на работу и / или в какое время он должен начинаться / заканчиваться.RTOS также разбивает на слои ваше программное обеспечение, т. Е. Связанные с оборудованием вещи, прикладные задачи и т. Д. Кроме того, вы получаете структуры данных, контейнеры, готовые к использованию интерфейсы для решения общих задач, поэтому вам не нужно реализовывать свои собственные, то есть выделять некоторую память для себя.заблокировать доступ к некоторым ресурсам и т. д.

0 голосов
/ 22 мая 2018

Если ваш цикл while работает (т. Е. Он отвечает требованиям вашей системы в реальном времени), и он надежен, удобен в обслуживании и несколько расширяем, тогда использование операционной системы реального времени, вероятно, не принесет пользы.

Но если ваш цикл while не может соответствовать требованиям реального времени или слишком сложен или чрезмерно расширен (т.е. любое изменение требует дальнейшей настройки и настройки для восстановления производительности в реальном времени), тогда вам следует рассмотреть другую архитектуру.

Архитектура RTOS - это еще один популярный следующий шаг после супер цикла.ОСРВ - это инструмент управления сложностью программного обеспечения.Это позволяет разделить сложный набор требований к программному обеспечению на несколько потоков выполнения.При правильном выполнении каждый отдельный поток имеет относительно простой набор требований и становится более простым в реализации.А приоритезация потоков может упростить выполнение требований приложения в реальном времени.Это в основном преимущества использования ОСРВ.

Однако ОСРВ не является панацеей.RTOS увеличивает общую сложность системы и открывает для вас новые типы ошибок (таких как взаимоблокировки).Требуются знания и опыт для эффективного проектирования и реализации программы на базе ОСРВ.Рассмотрим альтернативы, такие как Многозадачный основной цикл или архитектура конечного автомата на основе событий (например, QP ).Эти альтернативы могут быть более простыми, понятными или более совместимыми с вашим способом проектирования программного обеспечения.

0 голосов
/ 22 мая 2018

Есть много огромных преимуществ, которые имеет многозадачность RTOS:

Очень хорошая производительность ввода-вывода: RTOS может установить ожидающий поток готовым, как только запрошенное действие ввода-вывода завершено,поэтому задержка при обработке операций чтения / записи / чего угодно может быть низкой.Циклический, опрашиваемый дизайн не может отвечать на завершение ввода / вывода, пока не дойдет до проверки состояния ввода / вывода (либо непосредственно, либо моего опроса некоторого изменчивого флага, установленного обработчиком прерываний).

Независимые функции:Простота внедрения изолированных подсистем для последовательной связи, исполнительных механизмов и т. Д. Вполне может быть для вас одной, как это предлагается в других ответах.Очень обнадеживающе знать, что любая дополнительная задержка в, скажем, некотором последовательном обмене, не будет отрицательно влиять на синхронизацию в другом месте.Вам нужно подождать секунду?Нет проблем: сон (1000), и все готово - не влияет на другие подсистемы :) Это разница между «нет, я не могу добавить сетевой сервер, это изменило бы все время и мне пришлось бы все заново протестировать» и«Конечно, есть много свободных процессоров, у меня уже есть код из другой работы, и мне просто нужен другой поток для его запуска».

Есть и другие преимущества, которые помогают компенсировать дополнительное раздражение от необходимости программировать упреждающиймногозадачность с ее критическими разделами, семафорами и condvars.Очевидно, что если ваше оборудование имеет несколько ядер, ОСРВ помогает - она ​​предназначена для совместного использования доступных циклов выполнения ЦП, как и любой другой ресурс, а добавление ядер означает больше циклов.

В конце концов, этоПроизводительность ввода-вывода и функциональная изоляция - вот большой выигрыш.

Некоторые из советов в других ответах могут помочь вместо RTOS или вместе с RTOS.При управлении несколькими устройствами ввода / вывода, например.датчики и исполнительные механизмы, конечный автомат, управляемый событиями, действительно очень хорошая идея.Я часто реализую это, помещая все события в один поток (очередь производитель-потребитель), который имеет единственный доступ к данным состояния и реализует конечный автомат, поэтому сериализует действия.

Стоят ли преимуществасвеча между вами и вашими требованиями:)

0 голосов
/ 22 мая 2018

ОС «Реальное время» обеспечивает периодичность выполнения вашей задачи.Если вы хотите считывать данные датчиков точно через каждые 100 мсек, простой цикл while не гарантирует этого.С другой стороны, RTOS может легко позаботиться об этом.RTOS дает вам предсказуемость.Операция будет выполнена в данное время, и она не будет пропущена.

RTOS дает вам семафоры / мьютексы, чтобы ваша память не была повреждена или несколько источников не получили доступ к буферам.

ОСРВ предоставляет очереди сообщений, которые могут быть полезны для связи между задачами.

Да, вы можете реализовать все эти функции в цикле "В то время как", но это преимущество!Вы получаете все готово и проверено.

...