I am wanting to learn about the BIOS on a Raspberry Pi motherboard. What is the BIOS called? Does it have a specific name or is it just called a BIOS on a Raspberry Pi?
The firmware is closed-source proprietary code programmed into the SoC (System on a Chip) processor, which cannot be modified. Upon power-up the firmware will initiate a bootloader on the SD card. I do not believe that any other services are provided through the SoC firmware, so it is not really a "BIOS" (Basic Input/Output System) per se. After this point everything else comes from the SD card.
- First stage bootloader - This is used to mount the FAT32 boot partition on the SD card so that the second stage bootloader can be accessed. It is programmed into the SoC itself during manufacture of the RPi and cannot be reprogrammed by a user.
- Second stage bootloader (bootcode.bin) - This is used to retrieve the GPU firmware from the SD card, program the firmware, then start the GPU.
- GPU firmware (start.elf) - Once loaded, this allows the GPU to start up the CPU. An additional file, fixup.dat, is used to configure the SDRAM partition between the GPU and the CPU. At this point, the CPU is release from reset and execution is transferred over.
- User code - This can be one of any number of binaries. By default, it is the Linux kernel (usually named kernel.img), but it can also be another bootloader (e.g. U-Boot), or a bare-bones application.
@TevoD is almost right in what he wrote in his answer - RaspberryPi is using closed source firmware binary as a bootloader. The current version can be found here. The two files that makes the firmware are
bootcode.bin (2nd stage bootloader) and
start.elf (GPU "firmware"). What is interesting and quite unique to RaspberryPi is that it starts from
GPU (graphics chip) and this is where bootloader actually runs.
GPU then starts
ARM CPU and runs Linux kernel.
After Linux is started, code on
GPU is not unloaded, however. Instead it runs it's own simple OS, called
Video Core Operating System). Linux kernel communicates with its services using special
mailbox protocol and using interrupts (GPU can produce ARM interrupts). You can read some information about mailbox protocol used for
framebuffer here. GPU is responsible not only for graphic things - it also controls clocks and produces audio, for example. In this regard, GPU firmware can be considered something similar to
BIOS from normal PC computers. You can find more information on this reading RaspberryPi Linux kernel drivers.
You can also find some more information in this answer.