Fiche de révision : Structure des systèmes programmables

Plan du Cours

  1. Architecture globale des systèmes
  2. Plan d’adressage et mémoires
  3. Architectures Harvard et Von Neumann
  4. Modes d’exécution et exceptions
  5. Systèmes bare-metal et hébergés
  6. Sections et chargement des exécutables
  7. Adresses LMA et VMA
  8. Bootloaders et initialisation
  9. Principes et méthodes de débogage
  10. JTAG, breakpoints et stubs

1. Architecture globale des systèmes

Notions clés & Définitions

  • Système programmable : Associe un processeur, des entrées-sorties et une interface mémoire donnant accès à différentes mémoires ou à des périphériques.
  • Accès mémoire : Défini par le triplet composé du type d’accès, de l’adresse et de la valeur, le type étant généralement une lecture load ou une écriture store.
  • Mémoire : Tout dispositif présentant une interface similaire à celle d’une mémoire et dont le comportement est défini par la sémantique de ses accès.

Points essentiels

  • Les éléments physiquement accessibles par l’interface mémoire peuvent être une mémoire réelle, des bancs de registres, des périphériques ou des fonctions virtuelles comme le bit-banding.

2. Plan d’adressage et mémoires

Notions clés & Définitions

  • Périphérique mappé en mémoire : Occupe une ou plusieurs plages d’adresses du processeur et est accessible par des lectures ou des écritures de mots.
  • MMU : Assure notamment la traduction d’adresses, la protection mémoire et le contrôle du cache.

Points essentiels

  • Le décodage d’adresse sélectionne le périphérique correspondant, généralement à partir des bits de poids fort de l’adresse, avec l’aide éventuelle du bus, du réseau sur puce ou d’un contrôleur de bus utilisant un chip select.

📌 Un plan mémoire doit être défini pour le contrôleur de bus, le réseau sur puce, le système comme le bootloader ou l’OS, et le programmeur.

📌 La RAM est généralement vive et rapide, tandis que la ROM ou la mémoire Flash sert au stockage persistant avec une lecture lente et une écriture très lente.

Astuce mémo

RAM vive et rapide, ROM persistante mais lente

3. Architectures Harvard et Von Neumann

★ À maîtriser

📌 L’architecture Von Neumann utilise un seul chemin matériel et un seul espace mémoire pour les instructions et les données.

📌 L’architecture Harvard utilise deux chemins matériels et deux espaces mémoire distincts, l’un pour les instructions et l’autre pour les données.

  • L’architecture Harvard unifiée, aussi appelée Harvard modifiée, combine les avantages des deux architectures et constitue l’architecture de loin la plus répandue.

Compléments

  • L’architecture Von Neumann peut traiter le code comme des données, mais elle crée un goulot d’étranglement pouvant imposer deux cycles pour une instruction accédant à des données en mémoire.

Astuce mémo

Von Neumann partage le chemin ; Harvard sépare code et données

4. Modes d’exécution et exceptions

Notions clés & Définitions

  • Exception : Interrompt temporairement le flot normal d’exécution afin que le processeur traite un événement particulier.
  • Table des vecteurs : Regroupe les adresses des premières instructions des handlers associés aux exceptions et peut être codée en dur, placée en ROM ou placée en RAM.

Points essentiels

📌 Les processeurs disposent souvent d’un mode superviseur et d’un mode utilisateur, chaque mode possédant des ressources propres et permettant une protection utilisée par les systèmes d’exploitation.

  • Une exception peut être déclenchée par une instruction TRAP, par un périphérique externe sous la forme d’une interruption matérielle IRQ, ou par un dysfonctionnement comme un accès mémoire impossible ou une instruction non reconnue.

📌 Une exception synchrone survient au même moment pour un même jeu de données et une même allocation mémoire, tandis qu’une exception asynchrone n’a pas de relation temporelle avec le programme courant.

Astuce mémo

Événement exceptionnel → handler → retour ou mode erreur

5. Systèmes bare-metal et hébergés

Notions clés & Définitions

  • Système d’exploitation : Fournit aux exécutables des services d’abstraction des périphériques, de synchronisation, de gestion du temps, des tâches, de la mémoire et des fichiers.

★ À maîtriser

📌 Un système bare-metal fonctionne sans système d’exploitation et comporte souvent un seul exécutable autocontenu chargé de gérer tout le système.

  • L’OS initialise complètement le matériel, charge les exécutables en mémoire et contrôle leur exécution.

Compléments

  • Un OS peut être lié à l’application comme une bibliothèque, auquel cas ses services sont des appels de fonction normaux, ou fonctionner indépendamment et être appelé par des TRAP, les syscalls.

Astuce mémo

Bare-metal gère tout seul ; hosted délègue à l’OS

6. Sections et chargement des exécutables

Points essentiels

  • Les sections principales d’un exécutable sont :
    • TEXT pour le code
    • BSS pour les variables non initialisées ou initialisées à zéro
    • DATA pour les variables modifiables initialisées
    • RODATA pour les constantes

