Quale BIOS utilizza Raspberry Pi?


29

Voglio conoscere il BIOS su una scheda madre Raspberry Pi. Come si chiama il BIOS? Ha un nome specifico o si chiama semplicemente BIOS su un Raspberry Pi?


2
Il BIOS memorizza alcuni software per controllare il tuo PC prima che si avvii (esempio disco fisso, memoria, ecc.). Il Pi non utilizza un "BIOS" come in un PC. Inizializza semplicemente il chip Broadcom (CPU, cache, GPU) utilizzando il firmware scritto per quel chip e passa direttamente al sistema operativo. Il sistema operativo quindi rileva hardware e ram segnalati da Broadcom. Questo rende l'avvio molto veloce ma solo Broadcom sa come eseguire il debug o "impostare" le proprietà al volo.
Piotr Kula,

Risposte:


32

Il firmware è un codice proprietario di origine chiusa programmato nel processore SoC (System on a Chip), che non può essere modificato. All'accensione il firmware avvierà un bootloader sulla scheda SD. Non credo che nessun altro servizio sia fornito attraverso il firmware SoC, quindi non è in realtà un "BIOS" (Basic Input / Output System) di per sé. Dopo questo punto tutto il resto viene dalla scheda SD.

Secondo la sezione software del wiki , l'ordine di avvio è il seguente:

  1. Bootloader del primo stadio : viene utilizzato per montare la partizione di avvio FAT32 sulla scheda SD in modo che sia possibile accedere al bootloader del secondo stadio. È programmato nel SoC stesso durante la produzione di RPi e non può essere riprogrammato da un utente.
  2. Bootloader di secondo stadio (bootcode.bin): viene utilizzato per recuperare il firmware GPU dalla scheda SD, programmare il firmware, quindi avviare la GPU.
  3. Firmware GPU (start.elf) - Una volta caricato, questo consente alla GPU di avviare la CPU. Un file aggiuntivo, fixup.dat, viene utilizzato per configurare la partizione SDRAM tra GPU e CPU. A questo punto, la CPU viene rilasciata dal reset e l'esecuzione viene trasferita.
  4. Codice utente : può essere uno di qualsiasi numero di file binari. Per impostazione predefinita, è il kernel Linux (di solito chiamato kernel.img), ma può anche essere un altro bootloader (ad esempio U-Boot) o un'applicazione bare-bones.

7
Vorrei solo aggiungere che il bootloader di 1 ° stadio viene masterizzato su una piccola ROM all'interno del SoC. Come accennato, la sola responsabilità è il caricamento bootcode.bindalla scheda SD. Questo è il motivo per cui è impossibile avviare RaspberryPi da un supporto diverso dalla scheda SD.
Krzysztof Adamski,

@TevoD, bella risposta! Adoro i dettagli approfonditi.
Devyn Collier Johnson,

16

@TevoD ha quasi ragione in quello che ha scritto nella sua risposta: RaspberryPi utilizza un binario del firmware a sorgente chiuso come bootloader. La versione attuale è disponibile qui . I due file che compongono il firmware sono bootcode.bin(bootloader di 2 ° stadio) e start.elf("firmware" GPU). Ciò che è interessante e abbastanza unico per RaspberryPi è che parte da GPU(chip grafico) ed è qui che viene eseguito effettivamente il bootloader. GPUquindi avvia ARM CPUed esegue il kernel Linux.

Dopo l'avvio di Linux GPU, tuttavia , il codice on non viene scaricato. Invece esegue il proprio SO semplice, chiamato VCOS( Video Core Operating System). Il kernel Linux comunica con i suoi servizi usando speciali mailbox protocole usando interrupt (la GPU può produrre interrupt ARM). Puoi leggere alcune informazioni sul protocollo della cassetta postale utilizzato framebuffer qui . La GPU è responsabile non solo delle cose grafiche, ma controlla anche gli orologi e produce audio, ad esempio. A questo proposito, il firmware GPU può essere considerato qualcosa di simile ai BIOSnormali computer PC. Puoi trovare maggiori informazioni su questa lettura dei driver del kernel Linux RaspberryPi.

Puoi anche trovare ulteriori informazioni in questa risposta.


Buon punto. Stavo considerando che la domanda del BIOS si riferiva esplicitamente al firmware integrato, non alla scheda SD, e ho aggiunto l'ordine di avvio per una risposta più completa. Il tuo lo prende sicuramente da lì. +1
Tevo D,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.