Système propriétaire

1.1 Histoire de ce livre et ce que vous obtiendrez en le lisant

Au cours d’une année environ, après avoir terminé mon premier livre, j’ai ressuscité un vieux projet favori de construction d’un sous-marin autonome (appelé le projet E-2) avec certaines exigences de fonctionnalité assez difficiles. Au cours du développement de cette idée, j’ai passé de nombreuses heures sur Internet et ailleurs, à rechercher des techniques de développement rapide de divers systèmes et plates-formes de contrôle électromécaniques pour exécuter des algorithmes de traitement du signal assez complexes. Bien qu’il y ait, bien sûr, des milliers de projets utiles et de bribes d’information à obtenir sur Internet et dans les livres sur la robotique amateur, j’ai constaté que personne d’autre ne semblait avoir exactement mes priorités. En particulier, il n’existe apparemment aucune référence unique qui rassemble au moins des solutions d’introduction à tous les problèmes de conception embarquée qui ont affecté mon projet : un besoin d’utiliser des outils et des systèmes d’exploitation (open-source) à faible coût, une exigence pour plusieurs fonctionnalités avec des exigences en temps réel assez dures, et un désir d’utiliser des composants bon marché, de qualité grand public, dans la mesure du possible. Les ressources disponibles sur de nombreux sujets se concentrent soit sur des composants industriels sur étagère très coûteux, soit sur des systèmes à contraintes étroites construits autour d’un seul microcontrôleur, avec un code délicatement optimisé et non portable pour contrôler les périphériques – et une gamme très limitée de périphériques, en plus. Ces dernières restrictions de conception de système sont inévitables lorsque vous travaillez avec des exigences de puissance, des contraintes d’espace ou un coût de nomenclature très bas, mais la construction et la mise au point de tels systèmes pour un projet unique ou un prototype représentent un effort démesuré. De plus, l’apprentissage de tous les détails nécessaires à l’assemblage d’un tel système est une tâche énorme ; il est facile de se perdre dans la mise au point de détails sans jamais parvenir à mettre sur pied un système complet et fonctionnel. De manière irritante, beaucoup des ajustements et la plupart de la planification minutieuse que vous faites pour rendre ce système opérationnel devront être jetés si vous passez à la production réelle, ou si vous devez construire quelques unités supplémentaires avec des composants légèrement différents.

Ce que je cherchais en développant le projet E-2 était un moyen de construire divers modules temps réel durs (capteurs et actionneurs) qui pourraient facilement et à moindre coût être interfacés avec un ordinateur général fonctionnant sous Linux. La boîte Linux servait de banc d’essai pour les algorithmes qui seraient ensuite portés vers le bas dans un module de traitement plus petit, plus frais et plus économe en énergie. J’avais besoin d’une base solide de codes et de techniques connus et efficaces, afin de pouvoir partir de là et construire mon propre système personnalisé. Je voulais aussi un guide simple et opérationnel pour construire des distributions Linux embarquées. Pour le prototype initial, non utilisable sur le terrain, de mon sous-marin, je n’avais pas une idée exacte de la puissance du processeur dont j’aurais besoin dans la version finale – je ne voulais donc pas être lié à une architecture spécifique de microcontrôleur, et je ne voulais pas non plus m’enliser en essayant d’ajuster et de régler de nombreuses tâches en temps réel sur un seul microcontrôleur. Je voulais également utiliser quelques périphériques – comme les caméras – qui sont plus facilement interfacés par un système d’exploitation général.

Ces exigences peuvent sonner un accord avec votre propre vie professionnelle. Il y a de fortes chances que vous ayez rencontré des situations où il serait utile d’automatiser une expérience de collecte de données à long terme ou de créer un contrôleur automatisé simple pour une tâche de programmation, de fabrication ou autre. Dans cette veine, trois autres cas où j’ai appliqué les techniques de ce livre sont :

