- 1. Développement des exigences du produit
- 2. Conception de système et développement d'algorithmes
- 3. Codage du micrologiciel intégré
- Test du micrologiciel intégré
Le développement de logiciels est généralement difficile, mais pour un système embarqué, il s'agit d'un tout nouveau niveau de difficulté. Les développeurs de micrologiciels doivent avoir une bonne connaissance du développement matériel et comprendre le fonctionnement interne d'un processeur embarqué. Pour l'article d'aujourd'hui, je partagerai des outils et des astuces qui pourraient être utilisés pour atteindre un haut niveau d'efficacité et éliminer certaines des choses qui rendent le développement de micrologiciels fastidieux.
Le développement de logiciels embarqués passe par un processus de développement similaire avec le développement de logiciels «ordinaires». Quel que soit le modèle de développement / gestion adopté, le développement de logiciels embarqués implique généralement les étapes suivantes:
- Développement de l'exigence produit
- Conception de système et développement d'algorithmes
- Codage
- Essai
Nous examinerons certaines des difficultés qui accompagnent ces étapes et certains des outils qui pourraient augmenter l'efficacité et la productivité.
1. Développement des exigences du produit
Les spécifications des produits sont souvent conçues en pensant aux concepteurs de cartes. Il contient généralement peu d'informations qui pourraient faciliter le développement du micrologiciel.Le développeur de logiciels embarqués se retrouve donc avec un document défectueux de 250 pages (en moyenne) qui ne peut pas être utilisé pour des références et, s'il n'est pas soigneusement examiné, pourrait facilement conduire à des oublis dans la conception qui, à leur tour, conduisent à prolonger la durée du projet, voire l'échec global du projet. Les documents contiennent rarement des informations sur les registres ou leurs champs de bitsentre autres choses et cela coûte aux développeurs de micrologiciels plusieurs heures de travail pendant qu'ils recherchent dans le document pour identifier des choses comme quel registre appartient à quel groupe et quel champ de bits appartient à quel registre. Vous trouverez ci-dessous quelques conseils qui pourraient être envisagés pour assurer le développement de documents de spécification de projet plus utiles.
Utilisation des descriptions de registre
Comme indiqué ci-dessus, les développeurs de micrologiciels doivent comprendre les subtilités de tous les registres, mémoires, etc. de tous les éléments de contrôle (CPU, MCU, etc.) dans un projet pour pouvoir contrôler efficacement toutes les parties du système. Pour mettre cela en place, les développeurs de micrologiciels peuvent s'assurer que le document de spécification contient une description appropriée des registres ainsi que des cartes mémoire. Tous les registres de l'élément de contrôle pourraient se voir attribuer un nom distinctif qui les rend faciles à identifier dans le document et ils pourraient tous être liés de manière à conduire à une liste dans le document indiquant le nom, l'emplacement, le bloc et l'adresse de chaque registre.
Descriptions des tâches
Un autre moyen de rendre les documents de spécification utiles aux développeurs de logiciels embarqués consiste à décrire ce que chaque bloc est censé faire et comment il doit le faire. À ce stade également, il devrait y avoir des plans pour la gestion des erreurs sous chaque bloc. Essentiellement, cela ressemble à ce que dit le développeur du firmware; «Quand j'arrive ici, je dois faire ceci, ceci et cela, en veillant à ce que ceci, ceci et cela ne se passe pas». Cela aide à guider le travail du développeur et aide à évaluer le projet avant même que la conception ne commence pour identifier les erreurs et les bogues potentiels, ce qui permet d'économiser du temps et de l'argent précieux.
Il existe d'autres facteurs, notamment la structure du document, l'utilisation de polices faciles à lire (avec lesquelles les développeurs peuvent travailler même lorsqu'ils sont fatigués), des graphiques et des images lorsque cela est possible qui pourraient tous augmenter l'efficacité de l'équipe du micrologiciel après cette étape.
2. Conception de système et développement d'algorithmes
Cette étape implique le développement des pseudocodes, des organigrammes, des machines d'état et de tout ce qui est impliqué dans la conception de ce que le firmware. Pour cette étape, un certain nombre d'outils peuvent être utilisés pour aider à organiser les pensées, explorer les logiciels hérités / précédemment écrits autour du projet et développer votre propre organigramme, machine d'état, etc. Certains de ces outils sont discutés ci-dessous.
PIM
A ce stade du développement de produits, les développeurs ont tendance à griffonner beaucoup car ils rassemblent des ressources sur le projet de liens Web vers des formules etc. L' une des meilleures façons de garder une trace de ces informations afin qu'elles soient utiles plus tard est par l'utilisation de PIM (gestion des informations sur les produits). Il existe un certain nombre de PIM, mais je vais en mentionner quelques-uns avec des fonctionnalités exceptionnelles.
1. Evernote
Evernote vous aide à prendre des notes disponibles sur n'importe quelle plate-forme afin que vous puissiez vérifier la note que vous avez faite sur votre PC pendant que vous rentrez chez vous. Les notes sont bien organisées et sont entièrement consultables afin que vous trouviez toujours ce dont vous avez besoin.
2. TrunkNote
Trunk note est une application de prise de notes de type Wiki. Il apporte toute la puissance organisationnelle des wikis à la prise de notes. Il s'agit d'une application basée sur un téléphone mobile mais qui peut être facilement synchronisée avec un PC via WIFI.
D'autres types de PIM comme Tiddlywiki, etc. Chacun d'entre eux est livré avec des fonctionnalités qui peuvent le rendre plus attrayant pour des individus spécifiques et peuvent prendre quelques échantillons avant que vous ne vous décidiez finalement sur un.
Comprendre le code hérité
Un autre groupe d'outils qui sont très utiles pendant la phase de conception sont les outils de compréhension des codes hérités. Dans les situations où le produit en cours de conception est une version améliorée d'un produit précédent, le développeur peut trouver utile de revoir le travail qui a déjà été fait pour obtenir des idées et peut-être des morceaux de code pour ce nouveau projet. La route peut être assez longue, surtout si vous ne faites pas partie de l'équipe qui a construit le logiciel précédent. Il existe un certain nombre de logiciels qui aident à créer des arbres, à créer de la documentation et des organigrammes à partir de code déjà écrit.
1. Doxygen
Doxygen est un outil assez puissant qui permet de créer de la documentation à partir des codes sources. Il a été principalement conçu pour fonctionner avec C ++ mais fonctionne également avec C, Python et certains autres langages. Il a la capacité d'extraire la structure de code de n'importe quel code, fournissant des graphiques de dépendances générés automatiquement et des diagrammes d'héritage pour aider à visualiser le code.
2. Graphviz
Selon leur site Web, graphviz aide à présenter des informations structurelles sous forme de diagrammes de graphiques et de réseaux abstraits. Il peut être utilisé avec Doxygen pour mieux comprendre les graphismes qu'il produit.
3. Srecord
Srecord est un outil puissant pour manipuler les images de micrologiciel et convertir entre différents formats de fichiers. Il peut être utilisé pour calculer et faire des CRC et des sommes de contrôle sur des blocs d'octets, corriger les fichiers d'erreur créés en raison de chaînes d'outils boguées et filtrer ou déplacer des sections de fichiers, entre autres choses. Plus d'informations sur son utilisation peuvent être trouvées sur sa page SourceForge.
Certains autres outils qui entrent dans cette catégorie sont CrystalRev et Hexplorer, entre autres.
Développement d'algorithmes
Toutes les recherches et la prise de notes s'agrègent au développement d'algorithmes qui se transforment en pseudocodes et organigrammes pour le projet. Plusieurs outils existent pour développer des organigrammes et bien que la plupart d'entre eux ne soient pas exclusifs au développement de micrologiciels, ils fournissent des fonctionnalités utiles et importantes qui permettent simplement de faire le travail et aident également à maintenir les graphiques tout au long du cycle de développement du produit. Voici quelques-uns des meilleurs outils disponibles pour les organigrammes.
1. QFSM
QFSM est un outil graphique pour la conception et la simulation de machines à états finis. Sa capacité à simuler les conceptions le rend bien meilleur que la plupart des autres logiciels de ce groupe. Il est particulièrement utile lorsque vous concevez des machines à états pour FPGA et matériel cible similaire.
2. Graphique lucide
Lucid Chart est sans doute le meilleur et le plus flexible des logiciels de diagramme de flux. Il est basé sur le Web et possède des fonctionnalités d'équipe qui vous permettent de travailler entre plusieurs appareils et de collaborer en temps réel avec vos coéquipiers.
3. Microsoft Visio
Visio est actuellement l'un des meilleurs outils graphiques. Il a un tableau d'objets de différents champs qui permet de décrire facilement n'importe quoi. Cependant, il ne propose pas de fonctionnalités améliorant la collaboration entre les équipes et ne peut être utilisé que sur une machine Windows sur laquelle il est installé.
4. Google Slides
L'un des éléments clés du développement de produits dans le monde d'aujourd'hui est l'utilisation d'outils qui permettent aux équipes de collaborer efficacement où qu'elles se trouvent et c'est une chose que Google slides apporte à bord. Il peut être utilisé pour développer tous types de graphiques, des organigrammes logiciels aux organigrammes et aux cartes mentales. Il est basé sur le cloud et fonctionne dans presque tous les navigateurs populaires.
Plusieurs autres outils existent pour la création d'organigrammes et le développement d'algorithmes généraux, comme d'habitude, chacun avec ses propres avantages et inconvénients.
3. Codage du micrologiciel intégré
Tout ce qui a été mentionné jusqu'à ce point mène ici. Le monde des SDK et des IDE, le choix des outils à ce stade dépend de l'appareil cible et des fonctionnalités à intégrer dans l'appareil, pour cette raison, je vais exclure les SDK et IDE populaires tels que MPLAB, etc. de la discussion et coller à des outils de nature plus complémentaire.
1. QT (Développement GUI)
Les écrans (interactifs ou non) sont les supports les plus populaires pour fournir des commentaires aux utilisateurs de nos jours et le SDK de QT est l'un des meilleurs et probablement pas étranger à quiconque dans le cercle intégré. Il fournit des fonctionnalités de «glisser-déposer» qui facilitent le développement d'applications complexes basées sur l'interface graphique pour les appareils embarqués, quelle que soit la plate-forme cible ou le langage de programmation utilisé pour le développement global du projet. Il élimine essentiellement le stress associé à l'utilisation de code pour créer des interfaces utilisateur.
2. (Prototypage rapide)
L'un des plus gros goulots d'étranglement dans le développement de logiciels embarqués est le fait que le matériel n'est généralement pas disponible pour tester les choses en déplacement pendant le développement du logiciel. Souvent, lorsqu'il est disponible, les développeurs de micrologiciels auraient dû attendre tout le temps qu'il fallait pour que le matériel soit prêt à faire peu ou rien. Cela augmente le délai et ne crée pas de place pour le type de synchronisation entre les ingénieurs en matériel et les développeurs de micrologiciels qui aurait augmenté la qualité du produit. Pour aider à résoudre ce problème, les employés de VaST ont créé une plate-forme de prototypage virtuel au niveau des systèmes électroniques qui pourrait être utilisée pour créer un prototype de matériel virtuel. sur lequel les logiciels embarqués peuvent être exécutés pour déterminer les performances des systèmes avant que le matériel ne soit prêt.
3. Doxygen (documentation)
L'une des parties les plus importantes de l'écriture de tout code est la documentation et l'un des outils les plus populaires pour cela est Doxygen. En plus de son utilisation pour comprendre les logiciels hérités, Doxygen a la capacité d'extraire automatiquement les commentaires d'un code et de créer une documentation qui l'inclut. Les structures Doxygen incluent des fichiers graphiquement et créent des références pour chaque fonction, variable et macro utilisées dans votre code. Les organigrammes et les diagrammes de flux de données peuvent également être intégrés dans la documentation en combinant Doxygen avec graphviz.
4. GIT (systèmes de contrôle de version)
Il est difficile de croire que quiconque développe des logiciels de tout type sans une sorte de système de contrôle de version ces jours-ci, mais au cas où vous le feriez, c'est une très mauvaise idée qui pourrait entraîner des erreurs qui vous coûteront du temps et de l'argent. Git se distingue parmi tous les outils de contrôle de version pour plusieurs raisons. Il est open source, rapide, efficace et principalement local. Outre Git, des outils tels que la subversion méritent également d'être mentionnés.
Test du micrologiciel intégré
Les tests sont une partie importante du processus de développement de tout. Les entreprises perdent des milliers de dollars lorsque des appareils sont rappelés en raison d'erreurs de firmware, c'est donc une partie du développement qui doit être prise très au sérieux. Il est souvent fait, main dans la main, avec le codage et le premier ensemble d'outils de test de code, sont probablement les débogueurs au sein de l'EDI ou du SDK utilisés pour le projet. Les tests se présentent sous différentes formes et sont effectués à différentes étapes, en tant que tels, ils impliquent divers types d'outils. Les outils de test forment le développement de micrologiciels qui va de la validation de la conception aux outils d'analyse statique et de test d'exécution. Voici quelques outils que je trouve vraiment utiles.
1. Crystal REV
Crystal revs est un outil pour étudier le code. Il peut être utilisé pour générer un organigramme à partir de code C / C ++, ce qui en fait un excellent outil pour revoir votre propre code et voir si la conception préliminaire est ce qui a été implémenté. Avec crystal rev, vous pourrez voir rapidement la différence entre la conception et la mise en œuvre. Sa capacité à générer des organigrammes, des données et des flux d'appels à partir de codes en fait également un outil utile pour analyser le code hérité.
2. PC-peluche
PC-lint est l'un des plus anciens outils de test de firmware. Il est capable d'analyser les logiciels pour identifier les bogues, les vulnérabilités de sécurité et s'assurer que le code a été écrit conformément aux normes de l'industrie. Des outils similaires incluent polyspace et LRDA, Eggplant et Tessy, entre autres.
3. Wireshark
Ceci est pratique lors de la création de périphériques réseau. Il s'agit essentiellement d'un renifleur de paquets et pourrait vous aider à visualiser les données que votre appareil transmet. Cela pourrait aider à sécuriser l'appareil.
4. Pilote de port série virtuel
Le logiciel VSPD by eltima est un outil que j'ai récemment présenté par un ami. Il est très pratique lorsque vous travaillez sur des pilotes de périphériques et d'autres développements liés aux ports com. Le port série virtuel com vous permet de tester le comportement des ports com sans l'appareil cible. Vous pouvez créer un nombre illimité de ports capables d'émuler tous les paramètres des ports COM réels. Le logiciel est également livré avec des fonctionnalités telles que la division du port série, la fusion des ports Com, l'utilisation de connexions de port COM groupées parmi d'autres fonctionnalités intéressantes.
C'est tout pour cet article, merci d'avoir pris le temps de lire. Bien qu'il soit probablement impossible de lister tous les outils disponibles, j'espère que certains de ces outils vous seront utiles.