📌 Les variables modifiables résident en RAM pendant l’exécution, les données initialisées étant recopiées de la ROM vers la RAM avant l’exécution.

  • Le code peut être exécuté directement depuis la ROM selon le mécanisme XIP ou être recopié en RAM pour optimiser la vitesse, tandis que les constantes peuvent rester en ROM ou être recopiées en RAM.

  • 🔄 Avant main(), crt0.s peut :

    1. recopier le code ou les données en RAM
    2. créer la BSS et la pile
    3. transférer l’exécution à main()

Astuce mémo

ROM → RAM → crt0 → main()

7. Adresses LMA et VMA

★ À maîtriser

  • Pour un objet recopié, l’adresse de chargement et l’adresse d’exécution sont notées LMA\mathrm{LMA} et VMA\mathrm{VMA}.

📌 La LMA est l’adresse d’un objet avant sa recopie, tandis que la VMA est son adresse après sa recopie.

Compléments

  • En système hosted avec une MMU, le fichier peut être directement mappé en mémoire, si bien que la LMA est généralement égale à la VMA et qu’aucune recopie n’est nécessaire.

Astuce mémo

LMA avant recopie, VMA après recopie

8. Bootloaders et initialisation

Notions clés & Définitions

  • Bootloader : Le premier programme exécuté ; il initialise le matériel, prépare l’environnement d’exécution, lance l’exécutable principal et peut permettre sa mise à jour.

★ À maîtriser

  • 🔄 Une initialisation typique :

    1. désactive les interruptions
    2. configure le processeur et la RAM
    3. prépare la pile et la BSS
    4. initialise les périphériques critiques
    5. configure éventuellement les caches et la MMU
    6. réactive les interruptions critiques
  • 🔄 Lors d’un boot normal, le bootloader :

    1. initialise le système
    2. attend une condition
    3. transfère l’exécution au programme principal

Compléments

  • U-Boot est un bootloader dédié aux systèmes embarqués, configurable et multiplateforme, qui prend notamment en charge RS232, Ethernet, le reflashage et l’exécution au vol.

Astuce mémo

Initialiser → préparer → charger → transférer

9. Principes et méthodes de débogage

★ À maîtriser

📌 Un processeur exécute l’instruction située à l’adresse du compteur ordinal et ne se bloque généralement en mode erreur qu’après une double faute ; le problème vient donc du programme exécuté plutôt que d’un processeur qui plante.

  • 🔄 Le débogage assembleur utilise :
    1. l’exécution pas à pas
    2. l’examen des registres à chaque étape
    3. l’examen de la mémoire à chaque étape

📌 En débogage local, le debugger s’exécute sur le système cible et utilise ses ressources, tandis qu’en débogage distant il s’exécute sur une machine hôte qui communique avec la cible.

Compléments

  • Le débogage distant utilise :
    • RS232 ou Ethernet avec coopération
    • stubs, gdbserver ou un moniteur
    • JTAG, SWD, BDM, 1Wire ou AUD/HUDI sans coopération

Astuce mémo

Débogage local avec les ressources de la cible, distant depuis une machine hôte

10. JTAG, breakpoints et stubs

Notions clés & Définitions

  • JTAG : Un protocole de débogage fondé sur des registres à décalage et utilisant une interface TAP, dont le contrôleur est une machine à 16 états.

★ À maîtriser

  • 🔄 Un breakpoint logiciel :
    1. remplace une instruction par une TRAP
    2. exécute le handler spécial
    3. rend la main au debugger
    4. remet l’instruction originelle

Compléments

📌 Un breakpoint matériel utilise des comparateurs sur le PC, les données, les adresses ou les signaux de contrôle, mais ses ressources sont limitées.

  • Les stubs contiennent des handlers spécialisés et des routines de communication avec GDB ; ils sont liés au programme à déboguer et fournissent notamment set_debug_traps() et breakpoint().

Tableaux de synthèse

Comparaison des types de systèmes

DimensionBare-metalHosted
Système d’exploitationAbsentPrésent
ChargementBootloader ou programmeLoader de l’OS
Gestion du matérielProgramme principalOS
DébogageSouvent spécialiséDebugger natif ou gdbserver

Comparaison des architectures mémoire

DimensionVon NeumannHarvard
Chemins matérielsUn seulDeux chemins distincts
Espaces mémoireUn seul espaceDeux espaces
Code et donnéesPartageablesSéparés
Problème principalGoulot d’étranglementCohérence et manipulation des instructions

Teste tes connaissances

Teste tes connaissances sur Structure des systèmes programmables avec 31 questions à choix multiples et corrections détaillées.

1. Concernant la structure d’un système programmable, quelles sont les propositions exactes ?

2. À propos d’un accès mémoire, cochez la (les) proposition(s) exacte(s) :

Faire le QCM →

Révisez avec les flashcards

Mémorisez les concepts clés de Structure des systèmes programmables avec 61 flashcards interactives.

Qu'associe un système programmable ?

Un processeur, des entrées-sorties et une interface mémoire.

Quels éléments composent un accès mémoire ?

Le type d’accès, l’adresse et la valeur.

Quels types d'accès mémoire sont généralement utilisés ?

La lecture (load) et l’écriture (store).

Voir les flashcards →

Cours similaires

Crée tes propres fiches de révision

Importe ton cours et l'IA génère fiches, QCM et flashcards en 30 secondes.

Générateur de fiches