Structure des systèmes programmables

Documents pareils
Ordinateurs, Structure et Applications

Les avantages de la virtualisation sont multiples. On peut citer:

Concept de machine virtuelle

Systèmes embarqués D.Rossier

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Conception de circuits numériques et architecture des ordinateurs

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

Naissance d'un REPTAR

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

Programmation C. Apprendre à développer des programmes simples dans le langage C

La technologie Java Card TM

A -Systèmes de fichiers 1 - FAT vs NTFS

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Temps Réel. Jérôme Pouiller Septembre 2011

Compilation (INF 564)

Chapitre 4 : Les mémoires

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11)

Architecture ordinateur. Organisation mémoire et Entrées/Sorties

Tutorial uclinux ARM7 Development Starter Kit. Pragmatec Produits et services dédiés aux systèmes embarqués. uclinux - Mise en oeuvre

EX4C Systèmes d exploitation. Séance 14 Structure des stockages de masse

Leçon 1 : Les principaux composants d un ordinateur

Cours 3 : L'ordinateur

machine cible machine hôte architecture cible différente de la machine hôte

Exécution des instructions machine

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

CH.3 SYSTÈMES D'EXPLOITATION

TD Architecture des ordinateurs. Jean-Luc Dekeyser

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Virtualisation CITRIX, MICROSOFT, VMWARE OLIVIER D.

On distingue deux grandes catégories de mémoires : mémoire centrale (appelée également mémoire interne)

Cours Informatique 1. Monsieur SADOUNI Salheddine

PIC EVAL Dev Board PIC18F97J60

IV- Comment fonctionne un ordinateur?

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

Architecture des ordinateurs

Conception de circuits numériques et architecture des ordinateurs

CQP 112 Introduc/on à la programma/on. Thème 2 : Architecture d un système informa/que. Département d informa/que

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007

Traitement de données

TAI049 Utiliser la virtualisation en assistance et en dépannage informatique TABLE DES MATIERES

GESTION DE LA MEMOIRE

Ordinateurs, Structure et Applications

Serveur Lynx CALLEO Application 2240S Fiches Technique

Linux embarqué: une alternative à Windows CE?

Le Network File System de Sun (NFS)

Serveur Lynx CALLEO Application 2240 Fiches Technique

Structure et fonctionnement d'un ordinateur : hardware

Rappels d architecture

Installation de ndv 5

EN Télécom & Réseau S Utiliser VMWARE

REALISATION d'un. ORDONNANCEUR à ECHEANCES

TD 1 - Installation de système UNIX, partitionnement

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Accéder à ZeCoffre via FTP

Éléments d'architecture des ordinateurs

VMware ESX/ESXi. 1. Les composants d ESX. VMware ESX4 est le cœur de l infrastructure vsphere 4.

SERVEUR LYNX CALLEO DATACENTER 2460

HP 600PD TWR i G 4.0G 39 PC

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

ST50 Projet de fin d études Noyau Linux et multi-processeur pour une plateforme embarquée

Atelier : Virtualisation avec Xen

Matériel & Logiciels (Hardware & Software)

Catalogue des stages Ercom 2013

Session 8: Android File System

Introduction aux systèmes temps réel. Iulian Ober IRIT

Contraintes, particularités. 1. Généralités Gestion de la mémoire a. Type des variables et constantes... 2

Chapitre I Notions de base et outils de travail

Comment installer la configuration des salles sur son ordinateur personnel?

Structure d un programme

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

EN Télécom & Réseau S Utiliser VMWARE

Systèmes Embarqués Libres

Exécutif temps réel Pierre-Yves Duval (cppm)

Windows XP niveau 2. D. Hourquin, Médiapôle St Ouen l'aumône

Croisière au cœur d un OS Étape 4 : Mise en place de la pagination

Alexandre Buge Epitech 5 Promo Soutenance de stage du 01/03/2004 au 31/08/2004

ESXi: Occupation RAM avec VM_Windows et VM_Linux. R. Babel, A. Ouadahi April 10, 2011

Eclipse atelier Java

