Générer du code à valeur ajoutée en systèmes embarqués

Quelques principes fondamentaux qui gagnent à être approchés dès le début du cycle de développement. En logiciel embarqué, qu’est-ce qui sépare un design ordinaire d’un bon design? Une base de code réutilisable, testable et maintenable apporte énormément de valeur puisqu’elle permet d’accélérer le support client et le développement de nouveaux produits. Il est crucial d’approcher ces caractéristiques en amont, puisque plus la base de code s’agrandit, plus l’effort de refactorisation s’alourdit.

Une conception modulaire pour cloisonner les composants selon leurs responsabilités

Les adeptes de la conception logicielle orientée objet reconnaîtront ici le premier principe de la mnémonique SOLID. Même si parfois les outils utilisés en embarqué ne permettent pas d’utiliser un langage de programmation orienté objet, le concept de base reste valide: des composants distincts et plus simples seront non seulement plus robustes, mais aussi plus faciles à modifier si les requis du projet changent.

Prenons un exemple typique: un produit comporte une interface personne-machine sous forme d’un affichage LCD à faible coût pouvant afficher deux rangées de caractères, ainsi qu’une série de boutons pour naviguer dans l’information y étant affichée. Le client désire rafraîchir son produit en remplaçant cette interface par un écran tactile. Si les événements de boutons, la logique de navigation des menus et la génération du texte à afficher sont tous couplés, l’effort de mise à jour sera bien plus grand que si la conception originale séparait ces responsabilités en modules distincts.

Rendre la logique haut-niveau indifférente à la plateforme

Pour amener la base de code au prochain niveau de réutilisabilité, le défi consiste à implémenter les modules qui s’y prêtent de façon à ce qu’ils ne dépendent pas de l’architecture propre au microcontrôleur ou microprocesseur sur lequel le développement original s’effectue. Avec ou sans système d’exploitation sur le système embarqué, il existe plusieurs méthodes pour y arriver: configuration dynamique au démarrage, options de pré-compilateur ou bien simplement séparer les accès spécifiques au système dans un fichier qui est à modifier lors du port vers une nouvelle architecture.

Le code pourra donc être réutilisé sur une autre architecture de microcontrôleur, ou bien même dans une application PC. Cette stratégie est particulièrement de mise pour les protocoles de communication sérielle ou réseau. Rapidement, un concepteur pourra tester la communication avec son système embarqué en développant un simulateur s’exécutant sur un PC, qui utilisera la même base de code que sur le système embarqué.

Une base de code facilement réutilisable accélère le développement de nouveaux produits

C’est ici qu’on récolte le bénéfice de notre diligence: un effet synergique provenant de la modularité et la réutilisabilité de la base de code. En réutilisant le code d’un projet antérieur, on vient considérablement réduire l’effort de développement, en plus de diminuer les risques potentiels, puisqu’on sait que le code est testé et fonctionnel.

Prenons un exemple générique: la conception d’un produit pour un client nécessite une communication sérielle entre une interface de contrôle et un système embarqué central comportant divers capteurs et actuateurs. Un protocole de communication est conçu pour échanger des informations entre l’interface de contrôle et le système embarqué. Puisque le protocole de communications est conçu comme un module indépendant, il peut être réutilisé pour créer un bootloader permettant de mettre à jour l’application du système embarqué dans le champ.

Plus tard, le même client désire concevoir un produit similaire qui sera vendu dans un autre secteur. Tout comme le produit précédent, il y aura un besoin d’échanger des informations entre une interface de contrôle et un système embarqué. Toutefois, ce produit nécessite un microcontrôleur particulier pour faire de la communication bluetooth et wi-fi à faible coût. Comme la conception du protocole de communication fut pensée de façon générique en amont, le même protocole connu et testé peut être utilisé, même si la plateforme est différente. De plus, comme le bootloader a lui aussi été conçu de façon générique, il peut lui aussi être utilisé. Nous avons donc déjà deux modules fonctionnels et fiables avant même d’avoir commencé le développement du nouveau produit.

Ce qui est donc important de retenir, c’est qu’un bon design apporte non seulement de la valeur dans l’immédiat, mais continue aussi d’être payant à long terme.

Apprenez-en davantage sur notre expertise en développement logiciel embarqué.

À propos de l'auteur

Renaud Paquet Faucher est concepteur logiciel embarqué chez NOVO. Ce qui le motive le plus, c’est l’opportunité de collaborer avec toutes sortes d’expertises.

Continuer la lecture

L’orthèse OdrA, deux fois lauréate pour la 14e édition des GRANDS PRIX DU DESIGN

Comment les revues de conception jouent un rôle essentiel dans le développement de produits médicaux

Comment cocréer efficacement avec une agence de développement de produits

Nous désirons offrir des contenus qui comptent vraiment pour vous.

En poursuivant votre navigation sur ce site, vous en acceptez les conditions générales d’utilisation et l’utilisation des cookies.