Aujourd’hui, je vous propose un voyage de découverte dans le monde des systèmes embarqués. Sous ce terme se cache une réalité très concrète qui se caractérise par un ensemble matériel et logiciel dédié à une tâche précise, disposant de ressources limitées et fonctionnant de manière autonome en temps réel.
Depuis 2007, le secteur des systèmes embarqués a connu une croissance de 9,9 % de ses effectifs par an. Une croissance qui devrait encore évoluer dans les prochaines années.
On trouve ce genre de systèmes dans de nombreux domaines tels que le :
- Médical (appareils de mesure, scanners, systèmes de surveillance des patients)
- Automobile (régulateur de vitesse, ABS, voiture autonome)
- IoT (montres connectées, lunettes connectées, bracelet intelligent)
- Domotique (système d’alarme, capteurs, réfrigérateur, four, lave-linge connectés, télécommande)
- Multimédia (caméras, drones)
- Usine (bras robotique, système de surveillance)
Par ailleurs l’aéronautique et le ferroviaire constituent les domaines d’application les plus pourvoyeurs d’opportunités, que ce soit pour les éditeurs ou pour les sociétés de services.
On observe également une croissance dans l’utilisation des outils open source dans l’embarqué, surtout pour les plateformes de développement ou de test, et pour les logiciels embarqués de téléphonie mobile.
Qu’est-ce qu’un système embarqué ?
Quand on parle de systèmes embarqués, on parle surtout de programmation embarquée. Il s’agit d’un type spécifique de programmation qui prend en charge la conception d’appareils qui utilisent leur propre système d’exploitation et pas un système d’exploitation traditionnel comme sur un ordinateur.
La programmation embarquée consiste donc à concevoir des logiciels pour des microcontrôleurs qui sont eux-mêmes utilisés dans des appareils autonomes. Je pense par exemple à une voiture autonome, un thermostat connecté (IoT) ou encore un pacemaker de dernière génération.
Généralement, les systèmes embarqués se composent de capteurs capables de collecter des données comme la température ou les coordonnées GPS. Mais également de processeurs et de mémoire dédiés au traitement de l’information et à la prise de décision ainsi que des éléments capables de transcrire matériellement les décisions prises par le logiciel tel qu’un microcontrôleur.
Quelles technologies maîtriser ?
Pour concevoir et créer des systèmes embarqués, vous aurez besoin de plusieurs compétences. Tout d’abord, vous devrez apprendre au minimum le C / C++ et éventuellement le Rust. La compréhension de l’assembleur est également un plus. Certains systèmes embarqués reposent également sur des systèmes GNU/Linux et offrent parfois des interfaces web à l’utilisateur. Avoir une bonne maitrise de Python et de PHP est donc très souvent nécessaire.
Vous l’aurez compris, il faudra être multi-langages, connaître les protocoles comme HTTP ou MQTT, mais également les services IoT proposés par Google Cloud Platform, IBM Watson, Azure et AWS.
Ça c’est pour la partie soft. Maintenant niveau matériel, vous devrez évidemment avoir de bonnes connaissances en électronique : la tension, le courant, la puissance, la résistance, la loi d’Ohms..Etc., mais également savoir lire et analyser les manuels d’utilisation des appareils, les fiches techniques des dispositifs et les schémas des cartes que vous utilisez, ou encore savoir créer des PCB (cartes électroniques) qui correspondent à vos besoins.
Vous devrez également avoir des bases en architecture informatique (bootloader, gestion de la mémoire, RAM, ROM…etc.), en composants comme les résistances, les diodes, les modules radio, Bluetooth… mais également en microcontrôleurs comme les ESP, ARM ou encore Arduino…etc.
Comme votre travail est de faire interagir du logiciel avec du matériel, vous devrez disposer d’outils élémentaires comme un fer à souder (et apprendre à souder évidemment), un multimètre numérique (DMM) et un débogueur matériel / adaptateur JTAG voire un oscilloscope vous seront utiles.
De quelles qualités faire preuve ?
Il est important d’avoir une forte capacité d’apprentissage, car le fonctionnement d’un projet, les tests, ou la réalisation d’une architecture varient souvent d’un projet à l’autre. Vous devrez également faire preuve d’une grande capacité d’analyse et de compréhension des systèmes, avoir de la rigueur et bien sûr être créatif pour relever tous les défis qui se mettront en travers de votre chemin.
Il existe également des formations diplômantes qui vous permettront de devenir ingénieur en systèmes embarqués ou roboticien. Le plus souvent, avant d’intégrer l’une de ces formations, vous devrez au préalable avoir appris le développement logiciel.
Quels sont les métiers porteurs
Si l’on regarde les statistiques de l’OPIEEC, près de 10 % des effectifs de l’embarqué travaillent comme ingénieur en recherche et développement, dans le secteur de l’électrique, de l’électronique ou de la mécanique et presque autant dans les métiers de la conception ou du développement de logiciels. Suivent les chefs de projet, les architectes et les spécialistes test, le métier le moins représenté étant celui de responsable process et méthodes, assurance qualité ou certification.
Le rôle des ingénieurs système embarqués
Armé de ce diplôme, vous deviendrez alors ingénieur en systèmes embarqués. Votre travail consistera alors comprendre le besoin, rédiger les spécifications sur projet et concevoir à la fois une architecture matérielle et logicielle en tenant compte de tous les besoins et de toutes les contraintes, qu’elles soient liées à la sécurité, aux normes, à l’autonomie, aux coûts…etc.
Pour cela, vous devrez faire preuve d’aisance technique, mais également mettre en œuvre des processus d’interaction avec tous les corps de métiers impliqués dans le projet concernant aussi bien le matériel que la mécanique ou les clients applicatifs (application smartphone par exemple).
Les systèmes embarqués sont de plus en plus complexes, faisant appel à des technologies multiples : micro-nano systèmes, molécules-machines intégrés, micro-propulsion, génie logiciel, architecture, maquettes numériques… Aussi, les entreprises recherchent des profils pointus en électronique et en informatique notamment, capables de s’adapter aux évolutions de demain !
Vous devez être au fait des dernières technologies, que ce soit dans les langages de programmation (Java, C, C++…), les plateformes d’exécution (Java ME, Java Card, Android, iOS…), les plateformes embarquées de confiance (cartes à puce, TPM, TEE…) ou les technologies liées aux applications sécurisées (sécurité informatique, cryptographie…).
Les plus pour la partie logicielle : la connaissance des normes (A-SIL, AUTOSAR…), des outils d’intégration sur cible (émulateurs, analyseurs de bus…) et des protocoles de communication (USB, CAN…).
À partir de ce cahier des charges, vous mettrez alors en place l’ensemble de l’environnement technique nécessaire au projet. Vous choisirez les technologies et les langages de programmation qui seront utilisés, mais également les caractéristiques des composants qui formeront le système embarqué.
Vous devrez bien évidemment documenter l’ensemble de votre travail et lorsque le produit sera prêt, vous devrez effectuer des tests unitaires, des tests d’intégration et des tests de sécurité pour valider que l’ensemble du cahier des charges est correctement respecté.
Les entreprises où postuler
Près de 80,000 entreprises sont impliquées dans les systèmes embarqués en France, dont 0,4 % sont des “pure players” (100 % de leur chiffre d’affaires réalisé dans l’embarqué). Les acteurs des systèmes embarqués se partagent entre opérateurs, ensembliers/OEM, fournisseurs de technologies et sociétés de services.
Offres d’emploi dans les ‘Systèmes Embarqués’
Une nouvelle catégorie d’acteurs “Over The Top” (OTT) du type Google et Apple, prend de plus en plus d’importance.
D’après l’OPIEEC, les 10 sociétés qui recherchent le plus de profils dans l’embarqué sont : Alten, Capgemini, Altran, Sopra Group, Orange, Gfi, CGI, Neurones, Ausy, Atos.
Les régions à privilégier
Toujours d’après l’étude de l’OPIEEC, 3 régions sortent du lot :
- l’Ile-de-France, avec le plateau de Saclay notamment,
- le Sud-est (Grenoble et Sophia-Antipolis)
- le Sud-ouest (Bordeaux et Toulouse, tirées par l’aéronautique).
Ces données correspondent d’ailleurs à la répartition géographique des offres proposées dans les systèmes embarqués par l’Apec. On note également un mouvement des acteurs français vers les marchés internationaux, en particulier sur la zone Europe, qui commence à concurrencer les Etats-Unis et l’Asie.
Cette stratégie d’internationalisation se traduit notamment par l’ouverture d’agences et la recherche de partenariats à l’étranger.
Quel diplôme ?
Etudes longues ou courtes, spécialisation ou pas, le choix de cursus est vaste pour les étudiants souhaitant travailler à l’avenir dans les systèmes embarqués.
Le diplôme le plus courant est celui d’ingénieur (informatique industriel, électronique ou télécoms).
D’autres parcours plus spécifiques peuvent aussi plaire à certains employeurs : MC Maintenance des systèmes embarqués de l’automobile, Licence pro Systèmes embarqués et santé, Master Systèmes embarqués et énergie…
Quel CV ?
Pour taper dans l’œil des recruteurs, mieux vaut privilégier le CV par compétences en insistant sur votre expertise dans le domaine des systèmes embarqués : vos connaissances dans les différents langages informatiques et dans les systèmes d’exploitation temps réel…
L’entretien d’embauche
Les entretiens d’embauche ont tendance à être plus conceptuels que les entretiens classiques concernant les développeurs logiciels. Cela s’explique par la nature du sujet et l’empilement des connaissances à avoir pour pouvoir mener à bien ce genre de projet.
On pourrait vous demander par exemple d’expliquer en quoi consistent un héritage, le multithreading, les différences entre un OS classique et un RTOS (Real Time OS), le chargement dynamique en mémoire ou encore les avantages et les inconvénients de l’implémentation de la 5G ou du BLE (Bluetooth Low Energy)… Bref, vous devrez vraiment connaître votre sujet.
On vous fera peut-être même coder un algo pour montrer ce que vous savez faire. Avant de vous lancer directement dans l’écriture du code, interrogez-vous sur le périmètre du problème à résoudre.
- Quel est le type et la taille des données entrantes?
- Comment sont-elles classées?
- Y a-t-il un temps de traitement limité ou une mémoire réduite?
- Y a-t-il des données négatives, en doublon, des valeurs vides ?
- Devrez-vous faire des tests sur les données pour éviter les erreurs ?
Après avoir écrit votre code, relisez-le, analysez tout ce qui entre et qui sort, repassez chaque fonction et chaque étape en revue pour éliminer à la fois les erreurs de syntaxe et les erreurs de logique. Soyez sûr de pouvoir expliquer chaque ligne au recruteur.
Rémunération
Vous évoluez actuellement dans un contexte favorable, les systèmes embarqués constituant le premier marché de l’informatique et de l’électronique. Votre profil a donc de grandes chances d’être convoité. A vous d’en profiter lors de la phase de recrutement pour négocier de bonnes conditions de travail et de rémunération (entre €35k et €70k selon l’expérience).
Conclusion
Vous l’aurez compris, le métier d’ingénieur dans le domaine des systèmes embarqués est passionnant. Mais il nécessite également beaucoup de rigueur, de savoir travailler en équipe et surtout de maitriser un grand nombre de technologies et de langages.
Mais avec la bonne formation, beaucoup de pratique et des projets intéressants, il y a de fortes chances qu’aucune de vos journées de travail ne se ressemble.
Leave a Reply