Manuel de l utilitaire Computer Setup (F10) HP Compaq Business Desktops Modèles d220 et d230

A propos de la sécurité des environnements virtuels

Démarrage à partir du réseau

Sécurité Informatique

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes

LE MICRO ORDINATEUR. Introduction Architecture Les supports amovibles Les composants Le système d exploitation Les portables

Plan de la conférence. Virtualization. Définition. Historique. Technique. Abstraction matérielle

<Insert Picture Here> Solaris pour la base de donnés Oracle

Systèmes d exploitation

Notions d IPMI et retour. Ecole d électronique numérique Fréjus 28 novembre 2012 Nicolas LETENDRE

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq

Comment travailler avec les logiciels Open Source

Cloner nativement Windows 8.x (mode EFI)

FOG : Free Open-Source Ghost. Solution libre de clonage et de déploiement de systèmes d'exploitation.

Procédure d installation pour WinEUR PROCÉDURE D INSTALLATION POUR WINEUR. Copyright GIT SA 2015 Page 1/16

SGM. Master S.T.S. mention informatique, première année. Isabelle Puaut. Septembre Université de Rennes I - IRISA

À propos de Parallels Desktop 10 pour Mac

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

et dépannage de PC Configuration Sophie Lange Guide de formation avec exercices pratiques Préparation à la certification A+

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Derrière toi Une machine virtuelle!

Transcription:

Structure des systèmes programmables Bonjour systèmes embarqués Alexis Polti

Licence de droits d'usage Contexte académique } sans modification Par le téléchargement ou la consultation de ce document, l utilisateur accepte la licence d utilisation qui y est attachée, telle que détaillée dans les dispositions suivantes, et s engage à la respecter intégralement. La licence confère à l'utilisateur un droit d'usage sur le document consulté ou téléchargé, totalement ou en partie, dans les conditions définies ci-après, et à l exclusion de toute utilisation commerciale. Le droit d usage défini par la licence autorise un usage dans un cadre académique, par un utilisateur donnant des cours dans un établissement d enseignement secondaire ou supérieur et à l exclusion expresse des formations commerciales et notamment de formation continue. Ce droit comprend : le droit de reproduire tout ou partie du document sur support informatique ou papier, le droit de diffuser tout ou partie du document à destination des élèves ou étudiants. Aucune modification du document dans son contenu, sa forme ou sa présentation n est autorisé. Les mentions relatives à la source du document et/ou à son auteur doivent être conservées dans leur intégralité. Le droit d usage défini par la licence est personnel, non exclusif et non transmissible. Tout autre usage que ceux prévus par la licence est soumis à autorisation préalable et expresse de l auteur : alexis.polti@telecom-paristech.fr page 2

tl;dr Ce qu'on va apprendre : le vocabulaire et les structures de base des systèmes embarqués, que tout est soit processeur soit mémoire, que code et variables ont généralement deux adresses : LMA et VMA, ce qui se passe avant et après main(), ce que fait un bootloader, les différentes façons de débugger. page 3

Plan Les systèmes à processeur architecture, mapping mémoire modes d'exécution et exceptions types de systèmes : bare metal vs. hosted vie des exécutables bootloaders debug page 4

Architecture globale processeur interface mémoire entrées mémoire réelle sorties page 5

Architecture globale Mémoire «mémoire» = «présentant une interface similaire à celle d'une mémoire» dispositif défini par la sémantique des accès : accès = triplet (type [load / store], adresse, valeur) physiquement mémoire réelle bancs de registres périphériques fonctions virtuelles (bit-banding,...) processeur interface mémoire entrées mémoire réelle sorties page 6

processeur Architecture globale Plan d'adressage mémoire souvent : plusieurs «mémoires» interface mémoire entrées mémoire réelle sorties partage de l'espace mémoire du processeur allocation d'une ou plusieurs plages d'adresses accès : par des lectures / écritures de mots (load / store) définition : «périphérique mappé en mémoire» décodage d'adresse usuellement sur bits de poids fort d'adresse fait par : périphérique éventuellement en partie par bus / NoC facilité par le contrôleur de bus (chip select) possibilité de configuration au vol (ex : PCI) page 7

