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