Les systèmes embarqués sont de plus en plus influencés par l'évolution du cloud computing, une tendance qui transforme profondément la manière dont ces systèmes sont conçus et déployés. De l'amélioration de la sécurité à l'accès global aux données, le cloud offre une série d'avantages qui peuvent faciliter le développement et la mise en œuvre des systèmes embarqués. Cependant, ces avantages ne viennent pas sans contrepartie. Il est essentiel de comprendre les implications et les compromis associés à l'intégration du cloud dans les conceptions de systèmes embarqués.

L’un des principaux avantages du cloud dans les systèmes embarqués réside dans sa capacité à améliorer la sécurité. En effet, les fournisseurs de cloud peuvent investir massivement dans des infrastructures de sécurité avancées, un investissement que de petites entreprises de conception de systèmes embarqués ne peuvent pas se permettre. Lorsque les systèmes embarqués collectent des données sensibles, l’utilisation du cloud permet de réduire la nécessité de concevoir une sécurité complexe localement, ce qui rend les systèmes plus sûrs tout en optimisant les coûts.

Le cloud permet également un accès mondial aux données. Pour les grandes entreprises possédant de multiples bureaux situés dans des lieux différents, le stockage et le traitement des données dans le cloud facilitent l’accès aux informations collectées par les systèmes embarqués. De plus, ces données peuvent être utilisées par plusieurs organisations. Par exemple, les données issues des systèmes de surveillance de patients peuvent être partagées entre le CDC (Centers for Disease Control and Prevention) et l’OMS (Organisation Mondiale de la Santé), offrant ainsi une vision globale et permettant une gestion améliorée de la santé publique à l’échelle mondiale.

Une autre dimension importante du cloud est qu’il permet aux équipes de conception de se concentrer sur l’application spécifique qu’elles développent, sans avoir à se soucier des problèmes d'infrastructure. En exploitant le cloud pour gérer des aspects communs tels que le stockage des données et les calculs complexes, les concepteurs peuvent réduire la complexité et les coûts des systèmes embarqués eux-mêmes, tout en accédant à une puissance de traitement et de stockage bien plus importante que celle disponible localement.

Cependant, l’intégration du cloud dans les systèmes embarqués comporte plusieurs compromis qu’il convient d’examiner avec attention. Tout d’abord, les services cloud ont un coût. Cette option doit être soigneusement pesée en termes de spécifications et de conception de haut niveau. L’équipe de conception doit collaborer avec la direction de l’entreprise pour évaluer les avantages des services cloud par rapport au coût global du développement du système et au prix unitaire de chaque produit déployé. En outre, un temps de latence inhérent à l’utilisation des services cloud doit être pris en compte. Les demandes envoyées au cloud pour effectuer des calculs et renvoyer des résultats prennent du temps, ce qui peut ne pas être acceptable dans des systèmes où des réponses en temps réel sont nécessaires, comme dans les systèmes de sécurité des portes. Dans d’autres cas, comme un système agricole de gestion de l’irrigation, quelques minutes de retard peuvent être tolérées sans compromettre les performances du système.

L’un des défis majeurs de l’utilisation du cloud réside dans la propriété des données. Lorsqu’un système embarqué envoie des données dans le cloud, le contrôle de ces données peut être perdu. La confidentialité et la sécurité des données deviennent donc des enjeux cruciaux, d’autant plus qu'elles peuvent être exploitées par des entités externes. Ce sujet nécessite une réflexion approfondie sur les droits d’accès, la gestion des données personnelles et la conformité aux normes telles que le RGPD en Europe.

En outre, la connexion au cloud nécessite une connectivité Internet, ce qui peut être problématique dans certaines situations, en particulier dans des environnements où la couverture réseau est limitée. Même pour les systèmes déjà dotés de communications sans fil, l’augmentation de la consommation énergétique liée à la communication avec le cloud peut alourdir la charge sur les ressources locales, rendant l’intégration de cette technologie plus complexe et potentiellement moins efficace en termes d’autonomie.

