Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Embarqué

Pourquoi un développeur bare metal est passé aux systèmes d'exploitation

Retour à l'ère du Bare-Metal

La première fois que j'ai entendu parler du logiciel embarqué, c'était vers 2008, j'étais en deuxième année et j'ai commencé à apprendre la programmation sur une puce 51. Depuis que je me suis spécialisé en informatique, la plupart de mes programmes ont été exécutés sur PC. C'était une expérience complètement différente de voir des programmes s'exécuter sur une carte en métal nu, et je me souviens encore de l'excitation lorsque mon premier programme de lampe à vélo s'est déroulé avec succès. Cependant, plus j'écrivais de programmes bare metal, plus je rencontrais de problèmes. Je les résume comme suit : 

Concurrence

Pour les programmes bare-metal, il y a inévitablement une énorme boucle « while (1) », qui contient presque toute la logique de transaction de l'ensemble du projet. Chaque transaction invoque une ou plusieurs fonctions de retard et elles sont exécutées en série lorsque la CPU exécute une fonction de retard, le reste des transactions doit attendre. De cette façon, une grande partie du temps CPU est gaspillée sur des boucles vides, ce qui entraîne une assez faible simultanéité.

Modularité

Du point de vue du projet logiciel, le principe de cohésion élevée et de couplage faible est toujours souligné au cours du processus de développement. Cependant, les modules d'un logiciel bare-metal dépendent généralement fortement les uns des autres, il n'est pas pratique de concevoir des logiciels avec un faible couplage, ce qui rend difficile le développement de grands projets sur des cartes bare-metal. Par exemple :

Écosystème

De nombreux composants logiciels avancés doivent dépendre de la mise en œuvre du système d'exploitation de niveau inférieur. Par exemple :

En temps réel

La capacité en temps réel est nécessaire pour certains domaines d'application. Dans cette situation, certaines étapes critiques du logiciel doivent être déclenchées à un moment précis. Pour le contrôle de l'industrie, les dispositifs mécaniques doivent effectuer des actions dans un ordre et un calendrier prédéterminés. Si la capacité en temps réel ne peut pas être assurée, cela entraînera des dysfonctionnements pouvant mettre en danger la vie des travailleurs. Sur les plates-formes bare-metal, lorsque toutes les fonctions sont bloquées dans une seule grande boucle « while (1) », il est impossible de maintenir les capacités en temps réel.

Réutilisabilité

La réutilisabilité dépend directement de la modularité. Je crois que personne n'aimerait refaire le même travail encore et encore, surtout lors de l'écriture de code. Mais sur différentes plates-formes matérielles avec différentes puces, la même fonction doit être adaptée à différents matériels, dont les implémentations dépendent fortement du matériel de bas niveau. Il est inévitable de reconstruire des roues.

L'avantage des systèmes d'exploitation

C'était vers 2010 lorsque j'ai utilisé le système d'exploitation pour la première fois. La série de MCU STM32 commençait à être populaire. Avec des fonctionnalités puissantes, de nombreuses personnes ont exécuté des systèmes d'exploitation dessus. J'utilisais alors le système d'exploitation RT-Thread pour lequel il existe de nombreux composants disponibles et prêts à l'emploi. Par rapport à d'autres systèmes d'exploitation, je me sens plus à l'aise et je développe dessus depuis 10 ans.

D'après ce que j'ai compris, j'aimerais discuter des avantages des systèmes d'exploitation :

Modularité

Avec le système d'exploitation, l'ensemble du logiciel pourrait être divisé en plusieurs tâches (appelées threads), chaque thread a son propre espace d'exécution indépendant. Ils sont indépendants les uns des autres, ce qui améliore la modularité.

Concurrence

Lorsqu'un thread invoque la fonction de délai, il cède automatiquement le CPU aux autres threads qui en ont besoin, ce qui améliore l'utilisation de l'ensemble du CPU et, finalement, la simultanéité.

En temps réel

Un RTOS est conçu avec des capacités en temps réel. Chaque thread se voit attribuer une priorité spécifiée. Les threads les plus importants sont définis sur une priorité plus élevée, les threads moins importants sont définis sur les plus faibles. De cette façon, les performances en temps réel de l'ensemble du logiciel sont garanties.

Efficacité du développement

Le système d'exploitation fournit une couche unifiée d'interfaces abstraites, ce qui facilite l'accumulation de composants réutilisables et améliore l'efficacité du développement.

Le système d'exploitation est le produit de la sagesse d'un groupe de geeks du logiciel. De nombreuses fonctions logicielles courantes, telles que le sémaphore, la notification d'événement, la boîte aux lettres, la mémoire tampon en anneau, la liste de chaînes unidirectionnelle / liste bidirectionnelle, etc., sont encapsulées et abstraites pour rendre ces fonctions prêtes à l'emploi.

Les systèmes d'exploitation tels que Linux et RT-Thread implémentent un ensemble standard d'interfaces matérielles pour le matériel fragmenté, connu sous le nom de framework de pilote de périphérique. Par conséquent, les ingénieurs logiciels n'ont besoin de se concentrer que sur le développement et n'ont plus besoin de se préoccuper du matériel sous-jacent ou de reconstruire des roues.

Écosystème logiciel

La richesse de l'écosystème amène le processus de changements quantitatifs à des changements qualitatifs.

L'amélioration de la modularité et de la réutilisabilité avec les systèmes d'exploitation nous permet d'encapsuler des composants réutilisables basés sur le système d'exploitation et intégrés, qui peuvent non seulement être utilisés dans nos projets, mais peuvent également être partagés avec davantage de développeurs embarqués dans le besoin, maximisant ainsi la valeur du logiciel.

Je suis un geek open source et j'ai open source des logiciels embarqués sur GitHub. Avant de créer des logiciels open source, je parlais rarement de mes projets avec les autres car je considérais que, du fait que les gens utilisaient des puces ou des plates-formes matérielles différentes, mon code pouvait difficilement s'exécuter sur leur matériel. Avec les systèmes d'exploitation, la réutilisabilité des logiciels est grandement améliorée, de nombreux experts peuvent communiquer entre eux sur le même projet. Ils viennent même de pays différents. Cela encourage de plus en plus de personnes à partager et à parler de leurs projets.


Embarqué

  1. Systèmes de numération
  2. Systèmes de signalisation actuels
  3. Traçage des contacts dans l'industrie :pourquoi nous avons besoin de systèmes de positionnement local ultra-précis basés sur le Wi-Fi
  4. Pourquoi supportons-nous toujours les pannes de courant ?
  5. Pourquoi la cybersécurité est essentielle à la tranquillité d'esprit de la sécurité physique
  6. 3 raisons pour lesquelles un système de convoyeur pneumatique est supérieur
  7. Pourquoi l'informatique Les systèmes sont la clé de l'évolution de la chaîne d'approvisionnement mondiale
  8. Pourquoi les chaînes d'approvisionnement pharmaceutiques doivent passer au numérique :six questions à prendre en compte
  9. Procédures d'exploitation sûres pour les systèmes à air comprimé