processeur Architecture globale Plan d'adressage mémoire nécessité d'un plan mémoire (memory map) pour le contrôleur de bus pour le NoC pour le système (bootloader, OS) pour le programmeur interface mémoire entrées mémoire réelle sorties peut dépendre du mode du processeur user / kernel protégé, réel,... page 8

Architecture globale Exemple : ARM Cortex M0+ 0xFFFFFFFF processeur interface mémoire entrées mémoire réelle sorties 0xE00FFFFF ROM Table Reserved 0xE00FF000 Reserved 0xE0042000 0xE0041000 0xE0040000 Reserved Reserved Private Peripheral Bus - Internal 0xE0100000 0xE0000000 0xDFFFFFFF 0xE003FFFF Reserved 0xE000F000 Debug control External Device 1GB 0xE000ED00 0xE000E000 0xE0003000 0xE0002000 NVIC Reserved BPU (not modeled in ISSM) 0xA0000000 0x9FFFFFFF 0xE0001000 DW (not modeled in ISSM) External 1GB Reserved 0xE0000000 0x60000000 0x5FFFFFFF Peripheral 0.5GB 0x40000000 0x3FFFFFFF 0x3FFFFFFF 0x20100000 511MB External SRAM 0.5GB 0x20000000 1MB DTCM 0x20000000 0x1FFFFFFF 0x10010000 0x1000FFFF External ITCM (Upper Alias) Code 0.5GB 0x1FFFFFFF 0x10000000 0x0FFFFFFF External 0x00000000 0x00100000 0x00000000 1MB ITCM (Lower Alias) page 9

processeur Architecture globale Exemple : SH4 interface mémoire entrées mémoire réelle sorties page 10

Architecture globale processeur interface mémoire entrées mémoire réelle sorties Mémoires physiques vive cache, centrale SRAM, (S / DDR-S / DDR2-S / DDR3-S /...) DRAM, rapides morte stockage de masse, bios, configuration Flash, (E)EPROM, (M/P/OTP)ROM, lecture lente, écriture très lente internes ou externes la distinction vive-morte, RAM/ROM, RW/RO est floue... page 11

Pause : les MMU Memory Management Unit gestion de la mémoire : traduction protection (MPU) contrôle de cache CPU adresses virtuelles MMU adresses physiques MEM Quizz : quel est le lien entre MMU / MPU et swap? page 12

processeur Harvard / von Neumann Zoom plusieurs architectures possibles pour chaque architecture, deux définitions interface mémoire entrées mémoire réelle sorties processeur interface mémoire entrées mémoire réelle sorties page 13

processeur Harvard / von Neumann Architecture Von Neumann matériel : un seul chemin de données logiciel : un seul espace mémoire interface mémoire entrées mémoire réelle sorties permet de traiter le code comme des données est-ce bien? goulot d'étranglement : deux cycles pour chaque instructions accédant à des données en mémoire. page 14

processeur Harvard / von Neumann Architecture Harvard matériel : deux chemins de données distincts un pour les instructions un pour les données logiciel : deux espaces mémoire distincts interface mémoire entrées mémoire réelle sorties Problèmes en C : sur les contrôleur où la flash contient le code, et la RAM les données, où stocker les données constantes? comment recopier / modifier des instructions? page 15

processeur Harvard / von Neumann Architecture Harvard unifiée appelée aussi Harvard modifiée prend le meilleur des deux mondes interface mémoire entrées mémoire réelle sorties problèmes : cohérence de cache lors de la manipulation d'instructions performances réduites en cas de cache miss répétés architecture (de loin) la plus répandue! page 16

Où en est-on? Les systèmes à processeur architecture, mapping mémoire modes d'exécution et exceptions types de systèmes : bare metal vs. hosted vie des exécutables bootloaders debug page 17

Modes et exceptions Modes de fonctionnement il existe souvent au moins 2 modes : superviseur utilisateur chaque mode correspond à des ressources propres permet la mise en place de protection pour les OS les ressources propres sont généralement des registres : PC, pointeur de pile, des instructions spéciales Le passage d un mode à un autre s effectue par les exceptions : interruption du flot normal d'exécution. page 18

