Skip to main content
replaced http://raspberrypi.stackexchange.com/ with https://raspberrypi.stackexchange.com/
Source Link

@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 VCOS (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 thisthis answer.

@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 VCOS (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.

@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 VCOS (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.

added 321 characters in body
Source Link
Krzysztof Adamski
  • 9.6k
  • 1
  • 38
  • 53

@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 bootloaderfirmware 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 VCOS (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 graphicsgraphic 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.

@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 bootloader are bootcode.bin and start.elf. 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 VCOS (Video Core Operating System). Linux kernel communicates with its services using special mailbox protocol. GPU is responsible not only for graphics 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.

@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 VCOS (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.

Source Link
Krzysztof Adamski
  • 9.6k
  • 1
  • 38
  • 53

@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 bootloader are bootcode.bin and start.elf. 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 VCOS (Video Core Operating System). Linux kernel communicates with its services using special mailbox protocol. GPU is responsible not only for graphics 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.