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).
Langage de développement C/C++
- Manipuler correctement les types de base de C/C++.
- Manipuler correctement les concepts
static
,const
etconstexpr
. - 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++.