Modes et exceptions Exceptions : permettent de signaler un événement particulier au processeur pour qu'il arrête son traitement courant et effectue temporairement un traitement spécifique. peuvent être générées : par des instructions spéciales appelées usuellement TRAP, exception logicielle, interruption logicielle permet d'implémenter des appels système à la demande d'un périphérique externe appelé usuellement interruption matérielle (IRQ) par un dysfonctionnement du système (échec d un accès mémoire, instruction non reconnue, ) appelé usuellement exception matérielle page 19

Modes et exceptions Typologie des exceptions synchrone : si elle a toujours lieu au même moment pour un même set de données et la même allocation mémoire. Exemples : divisions par 0, page fault, undefined instruction TRAP asynchrone : si elle n'a pas de relation temporelle avec le programme courant. Exemples : interruptions externes data memory error reset page 20

Modes et exceptions Handlers, vecteurs, table des vecteurs définitions : à chaque exception correspond un code à exécuter appelé handler la première instruction de ce handler est située à une adresse appelée vecteur d'interruption les vecteurs sont souvent regroupés au sein d'une table appelée table des vecteurs d'interruption hard codée / en ROM / en RAM il peut y avoir plusieurs tables (modes, ) pour limiter la taille de la table, certaines interruptions partagent le même vecteur. On parle alors d'interruptions chaînées. page 21

Modes et exceptions Traitement des exceptions page 22

Modes et exceptions Traitement des exceptions selon le type d'exception : retour à l'instruction interrompue (si problème) retour à l'instruction d'après (si pas de problème) en cas de double faute, beaucoup de processeurs se mettent en mode erreur arrêt l'examen des registres permet de savoir ce qui s'est passé certaines architectures autorisent les IRQ préemptibles certaines architectures autorisent les NMI page 23

Où en est-on? Les systèmes à processeur architecture, mapping mémoire modes et exceptions types de systèmes : bare metal vs. hosted vie des exécutables bootloaders debug page 24

Types de systèmes embarqués Types approche minimale : carte nue (bare-metal) approche maximale : hébergé (avec OS / hosted) beaucoup d'approches mixtes entre les deux page 25

Types de systèmes embarqués OS offre un ensemble de services (fonctions) aux exécutables en général, au moins ces services usuels : abstraction des périphériques primitives de synchronisation gestion du temps gestion des tâches gestion de la mémoire gestion des fichiers responsable de l'initialisation complète du matériel charge les exécutables en mémoire et contrôle leur exécution page 26

Types de systèmes embarqués OS peut se présenter comme une bibliothèque normale, linkée avec l'application les services de l'os sont alors des appels de fonction normaux peut être un code indépendant les services de l'os sont alors usuellement appelés par des TRAP (exceptions logicielles) : syscalls dans tous les cas, l'os installe ses propres handlers d'interruption page 27

Types de systèmes embarqués OS : exemples généralistes Linux, xbsd, Solaris Windows OS/2, Plan9, dédiés aux systèmes embarqués Windows Embedded, VxWorks, QNX, Symbian OS, Android, uclinux, FreeRTOS, ChibiOS/RT, ecos, RTEMS, TinyOS, Contiki,... Forth (!) Plus de 900 OS répertoriés sur Wikipedia page 28

Types de systèmes embarqués Bare-metal (free-standing) pas d'os alone in the dark : stress! pas (ou très rarement) de bibliothèques partagées souvent un seul exécutable auto-contenu en charge de la gestion de tout le système différentes fonctionnalités sont à gérer : initialisation fonctionnement mise à jour debug page 29

Où en est-on? Les systèmes à processeur architecture, mapping mémoire modes d'exécution, exceptions types de systèmes : bare metal vs. hosted vie des exécutables bootloaders debug page 30

