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