Objectifs de l’examen oral
Les objectifs ci-dessous ne sont pas exhaustifs. Le contenu des notes de cours, les exemples, les exercices et les travaux pratiques font partie intégrante des objectifs de l’examen oral.
Rappel
- Arrivez 5 min. avant votre heure de préparation
- L’examen se fait sans aucune aide : pas de résumé, de calculatrice, de portable, de smartphone, …
- Vous disposez de 15 minutes de préparation sur des feuilles de papier et ensuite de 15 minutes de présentation au professeur et à l’expert.
- Vous devez répondre à deux questions : une question d’ordre théorique et une question d’ordre plus pratique sous forme d’exercice.
Microcontrôleur et périphériques
- Comprendre les caractéristiques principales des interfaces de communication (I2C, SPI, UART, CAN) et être capable de les comparer.
- Comprendre les mécanismes d’interruption et de Timer sous STM32Cube. Être capable de réaliser des programmes simples impliquant ces mécanismes.
- Être capable de programmer des mécanismes GPIO avec STM32Cube.
Modèles de programmation
- Expliquer les principes essentiels et les besoins des systèmes temps-réel.
- Expliquer les principes essentiels du problème de l’ordonnancement.
- Être capable de résoudre un problème d’ordonnancement pour un problème spécifié (tâches spécifiées avec leurs caractéristiques), selon les mécanismes d’ordonnancement statique cyclique et de machines d’état.
- Expliquer les mécanismes permettant la programmation multi-tâches sous FreeRTOS (ordonnancement, Thread, EventQueue, mécanismes de synchronisation et de partages de ressources).
- Programmer une application simple impliquant plusieurs threads et permettant leur synchronisation.
La programmation multi-tâches avec FreeRTOS
- Expliquer les mécanismes permettant la programmation multi-tâches sous FreeRTOS (ordonnancement, Thread, EventQueue, mécanismes de synchronisation et de partages de ressources).
- Programmer une application simple impliquant plusieurs threads et permettant leur synchronisation.
Les systèmes de communication sans fil
- Nommer les critères importants qui interviennent dans le choix d’une technologie sans fil et expliquer leur importance.
- Nommer les technologies sans fil importantes pour l’Internet des Objets et les systèmes embarqués.
- Expliquer les caractéristiques importantes de ces technologies et positionner ces caractéristiques sur des diagrammes.
- Effectuer une analyse simple d’un cahier des charges élémentaire pour le choix d’une technologie sans fil et proposer un choix pour la technologie la plus appropriée en rapport à ce cahier des charges.
Protocoles de communication IP
- Expliquer les critères principaux permettant de différencier les technologies de communication basées sur IP.
- Expliquer les caractéristiques principales des protocoles IP présentés dans le cours et leur modèle de communication.
MQTT
- Expliquer l’architecture d’un système MQTT et la manière dont les messages sont échangés.
- Expliquer le concept des topics et l’appliquer à un cas simple.
- Analyser l’entête fixe d’un paquet MQTT
Chaîne d’outils (Toolchain)
- Expliquer les étapes de la chaîne d’outils pour la compilation d’un programme C/C++.
- Expliquer les arguments principaux de la commande
gcc
pour la compilation d’un programme C/C++. - Comprendre le fonctionnement de l’outil
make
et être capable de l’utiliser pour effecgtuer une tâche simple. - Savoir expliquer le contenu d’un fichier
Makefile
simple.
Mémoire des systèmes embarqués
- Connaitre l’utilisation des différents espaces mémoire d’un microcontrôleur en C/C++ (stack, heap, section
.data
,.bss
,.text
, ` etc.) - Reconnaître les risques liés à l’utilisation de la mémoire dynamique et proposer des solutions.
Les “autres” systèmes embarqués
- Expliquer les caractéristiques principales des systèmes embarqués basés sur des microcontrôleurs et des microprocesseurs.
- Savoir choisir un microcontrôleur pour une application donnée en fonction de ses caractéristiques.
Langage de développement C/C++
- Manipuler correctement les types de base de C/C++.
- Coder des déclarations et des réalisations de classes simples en C++, en mettant en œuvre des mécanismes simples d’héritage.
- Être capable de définir et d’initialiser correctement les attributs d’une classe pour une spécification donnée.
- Analyser un programme C++ pour décrire son comportement et corriger d’éventuelles erreurs/défauts.