Vie des exécutables Architecture d'un programme stockage : en ROM, flash, mémoire de masse exécution : selon l'optimisation souhaitée, soit depuis la RAM (optimisation vitesse) soit directement depuis la ROM (économie de RAM) tout ne peut pas être laissé en ROM : exemple : variables séparation données modifiables / non modifiables économiser la place en ROM / mémoire de masse : on ne stocke que le nécessaire (pas la pile, ni BSS) sous forme plus ou moins compacte : formats d'exécutables page 31

Vie des exécutables Code généralement non modifiable si exécuté à partir de la RAM : nécessite souvent une recopie préalable si exécuté directement à partir de la ROM : XIP (execute In Place) problèmes : vecteurs d'interruption, breakpoints, support des bibliothèques, clashs d'adresses, on peut le séparer en différentes sections, certaines XIP, d'autres en RAM... page 32

Vie des exécutables Données modifiables : lors de l'exécution : situées en RAM (par définition) quizz : mais alors quand la RAM n'est pas encore initialisée, on ne peut pas utiliser de variables??? non modifiables (read-only) : lors de l'exécution : situées en ROM ou éventuellement en RAM (avec protection d'accès) quizz : si elles sont non modifiables, pourquoi les mettre en RAM??? problèmes des variables initialisées : avant exécution : stockées en ROM nécessitent une recopie ROM RAM page 33

Vie des exécutables Bilan : différentes parties d'un exécutable Nom Description Stockage À l'exécution TEXT code (à priori non modifiable) en ROM en ROM ou recopié en RAM BSS variables non initialisées ou initialisées à zéro pas stocké créé en RAM DATA variables modifiables initialisées en ROM recopié en RAM RODATA constantes en ROM en ROM ou recopié en RAM Attention : sera complété / modifié / nuancé par la suite!.. page 34

Vie des exécutables Emplacements d'exécution déterminés à la compilation / édition de lien trois possibilités : code fixe code relogeable position-independant code (pic) parfois nécessaire de déplacer certaines parties des exécutables (ROM RAM) avant le lancement du main : qui, quand? Cas usuels extrêmes exemple 1 : système nu (bare-metal), sans MMU, exécutable stocké en ROM, exécuté depuis la RAM ou la ROM exemple 2 : système avec OS et MMU, exécutable stocké sur disque, exécuté depuis la RAM page 35

Vie des exécutables : exemple bare-metal Lancement de l'exécutable stocké en ROM RAM données initialisées RO data ROM reset vector code page 36

Vie des exécutables : exemple bare-metal Lancement de l'exécutable stocké en ROM éventuellement, recopie du code en RAM par exécutable externe (bootloader, ) ou par le code lui-même (crt0.s, ) RAM code relogé données initialisées RO data ROM reset vector code page 37

Vie des exécutables : exemple bare-metal Lancement de l'exécutable stocké en ROM éventuellement, recopie du code en RAM par exécutable externe (bootloader, ) ou par le code lui-même (crt0.s, ) recopie des données en RAM par crt0.s (inséré par la chaîne de compilation) données initialisées relogées code relogé RAM données initialisées RO data ROM reset vector code page 38

Vie des exécutables : exemple bare-metal Lancement de l'exécutable stocké en ROM éventuellement, recopie du code en RAM par exécutable externe (bootloader, ) ou par le code lui-même (crt0.s, ) recopie des données en RAM par crt0.s (inséré par la chaîne de compilation) données initialisées relogées code relogé RAM les données non modifiables sont laissées en ROM données initialisées RO data ROM pas de recopie reset vector code page 39

Vie des exécutables : exemple bare-metal Lancement de l'exécutable stocké en ROM n'existent pas dans le fichier original pile, autres sections éventuellement, recopie du code en RAM par exécutable externe (bootloader, ) ou par le code lui-même (crt0.s, ) recopie des données en RAM par crt0.s (inséré par la chaîne de compilation) BSS données initialisées relogées code relogé RAM les données non modifiables sont laissées en ROM création du BSS, de la pile, par crt0.s données initialisées RO data ROM pas de recopie reset vector code page 40

