Quiero aprender sobre el BIOS en una placa base Raspberry Pi. ¿Cómo se llama el BIOS? ¿Tiene un nombre específico o simplemente se llama BIOS en una Raspberry Pi?
El BIOS almacena algún software para controlar su PC antes de que arranque (ejemplo: disco duro de configuración, memoria, etc.). El Pi no usa un "BIOS" como en una PC. Simplemente inicializa el chip Broadcom (CPU, caché, GPU) usando el firmware escrito para ese chip y pasa directamente al sistema operativo. El sistema operativo luego detecta el hardware y la memoria ram informada por Broadcom. Esto hace que el arranque sea realmente rápido, pero solo Broadcom sabe cómo depurar o "establecer" propiedades sobre la marcha.
Piotr Kula
Respuestas:
32
El firmware es un código propietario de código cerrado programado en el procesador SoC (Sistema en un Chip), que no puede modificarse. Al encenderse, el firmware iniciará un gestor de arranque en la tarjeta SD. No creo que ningún otro servicio se proporcione a través del firmware SoC, por lo que no es realmente un "BIOS" (Sistema básico de entrada / salida) per se. Después de este punto, todo lo demás proviene de la tarjeta SD.
De acuerdo con la sección de software de la wiki , el orden de arranque es el siguiente:
Cargador de arranque de la primera etapa : se utiliza para montar la partición de arranque FAT32 en la tarjeta SD para poder acceder al cargador de arranque de la segunda etapa. Se programa en el propio SoC durante la fabricación del RPi y no puede ser reprogramado por un usuario.
Cargador de arranque de la segunda etapa (bootcode.bin): se utiliza para recuperar el firmware de la GPU de la tarjeta SD, programar el firmware y luego iniciar la GPU.
Firmware de la GPU (start.elf): una vez cargada, esto permite que la GPU inicie la CPU. Se utiliza un archivo adicional, fixup.dat, para configurar la partición SDRAM entre la GPU y la CPU. En este punto, la CPU se libera del reinicio y la ejecución se transfiere.
Código de usuario : puede ser uno de cualquier número de binarios. Por defecto, es el kernel de Linux (generalmente llamado kernel.img), pero también puede ser otro gestor de arranque (por ejemplo, U-Boot) o una aplicación básica.
Solo agregaría que el cargador de arranque de la primera etapa se graba en una ROM pequeña dentro de SoC. Como se mencionó, solo es responsabilidad cargar bootcode.bindesde la tarjeta SD. Esta es la razón por la cual es imposible arrancar RaspberryPi desde un medio que no sea la tarjeta SD.
Krzysztof Adamski
@TevoD, buena respuesta! Me encantan los detalles completos.
Devyn Collier Johnson
16
@TevoD tiene casi razón en lo que escribió en su respuesta: RaspberryPi está utilizando un binario de firmware de código cerrado como gestor de arranque. La versión actual se puede encontrar aquí . Los dos archivos que componen el firmware son bootcode.bin(cargador de arranque de la segunda etapa) y start.elf("firmware" de la GPU). Lo que es interesante y bastante exclusivo de RaspberryPi es que comienza desde GPU(chip de gráficos) y aquí es donde realmente se ejecuta el gestor de arranque. GPUluego se inicia ARM CPUy ejecuta el kernel de Linux.
GPUSin embargo, después de que se inicia Linux, el código no se descarga. En su lugar, ejecuta su propio sistema operativo simple, llamado VCOS( Video Core Operating System). El kernel de Linux se comunica con sus servicios usando mailbox protocolinterrupciones especiales y (la GPU puede producir interrupciones ARM). Puede leer información sobre el protocolo de buzón utilizado framebufferaquí . GPU es responsable no solo de las cosas gráficas, sino que también controla los relojes y produce audio, por ejemplo. En este sentido, el firmware de GPU puede considerarse algo similar a BIOSlas computadoras de PC normales. Puede encontrar más información sobre esta lectura Controladores de kernel de Linux RaspberryPi.
También puede encontrar más información en esta respuesta.
Buen punto. Estaba considerando que la pregunta del BIOS se refería explícitamente al firmware integrado, no a la tarjeta SD, y agregué el orden de arranque para obtener una respuesta más completa. La suya ciertamente lo toma desde allí. +1
Respuestas:
El firmware es un código propietario de código cerrado programado en el procesador SoC (Sistema en un Chip), que no puede modificarse. Al encenderse, el firmware iniciará un gestor de arranque en la tarjeta SD. No creo que ningún otro servicio se proporcione a través del firmware SoC, por lo que no es realmente un "BIOS" (Sistema básico de entrada / salida) per se. Después de este punto, todo lo demás proviene de la tarjeta SD.
De acuerdo con la sección de software de la wiki , el orden de arranque es el siguiente:
fuente
bootcode.bin
desde la tarjeta SD. Esta es la razón por la cual es imposible arrancar RaspberryPi desde un medio que no sea la tarjeta SD.@TevoD tiene casi razón en lo que escribió en su respuesta: RaspberryPi está utilizando un binario de firmware de código cerrado como gestor de arranque. La versión actual se puede encontrar aquí . Los dos archivos que componen el firmware son
bootcode.bin
(cargador de arranque de la segunda etapa) ystart.elf
("firmware" de la GPU). Lo que es interesante y bastante exclusivo de RaspberryPi es que comienza desdeGPU
(chip de gráficos) y aquí es donde realmente se ejecuta el gestor de arranque.GPU
luego se iniciaARM CPU
y ejecuta el kernel de Linux.GPU
Sin embargo, después de que se inicia Linux, el código no se descarga. En su lugar, ejecuta su propio sistema operativo simple, llamadoVCOS
(Video Core Operating System
). El kernel de Linux se comunica con sus servicios usandomailbox protocol
interrupciones especiales y (la GPU puede producir interrupciones ARM). Puede leer información sobre el protocolo de buzón utilizadoframebuffer
aquí . GPU es responsable no solo de las cosas gráficas, sino que también controla los relojes y produce audio, por ejemplo. En este sentido, el firmware de GPU puede considerarse algo similar aBIOS
las computadoras de PC normales. Puede encontrar más información sobre esta lectura Controladores de kernel de Linux RaspberryPi.También puede encontrar más información en esta respuesta.
fuente