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.
la source
running the entire contiki-os as a FreeRTOS task makes me uncomfortable
C'est juste ... wow! Je n'aurais jamais pensé à ça ..Réponses:
Si vous n'êtes pas marié avec ce processeur spécifique (ou si vous êtes assez averti pour copier / coller le code), j'utilise fréquemment des MCU Freescale avec CodeWarrior et Processor Expert. PEX comprend un certain nombre de composants, y compris FreeRTOS, MQX, FAT, etc. Des composants supplémentaires peuvent être téléchargés et, en fin de compte, ce n'est qu'un générateur de code basé sur une interface graphique, donc, comme suggéré, vous pouvez copier / coller le code C résultant dans votre projet.
Éditer:
-MQX comprend une pile IP
-FNET
Grand package précompilé de nombreux composants utiles: http://sourceforge.net/projects/mcuoneclipse/files/PEx%20Components/
la source
Il vous manque mbed OS :
avantages
les inconvénients
la source
Si c'est pour un usage commercial, je vous suggère fortement de regarder les options non libres, le support est tout, si c'est un projet personnel, je peux comprendre.
Oui, il y a un coût, mais avec certains développeurs RTOS, ce n'est pas si gros du tout, ils font vraiment de l'argent sur le développement personnalisé et les licences peuvent être gratuites jusqu'à ce que vous fassiez une vente. Vous trouverez ci-dessous un lien vers un article qui compare certains concurrents rémunérés:
Comparaison des systèmes d'exploitation en temps réel des microcontrôleurs
Je suis chef de projet et nous sommes passés de l'utilisation des pilotes proposés par ST à Unison. IIRC, la licence était étonnamment petite, et nous avons eu un "essai complet" jusqu'à ce que nous soyons convaincus, mais un soutien direct constant a été ce qui nous a poussés à bout, et ce qui a vraiment accéléré notre développement. Je pense qu'ils ont déjà un support pour diverses puces sans fil TI, pas sûr de CC2520.
Le gars qui fait la plupart des ventes est vraiment personnel et ne répertorie pas les prix pour deux raisons, me dit-on 1) parce qu'ils veulent entendre ce dont vous avez besoin, ils veulent vraiment revenir des clients et des références de bouche à oreille, et 2) la concurrence.
Pour info, le site Web d'Unison est vraiment mauvais.
la source