Séquence de boot du raspberry pi

Étape 1 : mise sous tension

Les parties impliquées sont

SD Card (partition Linux + partition fat)
SDRAM
SOC

Lors de la mise sous tension seul le GPU est activé il maintient le CTU à l’arrêt la mémoire SD RAM est-elle aussi désactivé le socle contient une ROM dans laquelle le fabricant à enregistré un programme faisant partie de la chaîne de boot. Ce programme est le premier de la chaîne de boot. Il est inaccessible par l’utilisateur et n’est donc pas modifiable. GPU exécute ce premier programme dont le seul rôle est d’accéder à la partition FAT de la Card SD pour charger le fichier bootcode.bin.

Etape 2 : chargement de bootcode.bin

Le fichier bootcode.bin est chargé en mémoire cache L2
Le SDRAM n’est toujours pas activée.
C’est la mémoire cache L2, du GPU, qui est utilisée pour le chargement.

Étape 3 : exécution de bootcode.bin par le GPU

Le GPU exécuté le fichier bootcode.bin.
Le but est de récupérer le programme Start.elf, qui se situe sur le carte SD.
Start.elf est le firmware du GPU
le GPU, sous les ordres de bootcode.bin, active la SDRAM et transféré une copie de Start.elf.
Une fois Start.elf chargé en mémoire, bootcode.bin lui passe le relais.

Étape 4 : exécution de Start.elf par le GPU

Le GPU exécuté maintenant son firmware.
Start.elf, repartit la mémoire entre le GPU et le CPU ARM, en fonction des paramètres de configuration dans le fichier config.txt.
Apres mise en place des zones mémoire, le programme Start.elf transfère le noyau Linux kernel.img dans la partie basse de la mémoire, zone réservée au CPU ARM.
Il lit ensuite le fichier cmdline.txt qui contient les arguments passer au noyau lors de son exécution.

Étape 5 : exécution de kernel.img par le CPU ARM

Avant de devenir simplement le firmware du GPU, dont il assurera dorénavant le fonctionnement en tant que processeur graphique le programme start.elf va encore « réveiller » le CPU ARM, en relâchant le reset qu’il activait depuis la mise sous tension.
Le COU démarre et exécuté le programme kernel.img qui se trouve dans la mémoire. Le noyau se charge et Linux démarre.

Étape 6 : démarrage le Linux

Le noyau ayant démarré, il recherche alors le RFS (Root FIle System.

2 J'aime

Sauf que dans recovery il y a un bootcode.bin mais pas de start.elf, il y aurait donc plusieurs bootcode.bin, certains lance start.elf d’autres recovery.elf, et qui sais, d’autres encore ?