Прежде всего, мой вопрос будет следующим:Почему я должен использовать RTOS для моего встроенного проекта?
В компании, над которой я работаю на платформе, на которой мы работаем, в настоящее время работает семейство Microchip PIC32, использующее среду MPLAB IDE в качестве среды разработки. Ранее мы также писали прошивку для семейств Microchip dsPIC и TI MSP для этого же приложения. Прошивка довольно проста в том, что код разделен на три основных модуля: управление устройством, выборка данных и связь с пользователем (обычно это ПК пользователя). Управление устройством осуществляется с помощью некоторой комбинации шин шины GPIO и, по меньшей мере, одной части, требующей управления SPI или I2C. Сэмплирование данных прерывается с помощью модуля таймера для поддержки частоты выборки и других шинных линий SPI/I2C и GPIO для управления оборудованием выборки (например, АЦП). В настоящее время связь с пользователем осуществляется через USB с помощью Microchip App Framework.
Так что теперь вопрос: учитывая то, что я описал выше, в какой момент я бы рассмотреть вопрос о применении ОСРВ для моего проекта? В настоящее время я имею в виду этих возможных триггерных точек в качестве причины для использования ОСРВ:
- сложность кода? Архитектура/организация базы кода все еще достаточно мала, чтобы я мог хранить все детали в своей голове.
- Многозадачность/Threading? Временное сокращение выполнения модуля с помощью прерываний достаточно для многозадачности.
- Тестирование? В настоящее время мы не проводим много формального тестирования или проверки мимо теста HW smoke (что-то, на что я надеюсь исправить в ближайшем будущем).
- Связь? В настоящее время мы используем пользовательский формат пакета и протокол, который в значительной степени выполняет команды START, STOP, SEND DATA с данными, являющимися двоичным блобом.
- Объем проекта? В ближайшем будущем есть вероятность, что мы получим проект для интеграции нашего устройства в более крупную систему с целью переноса этой системы на массовое производство. В настоящее время все наши проекты представляют собой экспериментальные прототипы с быстрым поворотом около месяца, производя один или два блока за раз.
Какие еще вопросы, по вашему мнению, я должен учитывать? В своем опыте, что убеждало (или вынуждало) вас рассматривать использование RTOS против просто запуска вашего кода в базовой среде выполнения? Также высоко ценятся указатели на дополнительные ресурсы о разработке/программировании для RTOS.
О, моя ошибка действительно. Кроме того, чтобы попытаться понять, почему я хотел бы обратиться к RTOS, я также ищу ссылки на дополнительные ресурсы, которые я могу исследовать дальше. Спасибо за подробное объяснение. – spade78
Определить то, что мы делали до сих пор для наших проектов, было довольно много. Наличие структуры, обеспечивающей основные принципы того, как она работает, и как мы можем строить поверх нее, будет плюсом в моей книге, поскольку прямо сейчас мы строим с нуля, и я нахожу, что каждый раз повторяю свой код каждые несколько итераций, потому что он слишком тесно связан с оборудования последнего дизайна или метода, который был выбран для реализации кода приложения. – spade78
Даже самые маленькие RTOS (uC/OS-II и FreeRTOS прыгают на ум) помогут вам избежать повторного использования колес, таких как семафоры, очереди, флаги событий и многое другое, которые сложны, чтобы получить именно то, что вам нужно, и очень сложно отлаживать проблемы, если они не реализованы абсолютно верно. – RBerteig