J'évalue des systèmes d'exploitation à utiliser dans un projet Internet des objets et je ne sais pas quelle est la meilleure façon de procéder.
J'utilise un MCU TM4C123GH6PM avec 32k RAM et un émetteur-récepteur CC2520 802.15.4, ce serait génial si le système fournissait déjà des pilotes pour ceux-ci.
Le système exécutera une tâche (interactive) qui dessine un écran matriciel et réagit aux entrées de l'utilisateur. Il stockera les données de configuration et d'application sur flash spi. Il y aura un maillage de plusieurs modules (basé sur 802.15.4) pour synchroniser les données entre les modules, extraire les données des capteurs des modules et les transmettre à une passerelle (rpl me vient à l'esprit) et également distribuer les mises à jour du firmware OtA dans un potins. comme la mode. Tout en exécutant une application plutôt gourmande en mémoire.
Jusqu'à présent, j'ai examiné ces systèmes:
RIOT :
avantages
- bonne abstraction matérielle
- petite empreinte
- communauté très active et serviable
- pile 802.15.4 / 6LoWPAN complète
les inconvénients
- instable, subissant toujours des changements fondamentaux
- contient toujours des conditions de course / accidents
- pas de prise en charge du système de fichiers
- quelques protocoles réseau
Contiki :
avantages
- système mature, utilisé dans les produits commerciaux
- pile 802.15.4 / 6LoWPAN complète avec de nombreux protocoles utiles
- prise en charge du système de fichiers
- Prise en charge du CC2520
les inconvénients
- le développement est devenu obsolète
- base de code «développée», beaucoup de pourriture de bits
- port tiva c de mauvaise qualité
- peu de support pour les plateformes modernes
- une planification non préemptive peut entraîner des problèmes avec l'application
FreeRTOS :
avantages
- peu de complexité supplémentaire
- planificateur facile à utiliser et fiable
- projet mature, utilisé dans de nombreux produits
- beaucoup de ports
les inconvénients
- pas de système de fichiers
- aucune abstraction matérielle pour les pilotes / aucun pilote matériel
- pas de pile réseau
- utilisation assez élevée de la mémoire dynamique
NuttX :
avantages
- très riche en fonctionnalités, ressemble presque à Linux, mais encore petit
- prise en charge du système de fichiers
- bonne abstraction matérielle
- Port Tiva C, de nombreux autres ports
les inconvénients
- un peu complexe
- pas de support pour 802.15.4 / 6LoWPAN, juste netstack 'classique'
Ma conclusion serait de prendre les bonnes parties de Contiki (netstack, système de fichiers) et de les porter sur FreeRTOS. Mais je ne suis pas entièrement à l'aise avec une fourche comme ça. J'ajouterais probablement des erreurs et je ne serais pas en mesure de rétroporter les correctifs en amont.Je dois également inventer ma propre abstraction matérielle pour pouvoir changer de microcontrôleur à l'avenir. Donc, je me retrouverais avec mon propre système d'exploitation pour quelque chose qui semble être un problème que beaucoup d'autres personnes devraient également avoir - personne n'a-t-il déjà fait cela? (Je veux dire que j'ai trouvé quelque chose, mais l'idée d' exécuter l'ensemble des contiki-os en tant que tâche FreeRTOS me met mal à l'aise)
Y a-t-il quelque chose qui me manque? Peut-être que la douleur en valait la peine et que je devrais plutôt essayer de faire passer Contiki à un état fonctionnel sur mon matériel? Ou y a-t-il un autre système que j'ai manqué qui résoudrait mes problèmes?
De plus, je ne suis pas sûr d'avoir besoin de 6lowPan, mais quand cela signifie pouvoir s'appuyer sur des protocoles existants / être compatible avec d'autres systèmes (par exemple Linux), je serais prêt à prendre le surcoût supplémentaire.
running the entire contiki-os as a FreeRTOS task makes me uncomfortable
C'est juste ... wow! Je n'aurais jamais pensé à ça ..