Le développement d’une gamme d’appareils multimédias en réseau réussis (commercialisés), conçus pour des applications de publicité et de galerie d’art sans surveillance.

Le développement d’appareils spécialisés, presque entièrement automatiques, de test de défaillance mécanique pour certains articles électroniques grand public.

Construction d’un enregistreur de données automatique à haute vitesse qui surveille une liaison radio et extrait les messages DTMF ciblés sur des récepteurs spécifiques.

Le deuxième élément ci-dessus est particulièrement intéressant, car il démontre joliment comment ce livre peut avoir une valeur pratique dans les applications de contrôle de processus et de test. Au cours de l’année 2002, j’ai brièvement travaillé pour une petite division d’une multinationale dont l’activité principale était la fabrication d’articles ménagers et de bureau en plastique. Il était très instructif d’examiner leurs montages de test automatisés – des systèmes propriétaires – et de comparer le coût et la complexité d’installation de ces montages avec le coût et le temps d’installation relativement faibles d’un simple SBC basé sur Linux contrôlant les mêmes actionneurs et capteurs pneumatiques. Il est clair qu’il existe un marché sous-exploité pour les systèmes de test à faible coût de ce type. Les systèmes propriétaires utilisés dans cette installation particulière coûtaient près de 20 000 $ pour une demi-douzaine d’actionneurs et les PLC associés, plus des heures innombrables de configuration1. Le logiciel de commande de ces appareils était spécialisé et mal compris ; en fait, la plupart de ces équipements étaient inutilisés parce que les personnes qui les avaient configurés à l’origine avaient quitté l’entreprise. En revanche, les mêmes tâches pourraient facilement être accomplies avec un PC ordinaire coûtant à peine quelques centaines de dollars, plus peut-être 200 dollars par actionneur pour la pneumatique associée. Plus important encore, le logiciel de contrôle d’un tel système est un simple programme C facilement compréhensible et adaptable par n’importe quel étudiant compétent en informatique ou en génie électronique ; il y avait plusieurs candidats facilement disponibles dans le laboratoire de la société.

En raison de la nature de la recherche qui a conduit à la création de ce livre, j’ai inclus un saupoudrage de détails navals dans le texte, qui ne sont pas tous directement pertinents pour l’ingénieur embarqué. Si ce matériel ne vous intéresse pas, vous pouvez l’ignorer sans compromettre votre compréhension du reste du texte. La raison pour laquelle ces informations sont incluses à côté de la discussion sur le développement embarqué « pur » est principalement d’illustrer les exigences du monde réel et la réflexion qui a conduit à diverses décisions de conception dans le projet E-2. L’ingénierie n’est pas une science théorique ; c’est une discipline appliquée, et c’est dans cet esprit que j’utilise des exemples spécifiques pour illustrer des points théoriques.

Vous devriez également noter que certaines des opinions exprimées dans ce livre, si elles ne sont pas exactement controversées (sauf par les normes Usenet – tout sur Usenet est controversé !), sont au moins discutables ; par exemple, le choix de l’AVR comme ma plate-forme de contrôle en temps réel. Pour cette raison, j’ai fourni une justification supplémentaire pour les décisions que j’ai prises dans ce texte. Cette explication supplémentaire devrait démontrer les raisons que j’avais de choisir des chemins spécifiques, mais elle n’est expressément pas conçue pour faire du prosélytisme en faveur de l’AVR auprès des personnes qui ont de l’expérience avec une autre architecture et qui la préfèrent. Encore une fois, ce « matériel bonus » n’est pas critique pour votre compréhension des concepts de base présentés ici, et vous pouvez sans risque le sauter si vous le souhaitez.