Prenons un exemple concret pour mieux illustrer l’impact du cloud dans la conception des systèmes embarqués. Imaginons une entreprise de taille moyenne qui conçoit un système de sécurité pour les portes d’un bâtiment. Un système simple pourrait être conçu pour stocker les empreintes digitales des personnes autorisées à accéder à l’immeuble, à l’aide d’une clé mémoire et d’un lecteur d’empreintes. Ce type de système serait relativement peu coûteux et ne nécessiterait pas de connexion à d’autres appareils externes. Toutefois, un système plus sophistiqué pourrait inclure un PC centralisé qui gère les empreintes digitales de tous les employés d’un bâtiment entier. Ce PC serait connecté aux lecteurs de chaque porte par réseau sans fil, et disposerait d’une base de données pour gérer les autorisations d’accès. Un tel système nécessiterait un investissement supplémentaire, notamment pour les équipements de communication sans fil.

Une version plus avancée du même système pourrait intégrer des données externes, comme celles d’une base de données régionale pour vérifier les antécédents criminels des personnes. À ce stade, la connexion au cloud devient indispensable, permettant un accès aux bases de données en ligne et une mise à jour continue des informations.

Dans un contexte plus vaste, par exemple pour une grande entreprise possédant de multiples bâtiments répartis sur plusieurs sites, un système complet dans le cloud serait nécessaire pour stocker et analyser l’historique des accès à tous les bâtiments et portes. Ce système pourrait également inclure des outils d’analyse statistique pour optimiser l’utilisation des espaces, surveiller les mouvements des employés ou détecter des anomalies telles que des vols de fournitures. L’utilisation du cloud permettrait alors d’effectuer des analyses complexes qui seraient difficiles, voire impossibles, à réaliser avec des systèmes locaux.

La question que se posent les ingénieurs dans de tels cas est de savoir quelle part des calculs nécessaires au fonctionnement du produit pourrait être déléguée au cloud sans compromettre les performances en temps réel, et à quel coût supplémentaire cela impliquerait. Les choix faits en matière de conception, comme l’intégration de services cloud ou l’utilisation de paradigmes communs de calcul, doivent être justifiés par les besoins réels du système et son modèle économique. Il est également essentiel d'évaluer le type de service cloud (IaaS, PaaS, SaaS) qui répond le mieux aux besoins du produit, en tenant compte des coûts associés et de la capacité des clients à supporter ces coûts.

Comment concevoir l'accessibilité universelle des produits du futur : les défis de l'inclusion

Le défi de rendre les produits accessibles à un public aussi large et diversifié que possible devient de plus en plus crucial à mesure que les technologies évoluent. Le Consortium World Wide Web (W3C) a déjà mis en place des politiques visant à accroître l'accès au web, et la littérature sur l'Interaction Homme-Machine (IHM) regorge de recherches et de propositions visant à rendre l'accès plus universel. La conception de produits inclusifs pour l’avenir devrait prendre en compte des scénarios dans lesquels des personnes présentant divers types de handicaps interagissent avec ces produits. Cela inclut des handicaps visuels, auditifs, cognitifs, et de dextérité manuelle.

Les handicaps les plus fréquemment pris en compte dans la conception de produits sont les déficiences visuelles, auditives et la diminution de la dextérité manuelle. La déficience visuelle peut aller de la perte partielle de la vue à la cécité complète, et inclut d'autres troubles tels que le daltonisme. La déficience auditive, quant à elle, peut également être partielle ou totale, et inclure des pertes de capacité à entendre certaines fréquences. Les troubles de la dextérité manuelle couvrent une large gamme de déficiences, comme la limitation du mouvement dans une partie de la musculature, des tremblements, ou un manque de force.

Prenons l'exemple d'un projet de construction d'un pont. Si ce pont n'intègre pas de signaux sonores dans son sous-système de contrôle au sol, les piétons malvoyants seraient gravement désavantagés. Les conducteurs daltoniens, quant à eux, pourraient ne pas comprendre ou même voir de manière adéquate les feux clignotants, ce qui pourrait les amener à ne pas arrêter leur véhicule à temps. De même, une personne atteinte de daltonisme aurait des difficultés à utiliser un panneau de commande si la couleur y occupait une place prépondérante dans la présentation de l'information.

L'accès au web, que ce soit par PC, ordinateur portable ou téléphone portable, a souffert, jusqu'à récemment, d'une absence d'accessibilité universelle. Ces dispositifs dépendent presque exclusivement de repères visuels. Les actions telles que cliquer ou toucher des icônes, ou encore glisser des doigts sur un écran, sont facilement comprises et maîtrisées par les utilisateurs voyants, mais elles sont pratiquement inutiles pour les utilisateurs aveugles. L'ajout de lecteurs d'écran et de commandes vocales est une tentative de l'industrie du web pour pallier cette dépendance aux repères visuels, mais lire simplement le texte affiché à l'écran ne répond pas toujours aux besoins des utilisateurs aveugles dans de nombreuses applications.