Vie des exécutables : exemple bare-metal Lancement de l'exécutable stocké en ROM n'existent pas dans le fichier original pile, autres sections éventuellement, recopie du code en RAM par exécutable externe (bootloader, ) ou par le code lui-même (crt0.s, ) recopie des données en RAM par crt0.s (inséré par la chaîne de compilation) BSS données initialisées relogées code relogé RAM les données non modifiables sont laissées en ROM création du BSS, de la pile, par crt0.s saut au main() reset vector données initialisées RO data code ROM pas de recopie page 41

Vie des exécutables Un objet, deux adresses données relogées une adresse en ROM avant recopie une adresse en RAM après recopie code logé en flash et exécuté en RAM une adresse en ROM avant recopie une adresse en RAM après recopie adresse avant recopie : LMA adresse après recopie : VMA Attention : aucun rapport avec les adresses virtuelles de la MMU... le code et les variables peuvent donc avoir deux adresses! page 42

Vie des exécutables : exemple hosted Lancement de l'exécutable stocké sur disque RAM disque page 43

Vie des exécutables : exemple hosted Lancement de l'exécutable stocké sur disque le loader de l'os lit un exécutable depuis le disque et le mappe en RAM directement aux bonnes adresses RAM données initialisées données RO code disque page 44

Vie des exécutables : exemple hosted Lancement de l'exécutable stocké sur disque le loader de l'os lit un exécutable depuis le disque et le mappe en RAM directement aux bonnes adresses création de la pile, du BSS, généralement par le loader très rarement par le crt0.s pile, autres sections BSS données initialisées données RO code RAM disque page 45

Vie des exécutables : exemple hosted Lancement de l'exécutable stocké sur disque le loader de l'os lit un exécutable depuis le disque et le mappe en RAM directement aux bonnes adresses création de la pile, du BSS, généralement par le loader très rarement par le crt0.s saut au main() pile, autres sections BSS données initialisées données RO code RAM disque page 46

Vie des exécutables : exemple hosted Un objet, une adresse la MMU permet de mapper le fichier en mémoire aucune recopie nécessaire dans ce cas, LMA = VMA pile, autres sections BSS RAM généralement, la MMU met aussi en place des protections lors du mapping cas particulier : activation de la MMU avant activation : code exécuté depuis sa LMA après activation : code exécuté depuis sa VMA disque données initialisées données RO code page 47

Pause question piège Attention dans les deux exemples précédents, on a sous-entendu un fait qui n'est pas forcément vérifié : lequel? (indice : on l'a vu en début du cours...) page 48

Où en est-on? Les systèmes à processeur architecture, mapping mémoire modes d'exécution et exceptions types de systèmes : bare metal vs. hosted vie des exécutables bootloaders debug page 49

Boot et bootloaders Séparation des fonctionnalités initialisation bootloader fonctionnement exécutable debug moniteur ou debugger moniteur : reprise de contrôle en cas d'exception debugger : fonctions avancées page 50

Boot et bootloaders Bootloaders premier programme à s'exécuter initialise le matériel prépare un environnement d'exécution correct lance l'exécutable principal éventuellement sur condition peut permettre la mise à jour du programme principal prog 2 prog 1 kernel programme bootloader bootloader page 51

Boot et bootloaders Initialisation typique d'un système configuration du processeur : désactivation des interruptions initialisation des registres de contrôle du processeur initialisation de la RAM configuration du contrôleur RAM mise en place éventuelle d'environnement d'exécution spécifique au langage utilisé (C, Forth,...) : pile(s), BSS,... mise en place des handlers d'interruptions critiques (Sparc) initialisation des périphériques critiques PLL énumération des bus critiques (PCI, AGP, HT,...) IOMMU, contrôleurs de bus contrôleurs de stockage de masse activation des caches configuration MMU, passage en mode virtuel activation des interruptions critiques page 52

Boot et bootloaders Exemple de fonctionnement : boot normal lancement du bootloader initialisation du système attente d'une condition caractère sur port série, bouton poussoir, transfert de l'exécution au programme principal RAM ROM programme reset vector bootloader page 53

