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 :

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.