Il est essentiel de concevoir dès le départ l'accessibilité universelle d'un produit. Les modèles comportementaux, comme ceux évoqués au chapitre 2, doivent inclure des scénarios dans lesquels les utilisateurs présentent diverses formes de handicap. Dans l'exemple du pont, cela inclurait des scénarios où des piétons ayant différents types de déficience visuelle sont présents lors de l'arrivée d'un bateau, des scénarios où l'opérateur présente des handicaps, et ainsi de suite. L’équipe qui analyse ces scénarios doit comprendre les défis auxquels ces personnes sont confrontées. Cela peut être accompli en intégrant des membres de l'équipe ayant les handicaps étudiés ou en demandant à chaque membre de l'équipe de se mettre dans la peau de ces utilisateurs, par exemple en fermant les yeux pour imaginer leur réaction dans un environnement spécifique.

Le modèle comportemental doit être révisé si des problèmes sont identifiés. L’une des méthodes pour améliorer la conception consiste à demander aux concepteurs de « jouer un rôle ». Un exemple intéressant de cette approche a été observé chez Ford, où les ingénieurs ont porté des combinaisons spéciales les empêchant de bouger normalement pour tester l’ergonomie d’un nouveau modèle de voiture. Cette expérience a permis de modifier des aspects du design, le rendant plus accessible et attrayant pour une clientèle plus large.

La facilité d'installation et de maintenance d’un produit est également un critère clé. Un produit doit être facile à installer et à configurer pour une utilisation initiale, et sa maintenance doit également être simple. Prenons l'exemple d’un guichet automatique : son installation est relativement simple, puisque l’appareil arrive généralement préassemblé et nécessite seulement d’être fixé à un emplacement et de connecter les lignes nécessaires. Toutefois, pour un projet plus complexe comme la construction d’un pont, l’installation pourrait être bien plus ardue. Il est donc impératif que des mesures soient prises pour simplifier l’installation, comme la mise en place de caisses de câbles accessibles pour la gestion des connexions entre les différentes sections du pont. De plus, l’accessibilité des composants nécessitant une maintenance régulière doit être prévue dès la conception pour permettre une intervention rapide et efficace.

La portabilité, ou adaptabilité, est également une caractéristique importante dans la conception des systèmes, bien que difficile à analyser de manière formelle. Un produit doit pouvoir être utilisé dans une variété de situations et d'environnements. Par exemple, un pont doit pouvoir être conçu de manière à ne pas être limité à un type spécifique de rivière, qu'elle soit droite ou sinueuse. Les parties du système doivent être modulaires et standardisées afin que de nouveaux composants puissent être intégrés dans de futures implémentations du produit, comme l'illustrent les lecteurs de cartes bancaires dans les systèmes de paiement en magasin, qui sont conçus pour être facilement adaptés aux nouvelles technologies sans devoir remplacer tout le système.

L'interface utilisateur doit aussi être adaptable à différents pays et cultures. La conception d’un guichet automatique doit permettre de modifier facilement la taille et la forme des bacs à billets pour s'adapter aux différentes devises, et l'interface doit être modifiable pour répondre aux attentes culturelles et linguistiques de chaque région.

Les enjeux de la conception d'une accessibilité universelle sont donc multiples et doivent être abordés dès les premières étapes de conception. La mise en œuvre de scénarios variés, l’intégration d’une maintenance simplifiée, et la modularité du produit sont des éléments qui, au-delà de la simple conformité réglementaire, enrichissent la qualité et l’accessibilité des produits à long terme. Tout cela met en lumière l’importance de penser inclusif et flexible dès la conception, afin de garantir que les produits de demain soient véritablement accessibles à tous, indépendamment des handicaps ou des évolutions technologiques futures.

Comment les processeurs spécialisés optimisent les systèmes embarqués et les applications de traitement intensif

