Quel BIOS Raspberry Pi utilise-t-il?


29

Je veux en savoir plus sur le BIOS d'une carte mère Raspberry Pi. Comment s'appelle le BIOS? At-il un nom spécifique ou s'appelle-t-il simplement BIOS sur un Raspberry Pi?


2
Le BIOS stocke certains logiciels pour contrôler votre PC avant son démarrage (exemple de configuration du disque dur, de la mémoire, etc.). Le Pi n'utilise pas de "BIOS" comme sur un PC. Il initialise simplement la puce Broadcom (CPU, Cache, GPU) à l'aide d'un micrologiciel écrit pour cette puce et passe directement au système d'exploitation. Le système d'exploitation détecte ensuite le matériel et la RAM signalés par Broadcom. Cela rend le démarrage très rapide, mais seul Broadcom sait comment déboguer ou "définir" les propriétés à la volée.
Piotr Kula

Réponses:


32

Le micrologiciel est un code propriétaire à source fermée programmé dans le processeur SoC (System on a Chip), qui ne peut pas être modifié. À la mise sous tension, le micrologiciel lancera un chargeur de démarrage sur la carte SD. Je ne pense pas que d'autres services soient fournis via le firmware SoC, donc ce n'est pas vraiment un "BIOS" (Basic Input / Output System) en soi. Après ce point, tout le reste provient de la carte SD.

Selon la section des logiciels du wiki , l'ordre de démarrage est le suivant:

  1. Chargeur de démarrage de premier étage - Il est utilisé pour monter la partition de démarrage FAT32 sur la carte SD afin que le chargeur de démarrage de deuxième étage soit accessible. Il est programmé dans le SoC lui-même lors de la fabrication du RPi et ne peut pas être reprogrammé par un utilisateur.
  2. Bootloader de deuxième étape (bootcode.bin) - Il est utilisé pour récupérer le firmware du GPU à partir de la carte SD, programmer le firmware, puis démarrer le GPU.
  3. Firmware du GPU (start.elf) - Une fois chargé, cela permet au GPU de démarrer le CPU. Un fichier supplémentaire, fixup.dat, est utilisé pour configurer la partition SDRAM entre le GPU et le CPU. À ce stade, le CPU est libéré de la réinitialisation et l'exécution est transférée.
  4. Code utilisateur - Il peut s'agir de n'importe quel nombre de binaires. Par défaut, il s'agit du noyau Linux (généralement nommé kernel.img), mais il peut également s'agir d'un autre chargeur de démarrage (par exemple U-Boot) ou d'une application sans système d'exploitation.

7
J'ajouterais seulement que le chargeur de démarrage du premier étage est gravé sur une petite ROM à l'intérieur du SoC. Comme mentionné, sa seule responsabilité est le chargement à bootcode.binpartir de la carte SD. C'est la raison pour laquelle il est impossible de démarrer RaspberryPi à partir d'un support autre que la carte SD.
Krzysztof Adamski

@TevoD, belle réponse! J'adore les détails approfondis.
Devyn Collier Johnson

16

@TevoD a presque raison dans ce qu'il a écrit dans sa réponse - RaspberryPi utilise un firmware binaire à source fermée comme chargeur de démarrage. La version actuelle peut être trouvée ici . Les deux fichiers qui font le firmware sont bootcode.bin(bootloader 2nd stage) et start.elf("firmware" GPU). Ce qui est intéressant et assez unique à RaspberryPi, c'est qu'il commence à partir de GPU(puce graphique) et c'est là que le chargeur de démarrage fonctionne réellement. GPUdémarre ARM CPUet exécute ensuite le noyau Linux.

GPUCependant, après le démarrage de Linux, le code n'est pas déchargé. Au lieu de cela, il exécute son propre système d'exploitation simple, appelé VCOS( Video Core Operating System). Le noyau Linux communique avec ses services en utilisant des mailbox protocolinterruptions spéciales et en utilisant (le GPU peut produire des interruptions ARM). Vous pouvez lire des informations sur le protocole de boîte aux lettres utilisée pour framebuffer ici . Le GPU n'est pas seulement responsable des éléments graphiques - il contrôle également les horloges et produit du son, par exemple. À cet égard, le firmware du GPU peut être considéré comme quelque chose de similaire à celui BIOSdes ordinateurs PC normaux. Vous pouvez trouver plus d'informations sur cette lecture des pilotes du noyau RaspberryPi Linux.

Vous pouvez également trouver plus d'informations dans cette réponse.


Bon point. Je considérais la question du BIOS comme faisant explicitement référence au firmware intégré, pas à la carte SD, et j'ai ajouté l'ordre de démarrage pour une réponse plus complète. Le vôtre le prend certainement à partir de là. +1
Tevo D
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.