Aujourd’hui, l’électronique embarquée est de plus en plus utilisée dans notre quotidien et dans de multiples domaines d’applications :
- Astronautique (fusées, satellites, sondes spatiales…)
- Automates programmables
- Electroménager (Télévisions, fours à micro-ondes…)
- Télécommunication (Téléphones portable, routeurs…)
- Guichets automatiques (Parcmètres, Distributeurs banque…)
- Transport (Ferroviaire, Avionique, Automobile…)
- …
Mais qu’est-ce réellement qu’un système embarqué ?
Il s’agit d’un système électronique et informatique autonome intégré à un objet qui est conçu pour résoudre un problème ou une tâche spécifique en utilisant un microprocesseur combiné avec du matériel électronique. La partie logicielle d’un système embarqué est entièrement programmée dans la partie matérielle, ce qui les rend indissociables l’une de l’autre contrairement à un environnement de travail classique de type PC.
Les systèmes embarqués exécutent des tâches prédéfinies en autonomie et doivent répondre à de nombreuses contraintes définies dans leur cahier des charges en fonction de la tâche réalisée et du domaine d’application. Ces contraintes peuvent être :
- L’autonomie: les objets embarqués ne disposent pas nécessairement d’une alimentation électrique. Il est donc primordial que la consommation énergétique soit minimum afin de garantir une performance optimale à tout moment tout en garantissant un coût réduit.
- L’espace mémoire : Ayant un espace mémoire limité, il convient de dimensionner les composants au plus juste et d’optimiser le développement de la partie logicielle afin d’éviter les surcoûts.
- Puissance de calcul : Il faut avoir la puissance de calcul juste nécessaire pour répondre aux besoins et aux contraintes temporelles de la tâche prédéfinie.
- Temporel : une faible barrière existe entre systèmes embarqués et système temps réels. Il est en effet très fréquent que les systèmes embarqués soient composés d’un système d’exploitation temps réel (ROTS), c’est-à-dire un système pour lequel le temps maximum entre un stimulus d’entrée et une réponse de sortie est précisément déterminé.Il permet de faciliter la création de système temps réel et n’a pas nécessairement pour but d’être performant et rapide. Il ne garantit également pas que le résultat final respecte les contraintes temps réel, exigeant le développement correct du logiciel.
- Sécurité: Certains systèmes collectent des centaines de données en permanence qui sont transmises (Radio, LAN, etc.) et peuvent être confidentielles. Un système embarqué peut donc être soumis à une politique de protection des données.
- Fiabilité : Un système embarqué peut être un élément critique d’un système (Ex : Transport de personnes) et ne doit donc jamais tomber en panne ou être défaillant, il est donc parfois nécessaire de faire de la redondance.
Exemple d’architecture de système embarqué :
Selon les systèmes cette architecture peut varier. Il est par exemple possible dans de nombreux systèmes de ne pas trouver de systèmes auxiliaires. En revanche, l’architecture de base est généralement composée d’une unité centrale de traitement (CPU), d’un système d’exploitation qui réside parfois uniquement en un logiciel spécifique, ainsi que de capteurs (capteurs de température, de vibration, accéléromètre, GPS…) et d’actionneurs (moteurs, vérins, buzzer…).
Ici, le fonctionnement de notre système peut se résumer ainsi :
- Réception des informations depuis l’environnement extérieur à travers les différents capteurs.
- Numérisation des données capteurs pour un traitement de l’information en temps réel par l’ensemble CPU, ASIC et systèmes auxiliaires via le logiciel embarqué.
- Le résultat du traitement effectué crée une commande qui est envoyée sur les actionneurs (par exemple les moteurs) pour ainsi modifier l’environnement extérieur.
Quels sont les compétences nécessaires d’un ingénieur système embarqué ?
Un ingénieur en système embarqué doit connaitre le langage de programmation C ainsi que le C++ et avoir une connaissance des différentes architectures qui mettent en œuvre des microprocesseurs. Il doit également avoir une bonne connaissance de l’aspect matériel (composants / cartes électroniques) afin de modifier une certaine expertise dans ce domaine.
Conclusion
Pour résumer, les systèmes embarqués sont de nos jours largement utilisés dans de multiples domaines d’applications. Leur rôle est d’exercer une tâche précise de manière autonome, sans intervention humaine (car impossible ou trop risqué, par exemple). Souvent en temps réel, le système possède également de nombreuses autres contraintes : Espace mémoire, Sécurité, Puissance CPU, Autonomie, dimensions physiques …
Ils sont dans la majeure partie du temps composés de :
- Capteurs qui relèvent des informations de l’environnement extérieur.
- Systèmes de traitement de l’information à base de microprocesseurs, microcontrôleurs et/ou ASIC dans lequel se trouve la partie logicielle (généralement temps réel).
- Actionneurs qui permettent de retransmettre dans l’environnement extérieur les décisions prises par la partie logicielle.
Un ingénieur en système embarqué doit avoir une double compétence en électronique et en logiciel, où il doit maitriser les langages de programmation C et C++.