Les processeurs de la famille Stellaris, par exemple, intègrent un mécanisme de protection qui empêche la reconfiguration accidentelle des broches, notamment le passage d'une fonction d'entrée/sortie à une fonction alternative, ou inversement. Cette fonctionnalité est essentielle pour garantir la stabilité et la fiabilité des systèmes embarqués. En parallèle, la famille Stellaris prend en charge l'ensemble des instructions ARM-CORTEX Thumb standard, une architecture qui optimise les performances des processeurs embarqués tout en réduisant leur consommation d'énergie et la taille du code.

Les instructions ARM standard sont longues de 32 bits, ce qui permet un accès complet aux capacités du processeur à travers des combinaisons variées d'opérations avec des registres et des adresses mémoire. Cependant, la majorité des systèmes embarqués n'exploitent pas la totalité de cet ensemble d'instructions. En réalité, un sous-ensemble très spécifique est utilisé, centré sur des opérations simples, souvent avec peu de registres et de valeurs immédiates, ou encore une réduction de certaines fonctionnalités des opérations.

Prenons l'exemple de l'instruction ADD dans son format 32 bits complet. Cette instruction permet des opérations conditionnelles grâce à un champ d'exécution conditionnelle de 4 bits, l'accès à 16 registres différents avec des champs de 4 bits pour les registres, des valeurs immédiates sur 12 bits et deux bits supplémentaires pour les indicateurs. Dans le format 16 bits de l'instruction Thumb, de nombreuses fonctionnalités sont absentes : il n'y a pas de champ d'exécution conditionnelle, ni de bits pour les indicateurs, et les registres sont limités aux huit premiers, avec des valeurs immédiates sur 3 bits seulement. Bien que cette version réduite de l'instruction permette de conserver une partie des fonctionnalités de base, elle permet une réduction significative de la taille du code, ce qui est crucial dans les systèmes embarqués où la mémoire à bord est souvent limitée.

Dans des applications où le jeu d'instructions Thumb suffit, la taille du code peut être réduite de près de moitié, un avantage considérable dans les systèmes embarqués. Cela est particulièrement important lorsqu'on prend en compte les contraintes liées à la mémoire et aux performances. Un processeur qui utilise exclusivement ce sous-ensemble réduit d'instructions peut fonctionner plus rapidement tout en utilisant moins de mémoire, ce qui permet de maximiser l'efficacité des systèmes embarqués.

Les processeurs spécialisés, quant à eux, sont conçus pour des applications précises et non pour des tâches de calcul général. Par exemple, les processeurs destinés au traitement du signal numérique (DSP), au traitement audio et vidéo, à l'image ou même à des applications récentes comme l'intelligence artificielle (IA) et l'apprentissage automatique (ML) sont souvent équipés de matériel dédié et d'instructions spécifiques pour accomplir des calculs complexes de manière plus rapide et plus efficace. L'inclusion de matériel spécialisé sur le processeur peut ainsi offrir des performances accrues pour des tâches particulières, comme l'exemple de l'unité de traitement raster dans les unités de traitement graphique (GPU), où des informations sur les pixels et les textures sont combinées avant d'être affichées à l'écran.

Dans le cas du processeur TI 320 série C5000/6000, des instructions spécifiques comme l'instruction de multiplication et d'accumulation (MAC) ont été intégrées. Cette instruction optimise le calcul du produit scalaire, une opération fondamentale pour de nombreuses applications, notamment les convolutions et les filtrages utilisés dans les DSP, les jeux vidéo, les applications vidéo et la multiplication matricielle générale. Cette optimisation permet de traiter des calculs complexes de manière plus rapide en combinant matériel et instructions adaptées. Par exemple, en C, un calcul de produit scalaire pourrait ressembler à ceci :

makefile
p1 = array1; p2 = array2; sum = 0; for (j = 0; j < n; j++) { sum += p1[j] * p2[j]; }

Dans un processeur dédié comme le TI C5000, cette même opération pourrait être exécutée en une seule instruction MAC, réduisant ainsi considérablement le temps de traitement.

Les processeurs spécialisés sont donc des éléments clés pour les systèmes embarqués et les applications à haute performance. Leur capacité à combiner matériel et instructions optimisées pour des tâches spécifiques les rend particulièrement adaptés aux besoins des applications modernes, notamment celles qui exigent un traitement rapide et efficace de grandes quantités de données, comme c'est le cas dans les domaines de l'image, du son, du calcul scientifique ou des algorithmes d'IA.