Boot et bootloaders Exemple de fonctionnement : mise à jour lancement du bootloader initialisation du système attente d'une condition caractère sur port série, bouton poussoir, récupération du nouveau programme port série, NFS, TFTP, RAM ROM nouveau programme nouveau programme reset vector bootloader page 54

Boot et bootloaders Exemple de fonctionnement : mise à jour lancement du bootloader initialisation du système attente d'une condition caractère sur port série, bouton poussoir, récupération du nouveau programme port série, NFS, TFTP, recopie du nouveau programme en RAM vers l'ancien en ROM / flash RAM ROM reset vector nouveau programme nouveau programme bootloader page 55

Boot et bootloaders Exemple de fonctionnement : boot en RAM lancement du bootloader initialisation du système attente d'une condition caractère sur port série, bouton poussoir, récupération du nouveau programme port série, NFS, transfert de l'exécution au programme en RAM RAM ROM reset vector nouveau programme nouveau programme bootloader page 56

Boot et bootloaders Fonctions additionnelles passage d'arguments / structures de données services à l'exécution (syscalls) fonctions de debug diagnostic examen et manipulation de la mémoire reprise de contrôle sur exception : moniteur page 57

Boot et bootloaders Boot complexes Un démarrage complexe peut être effectué en plusieurs étapes exemple : PC avec GRUB BIOS : exécution commence en 0xFFFF0000 (BIOS) POST chargement du MBR (finit par 0xAA55) et exécution en 0x7C00 MBR (GRUB stage 1) : 512 octets (440 utiles) va chercher un exécutable un peu plus complet (GRUB stage 1.5) à un endroit spécifique du disque, le charge et l'exécute GRUB stage 1.5 : sait lire les systèmes de fichiers charge GRUB stage 2 depuis le système de fichier prévu et le lance GRUB stage 2 : va chercher ses fichiers configuration affiche éventuellement une interface utilisateur va chercher un noyau ou un autre bootloader (généralement propriétaire), le charge en mémoire et l'exécute. page 58

Boot et bootloaders Exemples de bootloaders BIOS des PC complexe, fournit des services basique (INT) ne sait que lire un MBR et l'exécuter U-Boot dédié à l'embarqué configurable et multi-plateforme support RS232 et réseau (Ethernet) permet le reflashage et l'exécution au vol OpenFirmware (IEEE-1275) interpréteur de bytecode basé sur Forth utilisé par Sun, Apple, IBM et la plupart des chipsets non x86 EFI / UEFI page 59

Où en est-on? Les systèmes à processeur architecture, mapping mémoire modes d'exécution et exceptions types de systèmes : bare metal vs. hosted vie des exécutables bootloaders debug page 60

Debug Pourquoi débugger? Règle : un processeur ne "plante" pas! Un processeur : exécute l'instruction située en PC est bloqué en mode erreur, généralement après une double faute (ARM, SPARC, ) En cas de problème, c'est le programme que vous lui avez donné à exécuter qui ne correspond pas à ce que vous avez en tête. page 61

1 er commandement de l'ue À partir de maintenant, un processeur ne plante plus. L'emploi d'un débugger au niveau assembleur pour comprendre ce qui s'est passé doit être un réflexe : exécution pas à pas (en assembleur) examen des registres à chaque step examen de la mémoire à chaque step page 62

Débug Debugger débug local : le debugger s'exécute nativement sur le système utilisation des ressources du système pour interagir avec l'utilisateur débug des applications : ok débug de l'os : difficile débug distant le debugger s'exécute sur une machine hôte communication avec le système à débugger (cible) avec coopération : RS232, Ethernet (stubs, gdbserver, moniteur) sans coopération : JTAG, SWD, BDM, 1Wire, AUD/HUDI,... page 63

Débug JTAG protocole basé sur des registres à décalage interface JTAG : TAP contrôleur TAP machine à 16 états 4 ou 5 signaux TDI TDO TMS TCK [TRST] TDI TMS TCK internal regs circuit numérique Bypass reg IDENT IR TAP controller TDO page 64

