Développement logiciel simplifié à l’aide des configurateurs MCU
Les configurateurs de MCU sont de plus en plus acceptés dans le développement de logiciels. Mais pourquoi?
Lorsque j’ai commencé à écrire des logiciels embarqués, presque tous les projets ont commencé de la même manière. Pendant les 3 à 6 premiers mois, chaque jour a été consacré à parcourir les fiches techniques des microcontrôleurs et à écrire un pilote pour chaque périphérique qui allait être utilisé sur un projet. C’était très amusant. Chaque microcontrôleur fonctionnait légèrement différemment des autres et beaucoup de choses pourraient être apprises en observant les différences entre la façon dont une entreprise a mis en œuvre un USART par rapport à la façon dont une autre l’a fait. Alors que ces activités étaient révélatrices pour un jeune ingénieur, au moment où un développeur a écrit son troisième ou quatrième pilote USART, l’activité commence à devenir non seulement moins intéressante mais aussi un obstacle pour se lancer sur le code de l’application. C’est là que les configurateurs de microcontrôleurs modernes ont vraiment commencé à briller.
Un configurateur de microcontrôleur est un composant de chaîne d’outils qui permet à un développeur de configurer des périphériques de microcontrôleur via une interface utilisateur graphique agréable qui à son tour génère tout le code de contrôle des périphériques qui aurait autrement été écrit à la main. Un configurateur de microcontrôleur peut réduire considérablement ce programme de développement de pilotes de 3 à 6 mois à quelques semaines ou moins sans avoir besoin de fouiller dans des milliers de pages de manuels de référence techniques pour comprendre chaque bit de registre. Les configurateurs modernes ne se contentent pas de définir des valeurs de registre, mais fournissent également des crochets de pilote qui font complètement abstraction du matériel de bas niveau.
Les configurateurs de microcontrôleurs ne sont en aucun cas une invention nouvelle. Ils existent depuis au moins une décennie ou plus. Je me souviens avoir travaillé avec les premières versions de Freescale Processor Expert sur des microcontrôleurs S12X. À l’époque, les configurateurs étaient parfaits pour comprendre le microcontrôleur et le fonctionnement de ses périphériques. Le code qu’ils ont généré était cependant difficile à lire et à maintenir, c’est pourquoi nous l’utilisions pour un prototypage rapide, puis l’exploitions pour écrire à la main nos pilotes.
Les outils de configuration d’aujourd’hui sont cependant devenus assez sophistiqués et, dans de nombreux cas, satisferont aux normes de codage telles que MISRA-C. En fait, certains configurateurs génèrent du code qui atteint des niveaux de qualité au-delà de ce que je vois coder manuellement par les développeurs. Dans tous les cas, il existe une tendance dans l’espace des microcontrôleurs à minimiser les besoins des développeurs pour comprendre le matériel de bas niveau et à les aider à être opérationnels avec leur code d’application le plus tôt possible. Cela a beaucoup de sens étant donné que de nombreux microcontrôleurs modernes ont atteint des niveaux de sophistication qui pourraient nécessiter plus d’un an pour comprendre et écrire du code. Pourquoi une entreprise voudrait-elle soutenir tous ces efforts, surtout si elle peut obtenir un code de qualité généré à partir d’un outil de configuration ?
Il existe de nombreux outils de configuration, mais jusqu’à présent, ceux que j’ai rencontrés ont tous été produits par le fabricant du microcontrôleur. Par exemple, Microchip a le configurateur Microchip Harmony, ST Microelectronics a STM32CubeMx, et ainsi de suite. Ces outils s’intègrent généralement dans l’IDE du fabricant d’une manière ou d’une autre afin de fournir aux développeurs une expérience transparente en passant de l’écriture de leur code d’application à la configuration des périphériques de leurs microcontrôleurs et des interfaces de pilote. Chaque outil est un peu différent, mais comme j’ai récemment joué avec Microchips Harmony Configurator (MHC), je vais l’utiliser comme exemple.
Un grand avantage de ces outils de configuration est leur capacité à fournir un mécanisme visuel pour configurer le microcontrôleur. Par exemple, la vue ci-dessous montre comment le MHC fournit un graphique de projet visuel. Les développeurs peuvent facilement voir quels composants ils ont inclus dans leur projet en plus de connecter les dépendances entre les modules.
Chacun de ces composants peut ensuite être sélectionné et configuré à l’aide d’une simple case à cocher ou d’un système de liste déroulante. Par exemple, le menu de configuration de FreeRTOS est visible dans l’image ci-dessous :
FreeRTOS, Jacob Beningo
|
Menu de configuration pour FreeRTOS. |
Cette interface est beaucoup plus facile à utiliser et à configurer que d’avoir à aller dans un fichier d’en-tête et à faire des allers-retours entre la documentation pour déterminer quelles définitions doivent être ajoutées afin d’obtenir l’ensemble de fonctionnalités souhaité. Une fois les paramètres configurés, le code est généré en cliquant simplement sur un bouton « générer le code » qui génère le code dans le répertoire du projet.
L’utilisation d’un configurateur de microcontrôleur peut accélérer considérablement le développement logiciel en réduisant le temps consacré à la configuration des pilotes et à la configuration du microcontrôleur. Les développeurs doivent cependant passer un certain temps à surmonter la courbe d’apprentissage de la chaîne d’outils. J’ai constaté que beaucoup de ces outils peuvent être appris en quelques jours une fois que les ressources appropriées sont trouvées. La courbe d’apprentissage commence généralement abruptement, mais une fois que le concept de base est appris, il y a un moment aha qui augmente considérablement la vitesse de configuration. Bien que chaque outil soit différent, ils sont tous conçus pour aider les développeurs à démarrer leur code d’application le plus tôt possible.