Partie 2 — FreeRTOS et mémoire ============================== Dans la première partie, une seule boucle fait tout, et une attente bloque le reste. Avec **FreeRTOS**, le programme se découpe en tâches qui s'exécutent ensemble : un clignotement, la lecture d'un capteur et une liaison série avancent chacun à son rythme. Cette partie aborde aussi ce qui fait la vitesse d'un programme sur un Cortex-M7 : le **DMA**, qui transfère des données sans occuper le processeur, l'**exécution depuis la flash externe**, qui donne de la place au programme mais le ralentit, et les mémoires rapides **ITCM** et **DTCM**, où placer ce qui doit aller vite. Vue d'ensemble : .. list-table:: :header-rows: 1 :widths: 6 44 50 * - TP - Sujet - Ce qu'on apprend * - 1 - Premières tâches - deux clignotements indépendants, l'ordonnanceur, ``osDelay`` * - 2 - Priorités et ordonnancement - préemption, famine, tâche périodique (``osDelayUntil``), pile * - 3 - Communiquer entre tâches - files de messages (bouton → LED), sémaphore donné par une interruption * - 4 - Partager une ressource - mutex sur la liaison série, inversion de priorité * - 5 - Timers logiciels et chien de garde - minuterie, chien de garde qui surveille toutes les tâches * - 6 - Le DMA - émettre sans occuper le processeur, interruption de fin de transfert, mémoires accessibles, cohérence avec le cache de données * - 7 - Un programme en flash externe - chargeur d'amorçage, exécution directe depuis la flash QSPI, script d'édition de liens, coût des défauts de cache * - 8 - Les mémoires ITCM et DTCM - placer le code critique et ses données en mémoire rapide, mesurer le gain * - 9 - Charge du processeur - mesurer ce que coûte chaque tâche, et la charge totale * - 10 - Des tâches pour les capteurs I²C - température et gyroscope à deux rythmes, état partagé et événements, le bus partagé * - 11 - Une tâche pour l'écran SPI - une tâche d'affichage, l'image envoyée par DMA, le double tampon * - 12 - Mini-projet : le tableau de bord - capteurs, écran, actionneurs et surveillance organisés en tâches Les TP 7 et 8 se répondent : le même programme, d'abord exécuté depuis la flash externe, puis avec sa partie critique en ITCM. La différence de cadence se mesure. .. toctree:: :maxdepth: 1 tp01_taches tp02_priorites tp03_communiquer tp04_partager tp05_timers_watchdog tp06_dma tp07_flash_externe tp08_tcm tp09_charge tp10_capteurs_i2c tp11_ecran_spi tp12_mini_projet