Transcript BOOT LOADER
BOOT LOADER jc/md/lp-01/05 Boot Loader 1 Objectif du chapitre • Introduire la notion de Boot Loader • Donner un aperçu de l’organisation proposée avec Platform Builder • Présenter des variantes utilisables avec une architecture à base de x86 jc/md/lp-01/05 Boot Loader 2 Rôle du Boot Loader • Programme exécuté directement après la mise sous tension de la cible ou sa réinitialisation • Le point d’entrée du code est défini par l’entrée reset de la table des vecteurs • Initialise un minimum la cible • Éventuellement initialise une voie de debug • Charge en mémoire Windows CE, à partir d’un emplacement spécifique jc/md/lp-01/05 Boot Loader 3 BLCOMMON • BLCOMMON : Boot Loader Common Code Library • Ensemble de fonctions standards disponibles avec Windows CE ou préparées spécifiquement pour une plate-forme servant à initialiser une cible • Ces fonctions réalisent des initialisations obligatoires et éventuellement des compléments optionnels jc/md/lp-01/05 Boot Loader 4 Séquence d’initialisation usuelle (1) jc/md/lp-01/05 Boot Loader 5 Séquence d’initialisation usuelle (2) • BootLoaderMain() est appelée à partir de l’exception « reset » • Opère des initialisations obligatoires ou non • Appelle successivement d’autres fonctions complémentaires d’initialisation – OEMDebugInit – OEMPlatformInit • Appelle des fonctions de chargement du noyau pour installer un système dans la cible jc/md/lp-01/05 Boot Loader 6 Séquence d’initialisation usuelle (3) – OEMPreDownLoad – DownLoadImage, qui elle-même fait appel à d’autres fonctions pour le suivi du téléchargement ou la gestion de mémoire flash, etc. – OEMLaunch • Donne le contrôle au système Windows CE chargé En fait, OEMLaunch fait un « PostDownLoad », c’est-à-dire qu’elle réalise quelques opérations finales sur le système chargé puis donne définitivement le contrôle au nouveau système : il n’y aura plus de retour au Boot Loader sauf par reset jc/md/lp-01/05 Boot Loader 7 Boot Loader, fonctions obligatoires • Initialisation du CPU • Initialisation de la mémoire • Initialisation d’autres composants de la cible nécessaires pour transférer l’image du système dans la mémoire de la cible (par exemple, contrôleur éthernet) • Chargement effectif du système dans la mémoire de la cible • Lancement du système chargé jc/md/lp-01/05 Boot Loader 8 Boot Loader, fonctions optionnelles • Implémentation de fonctions de debug de la carte • Implémentation d’un menu de démarrage • Offrir la possibilité de charger le noyau à partir d’emplacement divers • Offrir la possibilité de mettre à jour un noyau • Permettre à l’utilisateur de lancer une série de tests • … jc/md/lp-01/05 Boot Loader 9 Particularités liées au CPU x86 • L’architecture x86 étant très répandue dans le monde PC, nous pouvons réutiliser des logiciels existants pour effectuer une partie du travail • Nous pouvons alors distinguer trois sortes de bootloader : – DOS Boot Loader – BIOS Boot Loader – ROM Boot Loader jc/md/lp-01/05 Boot Loader 10 DOS Boot Loader • Le plus simple à implémenter mais aussi le plus long pour booter • Repose sur un fichier command.com qui contient un système du style MS-DOS • Utilise le BIOS de la cible pour – Lire le périphérique disposant du fichier command.com de la disquette de boot – Gérer un clavier de base – Gérer un écran en mode minimal jc/md/lp-01/05 Boot Loader 11 BIOS Boot Loader • Un peu plus rapide et relativement simple à implémenter. • Il s’agit d’une extension du BIOS de la cible apportant toute la richesse souhaitée. – On ne refait pas tout : il suffit d’écrire le logiciel complémentaire du BIOS en ROM – On installe dans la cible l’extension du BIOS, en général dans une mémoire flash. • Le meilleur compromis entre temps de développement et temps de boot jc/md/lp-01/05 Boot Loader 12 ROM Boot Loader • Le plus long à implémenter – Il faut tout écrire depuis le reset – Difficile et long à programmer puisqu’il faut gérer tout le matériel, les options, les tests, les variantes de configuration, etc. • Temps de boot beaucoup plus faible que dans les autres solutions puisqu’il n’y a que le nécessaire, et que le code est optimisé jc/md/lp-01/05 Boot Loader 13 Conclusion • Nous avons parcouru, sans entrer dans trop de détails, le processus qui permet de passer d’un hardware accompagné d’un simple BIOS, à un système complexe prêt à travailler jc/md/lp-01/05 Boot Loader 14