Il y a eu une discussion sur cette question ici: lien
Extraits: l'article du Linux Journal auquel il est fait référence est ici: lien
Je pense que les ports 8052 et M68HC12 sont des choix particulièrement mauvais pour caractériser NuttX car ils ont tous deux des problèmes, et NuttX est maintenant à la version 5.16 avec 63 versions.
J'ai rempli l'interview dans l'onglet "Editeur" ici: lien ; il y a une revue là aussi: lien .
Une documentation NuttX complète est disponible ici: lien .
Les problèmes avec les pièces hcs12 et 8051 sont les suivants:
8051 / 80c52: Cette architecture est vraiment hostile à RTOS. Il possède une minuscule pile matérielle (128 octets sur le 8051, 256 sur le 80c52) à un emplacement mémoire dédié (adresse 0). Pour changer de tâche, vous devez copier la pile entière de la tâche à bloquer de son adresse dédiée vers un emplacement de sauvegarde, puis copier la pile entière de la tâche à démarrer de son emplacement de sauvegarde vers l'emplacement de pile dédié. OUI!
Et depuis, la pile est si petite. Il est très, très facile de surcharger la pile - en particulier pendant la gestion des interruptions.
Le port NuttX 8051 est complet et fonctionnel (au moins la dernière fois que je l'ai utilisé). Mais pour le rendre utile, vous devrez probablement copier la pile entière à chaque interruption afin de l'empêcher de déborder. Fondamentalement, j'ai perdu tout intérêt à ce moment-là, mais si quelqu'un était vraiment motivé à utiliser le 8051, c'est faisable (si ce n'est peut-être pas bien conseillé).
Ce qui était bien avec le port 8051, c'est que c'était un excellent exercice pour placer NuttX dans un très petit emplacement mémoire. Le port 8051 s'exécute dans 32 Ko de RAM - qui comprend les bibliothèques RTOS, libc, du compilateur, un programme de test substantiel, .data / .bss et et heap. Et avec un peu de mémoire à revendre!
hcs12: C'est un projet sur lequel je travaille pendant mon temps libre quand je ne fais rien d'autre. Il n'est tout simplement pas terminé et n'est pas encore prêt pour les heures de grande écoute.
En ce qui concerne la comparaison avec d'autres RTOS, je n'ai vraiment pas de bonnes réponses autoritaires car je n'utilise pas d'autres RTOS. Mais voici ma compréhension naïve:
FreeRTOS a des tonnes de téléchargements et une très petite empreinte d'environ 4 Ko. C'est le RTOS de choix pour les très petits microcontrôleurs. Un port FreeRTOS est fourni par les fournisseurs de silicium avec à peu près tous les MCU. C'est donc le choix RTOS par défaut.
Il existe des dizaines de concurrents avec FreeRTOS. ChiBIOS vient immédiatement à l'esprit. Ce sont tous de minuscules planificateurs de types différents.
Afin de faire une vraie comparaison, une chose que nous devons faire d'abord est de définir ce que nous entendons par un RTOS: Est-ce juste un ordonnanceur? Ou s'agit-il d'un ensemble intégré de fonctionnalités standard du système d'exploitation - comme le planificateur, le système de fichiers, les pilotes de périphérique, la gestion de la mémoire, la mise en réseau, etc. La plupart des systèmes d'exploitation, Linux par exemple, sont des environnements de développement complet, pas seulement des planificateurs. NuttX est un système d'exploitation complet, c'est le même sens que Linux. En voici quelques autres:
RTEMS : J'ai travaillé avec celui-ci. Il existe depuis toujours et devrait être très stable. C'est gros; pensez> 100kb. Je pense qu'il vise un peu au-dessus du marché des MCU.
uCOS : Jamais utilisé, mais c'est le RTOS sous plusieurs chargeurs de démarrage populaires, n'est-ce pas? Mon impression est que c'est similaire à RTEMS, mais je ne sais pas vraiment de quoi je parle.
Comment pourrais-je comparer NuttX à ceux-ci: Eh bien, il est beaucoup plus petit. L'empreinte de départ est d'environ 20 Ko. Une configuration complète comprend 10 à 20 Ko de plus. Une autre différence par rapport à ces RTOS est que NuttX est très orienté sur les normes. Vous pouvez considérer NuttX comme un tout petit travail Linux. La plupart du code qui se compile et s'exécute sur Linux s'exécutera également sur NuttX (certains codes système comme le code réseau ou les démons peuvent nécessiter quelques ajustements).
Je pense que RTEMS est plus axé sur les microprocesseurs; NuttX se concentre davantage sur les micro-contrôleurs.