GPU access or how the architeture of CPU/GPU SoC looks like?


7 posts
by hanzelpeter » Fri Jan 11, 2013 2:02 pm
Hello.

I have been searching on internet for overview of BCM SoC of raspberry pi but can't find something usefull.

I saw that raspberry pi firmware is now open-sourced, but there is still some BLOB as closed source.
And my question is where is this blob?. Also for OpenGL this libGLES is passing commands to GPU and some fimware in GPU is taking this commands and executing them. Can I get access to this firmware? Can this firmware be somehow downloaded and reverse-enginered?

What about BLOB that is loaded at boot of PI?

Thanks.
User avatar
Posts: 60
Joined: Mon Jul 09, 2012 11:56 am
by ghans » Fri Jan 11, 2013 2:31 pm
The RE efforts are discussed outside of this forum AFAIK
for whatever reasons ;-) A search (with google , for example )
on github.com should yield some results. You might want to
consider the license Broadcom ships with the BLOB first though ...

Otherwise , yes this is closed-source.

ghans
• Don't like the board ? Missing features ? Change to the prosilver theme ! You can find it in your settings.
• Don't like to search the forum BEFORE posting 'cos it's useless ? Try googling : yoursearchtermshere site:raspberrypi.org
Posts: 4755
Joined: Mon Dec 12, 2011 8:30 pm
Location: Germany
by hermanhermitage » Sat Jan 12, 2013 2:32 am
hanzelpeter wrote:I have been searching on internet for overview of BCM SoC of raspberry pi but can't find something

I've put relevant public diagrams (from Broadcom's patents) here:
https://github.com/hermanhermitage/vide ... 5-Overview
Will add more information over time. Go up a few levels for more information.

hanzelpeter wrote:I saw that raspberry pi firmware is now open-sourced, but there is still some BLOB as closed source.
And my question is where is this blob?. Also for OpenGL this libGLES is passing commands to GPU and some fimware in GPU is taking this commands and executing them. Can I get access to this firmware? Can this firmware be somehow downloaded and reverse-enginered?

What about BLOB that is loaded at boot of PI?

The Bcm2835 contains a boot loader/rom image that loads bootcode.bin from SD (there are other paths as well).
The Blob is start.elf which contains ThreadX OS and interrupt handlers, services and drivers which run on the VideoCore Scalar+Vector core and expose themselves via a mailbox and bulk data transfer interface to the host CPU (ie ARM v6).
Can be reverse engineered, however a pragmatic approach is to leverage and extend whatever is already there.
Posts: 65
Joined: Sat Jul 07, 2012 11:21 pm
Location: Zero Page
by aaa801 » Mon Jan 14, 2013 8:16 pm
Posts: 427
Joined: Mon Jun 04, 2012 9:06 pm
Location: Berkshire
by DavidS » Tue Jan 15, 2013 10:25 pm
I have very much enjuoyed playing with the VideoCore processors.

I can not find any information on how to get anything out to the disply. Has anyone figured this out yet? If so is there any documentation on this anywhere yet?

With no BOOTCODE.BIN there are no MailBoxes to simplify this.
ARM Assembly Language: For those that want: Simple, Powerful, Easy to learn, and Easy to debug.
User avatar
Posts: 1251
Joined: Thu Dec 15, 2011 6:39 am
Location: USA
by hermanhermitage » Thu Jan 17, 2013 10:30 am
DavidS wrote:I have very much enjuoyed playing with the VideoCore processors.

I can not find any information on how to get anything out to the disply. Has anyone figured this out yet? If so is there any documentation on this anywhere yet?

With no BOOTCODE.BIN there are no MailBoxes to simplify this.

Your best bet may be to use the services exposed already in start.elf or the game stuff in the old loader.bin.
There is a project capturing hardware register traces - but it's fairly greenfield at this stage.
I have static analysis tools than can unfathom these sorts of things, but I've not yet added VC support to my tools.
Posts: 65
Joined: Sat Jul 07, 2012 11:21 pm
Location: Zero Page
by DavidS » Thu Jan 17, 2013 12:11 pm
Ok thank you. i guess I will concentrate on coding on the ARM side for now, and come back to the VideoCore stuff when there is more documentation, or when BroadCom decides to gives us just enough information.

Though as I had said in another thread over a year ago: Once the RPi is out it will not tke long before some one succefully figures out the VideoCore side of programming for the RPi. And despite being told that it is not possible at that time, it seems that I am definately being proven correct on that one.

I wish I had the patience to figure out where the registors are on that side of the chip. I commend those that are undertaking this massive effort.
ARM Assembly Language: For those that want: Simple, Powerful, Easy to learn, and Easy to debug.
User avatar
Posts: 1251
Joined: Thu Dec 15, 2011 6:39 am
Location: USA