Débug Breakpoints logiciels : remplacement d'une instruction assembleur par une TRAP handler spécial pour cette TRAP donne la main à gdb remise en place de l'instruction originelle quizz : peut-on mettre des breakpoints en flash? matériel : comparateur sur PC / data / addr / signaux de contrôle match : arrêt du processeur et communication en JTAG des informations qui ont déclenché l'arrêt inconvénient : ressource limitée! page 65

Debug Carte nue, sans coopération communication très bas niveau avantages : non intrusif possibilité de breakpoints hard / watchpoints inconvénients : moyens de communication spécialisés besoin de sondes spécialisées : JTAG, SWD, système cible mémoire code programme à débugger gdb machine hôte JTAG CPU page 66

Debug Carte nue, avec coopération (stubs) avantages : très peu onéreux (liens standards) facile à mettre en œuvre inconvénients : intrusif : stubs code en RAM les stubs peuvent être implémentés dans un moniteur RS232 Ethernet système cible mémoire stubs code programme à débugger gdb CPU machine hôte page 67

Debug OS : débug distant avantages : très peu onéreux (liens standards) facile à mettre en œuvre peu intrusif inconvénients : nécessite un OS (Linux) moniteur spécialisé : gdbserver RS232 Ethernet système cible programme à débugger gdbserver OS (linux) gdb machine hôte CPU page 68

Debug OS : débug natif avantages : ne coûte rien facile à mettre en œuvre peu intrusif inconvénients : gourmand... nécessite un OS (Linux) et une IHM système cible programme à débugger gdb OS (linux) CPU page 69

Debug Stubs contiennent : handlers spécialisés routines de communication avec gdb «linkés» avec le programme à débugger fournis pour la plupart des processeurs nécessitent souvent des modifications (mineures) page 70

Debug Stubs nécessitent les fonctions suivantes : /* Fonctions à fournir aux stubs */ int getdebugchar(); void putdebugchar(int); void exceptionhandler (int exception_number, void *exception_address); void flush_i_cache(); // sur SPARC seulement fournissent les fonctions suivantes : /* Fonctions fournies par les stubs */ void set_debug_traps(); void breakpoint(); page 71

Debug Stubs : exemple d'utilisation #include <stdlib.h> #include <stdio.h> int main() { // setup stubs set_debug_traps(); breakpoint(); // do real work printf("hello world!\n"); } return EXIT_SUCCESS; CFLAGS += -g hello : stubs.o hello.o page 72

Debug Perdu dans GDB? GDB quick reference card à récupérer sur le site de GDB uniquement! https://sourceware.org/gdb/download/onlinedocs/refcard.pdf.gz Documentation officielle de GDB https://sourceware.org/gdb/download/onlinedocs/gdb/index.html Documentation officielle du mode TUI de GDB https://sourceware.org/gdb/download/onlinedocs/gdb/tui.html Manuel de survie GDB https://sen.enst.fr/elec223/guide-de-survie-gdb page 73

Licence de droits d'usage Contexte académique } sans modification Par le téléchargement ou la consultation de ce document, l utilisateur accepte la licence d utilisation qui y est attachée, telle que détaillée dans les dispositions suivantes, et s engage à la respecter intégralement. La licence confère à l'utilisateur un droit d'usage sur le document consulté ou téléchargé, totalement ou en partie, dans les conditions définies ci-après, et à l exclusion de toute utilisation commerciale. Le droit d usage défini par la licence autorise un usage dans un cadre académique, par un utilisateur donnant des cours dans un établissement d enseignement secondaire ou supérieur et à l exclusion expresse des formations commerciales et notamment de formation continue. Ce droit comprend : le droit de reproduire tout ou partie du document sur support informatique ou papier, le droit de diffuser tout ou partie du document à destination des élèves ou étudiants. Aucune modification du document dans son contenu, sa forme ou sa présentation n est autorisé. Les mentions relatives à la source du document et/ou à son auteur doivent être conservées dans leur intégralité. Le droit d usage défini par la licence est personnel, non exclusif et non transmissible. Tout autre usage que ceux prévus par la licence est soumis à autorisation préalable et expresse de l auteur : alexis.polti@telecom-paristech.fr page 74