Я оцениваю операционные системы для использования в проекте Internet of Things и не знаю, как лучше поступить.
Я использую микроконтроллер TM4C123GH6PM с 32 Кб оперативной памяти и приемопередатчиком CC2520 802.15.4, было бы замечательно, если бы система уже предоставила драйверы для них.
Система запустит одну (интерактивную) задачу, которая отображает экран точечной матрицы и реагирует на ввод пользователя. Он будет хранить конфигурацию и данные приложения на spi flash. Будет сеть из нескольких модулей (на основе стандарта 802.15.4) для синхронизации данных между модулями, извлечения данных датчиков из модулей и передачи их на шлюз (вспоминается rpl), а также для распространения обновлений прошивки OtA в виде сплетен. нравится мода. Все это при запуске довольно жадного до памяти приложения.
До сих пор я изучал эти системы:
Бунт :
профи
- хорошая аппаратная абстракция
- маленький след
- очень активное и полезное сообщество
- полный стек 802.15.4 / 6LoWPAN
минусы
- нестабильный, все еще претерпевает фундаментальные изменения
- все еще содержит условия гонки / сбои
- нет поддержки файловой системы
- несколько сетевых протоколов
Контики :
профи
- зрелая система, используемая в коммерческих продуктах
- полный стек 802.15.4 / 6LoWPAN со многими полезными протоколами
- поддержка файловой системы
- поддержка cc2520
минусы
- развитие стало устаревшим
- «взрослая» кодовая база, много гнилой
- плохое качество tiva c port
- небольшая поддержка современных платформ
- Непрерывное планирование может вызвать проблемы с приложением
FreeRTOS :
профи
- немного дополнительной сложности
- простой в использовании, надежный планировщик
- зрелый проект, используемый во многих продуктах
- много портов
минусы
- нет файловой системы
- без аппаратной абстракции для драйверов / без аппаратных драйверов
- нет сетевого стека
- несколько высокое использование динамической памяти
NuttX :
профи
- очень многофункциональный, почти как Linux, но все еще маленький
- поддержка файловой системы
- хорошая аппаратная абстракция
- Порт Tiva C, много других портов
минусы
- несколько сложный
- нет поддержки 802.15.4 / 6LoWPAN, просто «классическая» сетка
Мой вывод заключается в том, чтобы взять хорошие части Contiki (netstack, файловая система) и перенести их на FreeRTOS. Но мне не совсем удобно с такой вилкой. Я, вероятно, добавляю ошибки и не смог бы создавать резервные копии вышестоящих исправлений, также я все еще должен изобрести собственную аппаратную абстракцию, чтобы иметь возможность переключать MCU в будущем. Таким образом, я бы выбрал свою собственную ОС для чего-то, что кажется проблемой, которая должна была бы возникнуть и для многих других людей - разве кто-то не делал этого раньше? (Я имею в виду, что я что-то нашел, но идея запустить весь contiki-os как задачу FreeRTOS делает меня неудобным)
Я что-то упускаю? Может быть, боль стоила того, и я должен попытаться привести Contiki в рабочее состояние на моем оборудовании? Или есть другая система, которую я пропустил, чтобы решить мои проблемы?
Также я не уверен, нужен ли мне вообще 6lowPan, но когда это означает возможность использовать существующие протоколы / быть совместимым с другими системами (например, Linux), я был бы готов взять на себя дополнительные издержки.
running the entire contiki-os as a FreeRTOS task makes me uncomfortable
Это просто .. вау! Я бы никогда не подумал об этом ..