ac6-training, un département d'Ac6 SAS
FR
FrançaisEnglish
 
go-up

ac6 ac6-training Programmation

Programmation


Safety and security

La cybersécurité et la sûreté de fonctionnement avancent ensemble dans les produits connectés et l'IoT industriel. Le Cyber Resilience Act (CRA) européen et des normes telles qu'IEC 62443, IEC 61508 et ISO 26262, aux côtés d'ETSI EN 303 645 et de NIS2, poursuivent un même but : prévenir les dangers, résister aux attaques et garder des équipements fiables pendant toute leur durée de vie.

Les fondeurs et les projets open source livrent déjà l'essentiel des fondations : les chaînes de secure boot (TF-A/U-Boot, HAB/AHAB, SBSFU/TF-M), l'isolation par TrustZone-M et OP-TEE, et les mécanismes de durcissement Linux comme SELinux, AppArmor, dm-verity, IMA, les namespaces et seccomp. Côté sûreté, les règles de codage MISRA et CERT, l'analyse statique, les AMDEC, les watchdogs et les CRC ou ECC détectent les défauts au plus tôt.

Nos formations parcourent tout l'écosystème : analyse de risque et de menace, SBOM et VEX, traitement des vulnérabilités, gestion des clés, mise à jour sécurisée et rollback, durcissement Linux et MCU, partitionnement TrustZone, et cycle de vie de la sûreté avec les preuves attendues par un évaluateur.


Langages

Le langage dans lequel vous écrivez du code embarqué détermine ce que le compilateur peut vérifier pour vous et ce qui n'apparaîtra qu'à l'exécution. Le C porte encore l'essentiel du firmware, le C++ apporte des abstractions sans coût à l'exécution lorsqu'il est bien employé, et Python comme Java ont leur place dans l'outillage et les couches applicatives.

Nos formations couvrent le C pour microcontrôleurs, le C++ classique et moderne jusqu'à C++20, OpenCL pour le calcul parallèle, Python, et Java pour le développement industriel et Android. Chacune part des contraintes de l'embarqué : mémoire limitée, allocation dynamique proscrite, code qui doit rester lisible.

Ce sont les détails qui occupent les formations : les comportements indéfinis et ce que l'optimiseur a le droit d'en faire, les règles d'alignement et d'aliasing, la sémantique de déplacement et le RAII sans allocation dynamique, le coût des templates à la compilation face à celui à l'exécution, et les règles MISRA qui existent parce que ces pièges sont réels.


Méthodes

Au-delà d'une certaine taille, un système embarqué échoue moins à cause d'un code défaillant que de décisions prises sans moyen de les vérifier. La modélisation et l'analyse de sûreté servent à rendre ces décisions vérifiables avant que le matériel ne soit construit.

UML fournit une notation commune pour l'architecture et le comportement temps réel. La sûreté y ajoute les méthodes attendues par la certification : analyse des dangers, AMDEC et arbres de défaillance, traçabilité de l'exigence au test, et les preuves qu'un évaluateur réclame. Aucune ne remplace le jugement d'ingénieur, toutes le rendent inspectable.

Nos formations couvrent l'architecture logicielle avec UML, la modélisation temps réel, et le cycle de vie de la sûreté des systèmes critiques, avec les normes qui l'encadrent et les documents qu'un projet doit produire.


Temps réel

Le temps réel n'est pas une question de vitesse. Il s'agit de garantir qu'une réponse survient dans un délai borné, à chaque fois. Cette contrainte change la façon de découper les tâches, de partager les données entre elles et de traiter les interruptions, et elle se décide avant de figer l'architecture.

Nos formations couvrent les noyaux réellement utilisés : FreeRTOS, Zephyr, Eclipse ThreadX et RT-Thread, ainsi que la programmation multicœur, AUTOSAR et OSEK/VDX pour l'automobile, et les écosystèmes NXP et Nordic. Les travaux pratiques se font sur cartes réelles ou sur cibles simulées.

Les défaillances sont toujours les mêmes : l'inversion de priorité, quand une tâche de faible priorité détient un mutex dont une tâche prioritaire a besoin, des piles dimensionnées à l'estime jusqu'à ce que l'une déborde sur sa voisine, des sections critiques assez longues pour manquer une échéance, et des ISR qui font le travail d'une tâche. Les formations en font le sujet, pas une note de bas de page.


FPGA

Un FPGA contient une logique que vous définissez vous-même et que vous reconfigurez à mesure que le produit évolue. Il répond aux besoins de traitement parallèle, de latence maîtrisée ou d'interfaces qu'aucun processeur du commerce ne propose. Les composants récents associent cette logique à des cœurs ARM.

Nos formations couvrent le VHDL, des bases du langage à la conception avancée, les plateformes AMD Zynq et Altera Cyclone-V, les cœurs Nios et Microblaze, ainsi que le Microchip SmartFusion2. Les travaux pratiques se déroulent sur cartes réelles, avec les outils des fondeurs.

Sous le langage se trouve ce qui décide si une conception tient le timing : franchissement de domaines d'horloge et métastabilité, contraintes de synthèse, partage des ressources entre logique et blocs DSP, et lecture d'un rapport de placement-routage pour trouver où se situe réellement le chemin critique. Les formations couvrent VHDL et SystemVerilog, la vérification UVM, et les flux Vivado et Quartus.