Objectifs pour le premier travail écrit
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 ce premier travail écrit.
Rappel
Sauf expressément autorisé sur la première page de l’examen, vous n’avez droit à aucun document pendant le travail écrit. Vous n’avez pas non plus le droit d’utiliser une calculatrice ou n’importe quel autre appareil électronique.
Microcontrôleur et périphériques
- Comprendre le rôle, l’architecture, et le fonctionnement des GPIOs de la cible.
- Être capable de programmer des mécanismes GPIO avec STM32Cube.
- Être capable de réaliser un pilote orienté objet pour un périphérique GPIO (par exemple une LED ou un bouton)
- Comprendre les mécanismes d’interruption et de Timer sous STM32Cube et FreeRTOS. Être capable de réaliser des programmes simples impliquant ces mécanismes.
- Comprendre les caractéristiques principales des interfaces de communication (I2C, SPI, UART, CAN) et être capable de les comparer.
- Comprendre les techniques permettant d’améliorer l’autonomie de la cible (sleep modes)
- Être capable d’expliquer le rôle d’un watchdog
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.
- Comprendre les bénéfices et les risques (thread safety) des systèmes multitâches.
La programmation multi-tâches avec FreeRTOS
- Expliquer les mécanismes permettant la programmation multitâches sous FreeRTOS (ordonnancement, Thread, mécanismes de synchronisation et de partages de ressources, Queues, Stream Buffers, Message Buffers, Sémaphores, Mutex).
- Programmer une application simple impliquant plusieurs threads et permettant leur synchronisation.
Communication
- Décrire les caractéristiques importantes des technologies de communication sans fil.
- Expliquer les différences entre les technologies de communication basées sur IP.
- Comprendre les critères permettant de faire le choix d’une technologie de communication sans fil.
- Connaître les caractéristiques importantes des protocoles de communication sans fil (portée, topologie, bande passante, consommation, sécurité, etc.).
- Connaître les technologies de base (Bluetooth, Wi-Fi, LoRa, Zigbee, etc.) et leurs caractéristiques.
- Connaître la différence entre le modèle “request/response” et le modèle “publish/subscribe”.
- Expliquer les caractéristiques principales des protocoles IP (HTTP, WebSocket, CoAP, MQTT) et leur modèle de communication.
MQTT
- Comprendre et expliquer l’architecture d’un système MQTT et la manière dont les messages sont échangés.
- Comprendre et expliquer le concept des topics et l’appliquer à un cas simple.
- Comprendre et expliquer les mécanismes permettant de garantir une qualité de service (QOS).
- Comprendre et expliquer le concept de messages conservés.
- Comprendre et expliquer le rôle des dernières volontés et des testaments dans MQTT.
- Analyser l’entête fixe d’un paquet MQTT (y compris le codage et le décodage de la taille des messages).
LoRa et LoRaWAN
- Expliquer les caractéristiques principales de LoRa et de LoRaWAN (fréquence, portée, consommation, …).
- Expliquer le paramètre de “spreading factor” et son impact sur les caractéristiques de LoRa.
- Comprendre et interpréter les valeurs de RSSI et de SNR dans le contexte de LoRa.
- Expliquer les différences entre LoRa et LoRaWAN.
- Expliquer les mécanismes de communication de LoRaWAN (classes A, B, C).
- Expliquer les mécanismes de sécurité de LoRaWAN.
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
gccpour la compilation d’un programme C/C++. - Comprendre le fonctionnement de l’outil
makeet être capable de l’utiliser pour effecgtuer une tâche simple. - Savoir expliquer le contenu d’un fichier
Makefilesimple.
Mémoire des systèmes embarqués
- Comprendre la pyramide de la mémoire (cache, RAM, Flash, etc.) et décrire le lien entre la taille, la vitesse et le coût de ces différentes mémoires.
- Expliquer le rôle et le fonctionnement du MMU (Memory Management Unit) dans un microcontrôleur.
- Expliquer le concept de mémoire virtuelle et les mécanismes de pagination.
- Expliquez pourquoi un MMU est nécessaire pour implémenter un système d’exploitation complet avec des processus isolés.
- Décrire la différence entre un procedssus et un thread, et expliquer comment le MMU contribue à l’isolation entre processus.
- Décrire la mémoire du STM32F412 (Momory map, architecture, Bit banding, etc.).
- 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.
- Expliquer le rôle du MPU (Memory Protection Unit) et les mécanismes de protection de la mémoire.
- Expliquer les différences entre un MMU et un MPU.
Langage de développement C/C++
- Manipuler correctement les types de base de C/C++.
- Manipuler correctement les concepts
static,constetconstexpr. - Coder des déclarations et des réalisations de classes simples en C++, en mettant en œuvre des mécanismes simples d’héritage, de méthodes (pure) virtual et d’interfaces.
- Ê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.
- Être capable de coder des classes simples en C++.