GPU Firmware Required for Boot?


10 posts
by PehJota » Mon Jan 23, 2012 10:42 pm
Hi,

I'm familiar with the Raspberry Pi's general boot sequence (GPU boots, firmware on SD card is loaded and run on the GPU, and Linux or another kernel is loaded and run on the CPU), and I understand that the proprietary GPU firmware object/blob will be needed at least for most/all hardware accelerated graphics. But will the SoC be able to boot an operating system without the firmware object?

Sorry if this has been answered before; I searched the forums but could not find an answer to this.
Posts: 3
Joined: Mon Jan 23, 2012 10:11 pm
by alexandru.cucu » Mon Jan 23, 2012 11:21 pm
The firmware is in the GPU.

This looks for FAT32 partitions on the SD card and loads the kernel.img file if it finds one.

The proprietary software used for hardware accelerated graphics, video decoding, etc. might me a Linux module (driver) that helps the software talk with the GPU.

I am not sure if there is a public binary driver for the GPU that enables hardware accelerated graphics. And I'm pretty sure there is no complete FLOSS one either...

Someone please correct me if I'm wrong.
https://launchpad.net/~alexandru.cucu
User avatar
Posts: 75
Joined: Mon Sep 05, 2011 6:07 pm
by PehJota » Mon Jan 23, 2012 11:52 pm
Cracknel said:


The firmware is in the GPU.

This looks for FAT32 partitions on the SD card and loads the kernel.img file if it finds one.


I saw some posts on these forums (e.g. this one) that seem to say that the GPU reads the FAT32 filesystem and from it loads a firmware file before reading and branching to kernel.img.  So my question is this: is there a proprietary firmware file that must be stored on the SD card for the Pi to boot, or can the Pi be booted without any proprietary software on the SD card?
Posts: 3
Joined: Mon Jan 23, 2012 10:11 pm
by stormy1 » Tue Jan 24, 2012 3:25 am
PehJota said:

 is there a proprietary firmware file that must be stored on the SD card for the Pi to boot,

Yes.
Posts: 60
Joined: Fri Jan 06, 2012 3:44 am
by Jessie » Tue Jan 24, 2012 6:46 am
There is firmware on the SOC that you will not be able to touch.  It is pre-programed from the factory.  And yes it is required to boot, and this is why the first partition has to be FAT because this is how the firmware is designed.  You only need a FAT partition big enough to hold a bootloader of some type.

From the way I understand it the GPU dosn't even care if the first thing on that FAT partition is Kernel.img it just loads the first thing it finds.
User avatar
Moderator
Moderator
Posts: 1162
Joined: Fri Nov 04, 2011 7:40 pm
by PehJota » Tue Jan 24, 2012 6:31 pm
Jessie said:


There is firmware on the SOC that you will not be able to touch.  It is pre-programed from the factory.  And yes it is required to boot, and this is why the first partition has to be FAT because this is how the firmware is designed.  You only need a FAT partition big enough to hold a bootloader of some type.



If the only unmodifiable firmware is that which is flashed onto the SoC, then that's fine.  My question and concern is whether there is any proprietary firmware file that the SoC must find on the SD card's FAT filesystem for the Pi to boot.
Posts: 3
Joined: Mon Jan 23, 2012 10:11 pm
by Chromatix » Tue Jan 24, 2012 6:44 pm
My understanding is - and I have only stuff from this forum etc. to go on - that the boot process is a multi stage affair:

1) The miniature CPU inside the GPU starts running from a small ROM.  The ARM core is still turned off at this point.

2) The SD card is started up and the GPU firmware is loaded from the first FAT partition.  The GPU's internal CPU switches to running this.

3) The GPU continues to read the first partition of the SD card and loads the Linux kernel (or whatever is masquerading as one) into RAM.

4) The ARM CPU is finally switched on and booted straight into the kernel.  This eventually mounts the other partition(s) on the SD card to use as the root filesystem.

So yes, there is a "binary blob" that has to be present on every R-Pi bootable SD card.
The key to knowledge is not to rely on people to teach you it.
User avatar
Posts: 430
Joined: Mon Jan 02, 2012 7:00 pm
Location: Helsinki
by mkopack » Tue Jan 24, 2012 7:03 pm
Easiest way to think of it is GPU is acting as the BIOS. No BIOS, no bootup... You need that little GPU binary BLOB to bootstrap stuff (much like a BIOS does) and get the rest of the system up and running.
User avatar
Posts: 242
Joined: Mon Nov 07, 2011 8:46 pm
by Jessie » Tue Jan 24, 2012 8:02 pm
PehJota said:


Jessie said:


There is firmware on the SOC that you will not be able to touch.  It is pre-programed from the factory.  And yes it is required to boot, and this is why the first partition has to be FAT because this is how the firmware is designed.  You only need a FAT partition big enough to hold a bootloader of some type.


If the only unmodifiable firmware is that which is flashed onto the SoC, then that's fine.  My question and concern is whether there is any proprietary firmware file that the SoC must find on the SD card's FAT filesystem for the Pi to boot.



No, there is no firmware required to be on the SD card that the SOC needs to boot.  You can make this thing boot whatever and however you want.

The confusion (in this thread) may come from the fact that in order to use hardware accelerated features on the GPU you will need to have it's binary blob somewhere on the SD card and the proper Open (GL, Max) libraries to interface with that binary blob.  Making a simple frame buffer will not reqire this binary blob or these libraries as it can be accessed by the CPU within the SOC.
User avatar
Moderator
Moderator
Posts: 1162
Joined: Fri Nov 04, 2011 7:40 pm
by tufty » Tue Jan 24, 2012 8:15 pm
That"s very much /not/ the understanding that has previously been given, viz:

1 - gpu loads its firmware from sdcard
2 - gpu then fires up the arm
3 - arm loads its kernel from sdcard and starts runing.

Simon.
Posts: 1330
Joined: Sun Sep 11, 2011 2:32 pm