Gardez également à l’esprit que ce livre n’est intentionnellement pas une « bible ». Il ne s’agit pas d’une couverture exhaustive de chaque nuance des sujets abordés ; un tel ouvrage s’étendrait sur plusieurs étagères. L’objectif principal de ce livre est de décrire et d’illustrer une méthodologie simple, modulaire et peu coûteuse pour la mise en œuvre de systèmes embarqués complexes, et de présenter des modules prêts à l’emploi que le lecteur pourra adapter à ses propres projets. L’accent est mis sur la réalisation de solutions de bout en bout à l’aide de matériel de développement peu coûteux et d’outils logiciels libres. Au moment où vous atteignez les dernières pages, nous espérons que vous aurez les éléments suivants :

Une compréhension fonctionnelle des détails critiques « sous le capot » nécessaires pour amorcer Linux sur les plates-formes x86.

Une introduction aux types de problèmes auxquels vous serez confrontés en utilisant des ordinateurs monocartes x86 embarqués comme cœur des systèmes d’enregistrement de données et de contrôle de mouvement.

Information de base sur la famille de microcontrôleurs Atmel AVR.

Introduction pratique à la construction de quelques circuits simples d’acquisition de données et de contrôle de moteurs, et à leur connexion à des PC.

Un certain nombre d’informations de base « d’amorce » sur la sécurité des données, l’authentification et les problèmes de fiabilité tels qu’ils affectent les systèmes embarqués.

L’idée sous-jacente est que le lecteur a une expérience raisonnablement intime avec l’un ou l’autre des sujets du développement d’applications Linux, ou le développement de systèmes profondément embarqués – ce livre est conçu pour vous stimuler le bord d’attaque de votre courbe d’apprentissage avec les éléments essentiels de n’importe quel côté de l’équation qui vous manque. Il fournit également la colle qui relie ces éléments d’information dans le contexte global d’un projet assez complexe. Notez, en passant, que j’ai utilisé le terme « livre de recettes » avec une certaine hésitation. L’ingénierie purement livresque, qui consiste à assembler des éléments mal compris comme des sphères Capsela, n’est jamais une bonne pratique. Dans ce livre, je vous donne des pièces Capsela prêtes à l’emploi, mais je vous explique aussi comment et pourquoi j’ai fabriqué les engrenages et les arbres de chaque pièce, et dans une certaine mesure comment vous pouvez aller plus loin et fabriquer vous-même de meilleures pièces. Ces explications sont bien plus importantes que les plans des pièces elles-mêmes.

Lors de la planification d’un livre comme celui-ci, il est facile de tomber dans l’un des deux pièges suivants : soit créer une seule « méga-application » monolithique qui illustre tous les points souhaités, mais qui est extrêmement difficile à expliquer succinctement, soit d’autre part décomposer le sujet en de nombreuses petites notes abstraites que de nombreux lecteurs auront du mal à intégrer dans des projets réels. J’ai essayé de naviguer entre ces deux extrêmes en décomposant les modules les plus intéressants du projet E-2 en quelques petites applications pratiques accompagnées d’un code fondamentalement autonome et de suffisamment de théorie pour modifier et étendre ces applications pour vos propres utilisations.

Enfin, une note aux personnes qui possèdent mon livre précédent, Embedded System Development on a Shoestring. Ce livre n’est pas conçu pour être une suite à ce volume, mais c’est définitivement du matériel connexe. Si vous suivez les techniques de ce livre pour construire un prototype et que vous souhaitez ensuite le réduire à une solution monopuce optimisée, mon précédent ouvrage vous aidera à comprendre comment utiliser les outils GNU libres pour porter facilement votre logiciel sur un microcontrôleur ARM. Les principales critiques que j’ai reçues à propos de ce précédent ouvrage étaient qu’il devait couvrir un plus large éventail d’informations et qu’il y avait trop peu d’illustrations, ce qui en faisait une lecture plutôt aride. J’ai écouté ces commentaires et j’espère que vous trouverez que ce livre répond à vos besoins sur ces deux plans. Comme toujours, vos commentaires et suggestions sont les bienvenus ; vous pouvez m’envoyer un courriel à l’adresse suivante ou visiter mon site Web à l’adresse http://www.zws.com/.

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.