J'ai écrit beaucoup de code bare metal pour les processeurs PIC et x86. Quelqu'un peut-il me dire comment et quand devrais-je avoir besoin d'un système d'exploitation? À l'inverse, quelle application ou situation peut être traitée avec ou sans système d'exploitation?
embedded
operating-system
quantum231
la source
la source
Réponses:
Ma règle générale est que vous devriez envisager un système d'exploitation si le produit nécessite un ou plusieurs des éléments suivants: une pile TCP / IP (ou une autre pile réseau complexe), une interface graphique complexe (peut-être une avec des objets GUI tels que des fenêtres et des événements ) ou un système de fichiers.
Si vous avez fait du codage à nu, vous connaissez probablement l' architecture du programme de super-boucle . Si les exigences du micrologiciel du produit sont suffisamment simples pour être implémentées avec une super-boucle maintenable (et, espérons-le, quelque peu extensible), vous n'avez probablement pas besoin d'un système d'exploitation.
À mesure que les exigences logicielles augmentent, la super-boucle devient plus complexe. Lorsque les exigences logicielles sont si nombreuses que la super-boucle devient trop complexe ou ne peut pas répondre aux exigences en temps réel du système, il est temps d'envisager une autre architecture.
Une architecture RTOS vous permet de diviser les exigences logicielles en tâches. Si cela est fait correctement, cela simplifie la mise en œuvre de chaque tâche. Et avec la hiérarchisation des tâches, un RTOS peut faciliter la satisfaction des exigences en temps réel. Un RTOS n'est cependant pas une panacée. Un RTOS augmente la complexité globale du système et vous ouvre à de nouveaux types de bogues (tels que les blocages). Comme alternative au RTOS, vous pouvez envisager une architecture de machine d'état basée sur les événements (telle que QP ).
Si votre produit possède un réseau, une interface graphique complexe et un système de fichiers, vous pourriez être au point où vous devriez envisager des systèmes d'exploitation complets tels que VxWorks, Windows ou Linux. Les systèmes d'exploitation complets comprendront des pilotes pour les détails de bas niveau et vous permettront de vous concentrer sur votre application.
la source
Cela dépend vraiment de votre définition d'un «système embarqué». Certains pourraient prétendre que s'il ne s'agit pas d'une programmation bare-metal, elle n'est pas intégrée (ce qui empêche votre question), mais je ne suis pas d'accord avec cela - je dirais que tout système conçu pour exécuter une seule fonction, c'est-à-dire que pour exécuter une seule «application» spécifique, on pourrait appeler un système intégré.
Cela dit, il devrait être assez facile d'imaginer des situations qui bénéficieraient des services d'un système d'exploitation complet. Par exemple, là où je travaille, il est assez courant de trouver des personnes construisant un équipement de test au-dessus d'une suite de conception d'instruments qui fonctionne au-dessus des fenêtres. Ces systèmes sont configurés pour démarrer dans la configuration de la station de test et verrouiller l'utilisation générale (pour éviter la corruption de la station) et sont donc sans doute des systèmes intégrés.
Cependant, le simple fait d'acheter des modules d'E / S standard, de les brancher sur un PC monté en rack et de créer une configuration dans une interface graphique peut ne pas être qualifié de conception de système intégré pour certains. Pour une situation un peu moins courante, envisagez un contrôleur de processus personnalisé avec un FPGA, pour lequel vous souhaitez effectuer un enregistrement de données sophistiqué. Vous pouvez intégrer un système de processeur soft-core (avec un BSP existant) et exécuter un linux en temps réel afin d'exécuter une pile réseau (pour votre journalisation et NTP, etc.) et faire tout le reste en logique.
la source
Ma règle de base (très vague) est que si vous avez besoin de plus d'un thread de contrôle (disons au moins un périphérique qui implique un protocole ou une machine d'état plus autre chose à faire), alors certains logiciels OSish vous faciliteront la vie
la source
switch
machines d'état basées sur ne dépasse cela, lesswitch
machines basées sont susceptibles d'être meilleures. De plus, sur les plates-formes 8x51 et TMS2000, j'ai implémenté un simple sélecteur de tâches coopératif basé sur la pile. Aucune logique du système d'exploitation pour décider du moment du basculement - chaque fois qu'un «thread» sentait qu'il pourrait prendre une pause, il basculerait sur l'autre. Si cet autre thread voyait que quelque chose qu'il attendait ne s'était pas encore produit, il pourrait revenir au premier en moins de temps qu'un système d'exploitation normal aurait dépensé à décider s'il devait changer.Une vieille question mais je vais quand même commenter.
Même si vous n'avez pas de piles réseau ou similaires, au moment où vous avez besoin d'un planificateur de tâches car vous avez suffisamment de processus dans votre application intégrée, vous pouvez envisager un RTOS. Écrire un simple programmateur multitâche coopératif basé sur une minuterie n'est pas si difficile, mais s'assurer qu'un processus bloqué ne bloque pas le reste de l'application et que cela peut prendre un certain temps pour arriver à ses fins. Vous devez implémenter un système prioritaire avec une sorte de provision pour bump les processus dans la file d'attente s'ils ne sont pas terminés.
RTOS vous offre également des fonctionnalités telles que la protection de la mémoire et autres, ce qui facilite le suivi de certaines gaffes courantes dans le code C, mais les microcontrôleurs simples peuvent tout simplement ne pas être en mesure de gérer la protection de la mémoire complexe. Par exemple, le MSP430 vous permet de séparer le code et les données à un niveau élevé, mais il n'y a pas de contrôle d'accès à la mémoire à grain fin.
la source
Un système d'exploitation comble en fait l'écart entre le matériel et les logiciels d'application (via le pilote de périphérique). En d'autres termes, il fournit une plate-forme de haut niveau au programmeur, ce qui réduit finalement la complexité du code. Et en outre, le système d'exploitation fournit une plate-forme solide et flexible pour l'exécution de l'application.
la source