Descriptif
Cette unité d'enseignement a pour objectif d'aborder des techniques récentes de développement des systèmes embarqués et des objets connectés. Nous y aborderons notamment :
- L'utilisation de la programmation asynchrone et bas-niveau en Rust pour le développement de systèmes embarqués.
 - La programmation embarquée multi-cœurs et la gestion efficace de l'énergie.
 - La programmation d'enclaves sécurisées protégées matériellement permettant de garantir la confidentialité des secrets vis-à-vis du reste du code, même en cas de défaillance du système, qu'elle soit due à une erreur de programmation ou à la malveillance.
 
Les différents concepts étudiés seront mis en pratique au travers de mini-projets.
Objectifs pédagogiques
Acquis d'apprentissage
À l'issue de l'UE, l'élève sera capable de:
- Développer des applications embarqués en Rust en utilisant des concepts avancés (asynchronisme, macros...)
 - Expliquer les problématiques de cohérence mémoire dans un système multicœur
 - D'utiliser les primitives appropriées (acquire/release, sequential consistency...) pour développer des applications multicœur
 - D'expliquer les objectifs de sécurité de la technologie Trustzone et ses limites
 
Compétences de rattachement (et justification)
- BC8.3 – Concevoir et développer des solutions technologiques en s’appuyant sur un paradigme de programmation spécifique ou en concevant des architectures matérielles et logicielles spécifiques; Justification : Les élèves doivent, à l'aide des connaissances acquises dans cette UE, développer des applications logicielles embarquées en Rust.
 - BC8.4 – Déterminer les phases et procédures de tests techniques et fonctionnels des composants matériels et logiciels pour assurer la fiabilité, la sécurité et/ou la sûreté de fonctionnement des systèmes; Justification : Durant l'UE, un accent particulier est porté sur les phases de test (tests unitaires en particulier) lors des phases de développement.
 - BC7.1 – Identifier, analyser et caractériser les éléments de sécurité permettant d’atteindre un objectif cible (disponibilité, intégrité, authentification, confidentialité, traçabilité) en vue de gérer la sécurité des systèmes numériques; Justification : Les élèves étudient une technologie de sécurité (Trustzone) et identifient ses objectifs et ses limitations.
 
        
    30 heures en présentiel (20 blocs ou créneaux) 
                 réparties en: 
- Travaux Pratiques : 15
 - Contrôle de connaissance : 1.5
 - Leçon : 13.5
 
Diplôme(s) concerné(s)
Pour les étudiants du diplôme Echange international non diplomant
- Outils de développement sous Linux : éditeur, compilateur croisé (gcc), éditeur de liens (ld), gestion de version (git), outils de constructions (make), manipulation de binaires et fichiers ELF (binutils), debugger (gdb).
 - Programmation d’un micro-contrôleur : jeu d’instruction, registres, initialisation des horloges, périphériques internes, interface avec l’extérieur, chargement du micro-logiciel.
 - Programmation en Rust sur micro-contrôleur
 
Pour les étudiants du diplôme Programme de mobilité des établissements français partenaires
- Outils de développement sous Linux : éditeur, compilateur croisé (gcc), éditeur de liens (ld), gestion de version (git), outils de constructions (make), manipulation de binaires et fichiers ELF (binutils), debugger (gdb).
 - Programmation d’un micro-contrôleur : jeu d’instruction, registres, initialisation des horloges, périphériques internes, interface avec l’extérieur, chargement du micro-logiciel.
 - Programmation en Rust sur micro-contrôleur
 
Pour les étudiants du diplôme Diplôme d'ingénieur
4SE02, 4SE03 et 4SE07, soit :
- Outils de développement sous Linux : éditeur, compilateur croisé (gcc), éditeur de liens (ld), gestion de version (git), outils de constructions (make), manipulation de binaires et fichiers ELF (binutils), debugger (gdb).
 - Programmation d’un micro-contrôleur : jeu d’instruction, registres, initialisation des horloges, périphériques internes, interface avec l’extérieur, chargement du micro-logiciel.
 - Programmation en Rust sur micro-contrôleur
 
Format des notes
Numérique sur 20Littérale/grade européenPour les étudiants du diplôme Diplôme d'ingénieur
Vos modalités d'acquisition :
L'évaluation de l'UE se base sur deux éléments :
- les développements réalisés par les élèves durant les TP
 - un examen théorique
 
- Crédits ECTS acquis : 3 ECTS
 - Crédit d'Option 3A acquis : 3
 
La note obtenue rentre dans le calcul de votre GPA.
Pour les étudiants du diplôme Echange international non diplomant
Vos modalités d'acquisition :
L'évaluation de l'UE se base sur deux éléments :
- les développements réalisés par les élèves durant les TP
 - un examen théorique
 
- Crédits ECTS acquis : 3 ECTS
 
La note obtenue rentre dans le calcul de votre GPA.
Pour les étudiants du diplôme Programme de mobilité des établissements français partenaires
Vos modalités d'acquisition :
L'évaluation de l'UE se base sur deux éléments :
- les développements réalisés par les élèves durant les TP
 - un examen théorique
 
La note obtenue rentre dans le calcul de votre GPA.
Programme détaillé
- Rust avancé : constructions idiomatiques, parallélisme, programmation asynchrone, macros, tests
 - Programmation multi-cœurs
 - Trustzone