Jump to content


Photo

BCM7405 graphics pipeline

BCM7405 framebuffer graphics pipeline

  • Please log in to reply
12 replies to this topic

#1 djod4556

  • Member
  • 2 posts

0
Neutral

Posted 24 April 2014 - 15:19

Hi there !

 

I recently acquired an old BCM97405 development board (same chip as DM500HD and DM800SE) and I'm trying to write a small framebuffer driver for the board. I already get a 3.2 linux kernel for the board but the ethernet driver was missing and there's no clue of any video/framebuffer driver.

 

Does anyone has a link on some repository where there's example of graphic pipeline usage ? How OpenPLI works on those boards ?

 

Thanks for your help !

 

Damien.



Re: BCM7405 graphics pipeline #2 Erik Slagter

  • PLi® Core member
  • 46,951 posts

+541
Excellent

Posted 24 April 2014 - 15:36

Images use closed source drivers for these layers. It's all closed/NDA stuff...


Edited by Erik Slagter, 24 April 2014 - 15:36.

* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.


Re: BCM7405 graphics pipeline #3 djod4556

  • Member
  • 2 posts

0
Neutral

Posted 24 April 2014 - 15:41

Oh crap,

 

It's what I suspected, I assume they are using the /dev/mem to access physical memory and configure/activate/use the video pipeline :(

 

Thanks for the answer :)

 

Dam.



Re: BCM7405 graphics pipeline #4 Erik Slagter

  • PLi® Core member
  • 46,951 posts

+541
Excellent

Posted 24 April 2014 - 15:51

Nope it works different. As the drivers run in kernel space, they can access whatever memory or io they want. Also the drivers have access to memory that even the linux kernel doesn't know of, I suspect it's used for the frame buffer, OSD and (hardware) demuxer buffers.


* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.


Re: BCM7405 graphics pipeline #5 pop_eye

  • Senior Member
  • 240 posts

+9
Neutral

Posted 24 April 2014 - 19:46

Also the drivers have access to memory that even the linux kernel doesn't know of, I suspect it's used for the frame buffer, OSD and (hardware) demuxer buffers.

If the memory allocation is not known by the kernel then how user space drivers are accessing it ?


Edited by pop_eye, 24 April 2014 - 19:50.


Re: BCM7405 graphics pipeline #6 malakudi

  • Senior Member
  • 1,449 posts

+69
Good

Posted 24 April 2014 - 20:31

Images use closed source drivers for these layers. It's all closed/NDA stuff...

 

nexus sdk for bcm7405 has been leaked in the past. Of course it is illegal to distribute it or use it in public images but noone will know if you use it at private project.



Re: BCM7405 graphics pipeline #7 Erik Slagter

  • PLi® Core member
  • 46,951 posts

+541
Excellent

Posted 24 April 2014 - 21:16

Also the drivers have access to memory that even the linux kernel doesn't know of, I suspect it's used for the frame buffer, OSD and (hardware) demuxer buffers.

If the memory allocation is not known by the kernel then how user space drivers are accessing it ?

I am not the expert in this particular case, but in general there are always ways to achieve this, e.g. with an explicit i/o address space, with untranslated memory access (which is possible from within the kernel, so page tables are completely bypassed). This is the strength and also the weakness of unix, a device driver runs inside the kernel and has exactly the same priviledges as the rest of the kernel, so it can really completely trash the computer. On other operating systems often several levels of priviledge are enforced with the kernel.

 

Luckily "user space drivers" (whatever you exactly mean by that) don't have such access.


Edited by Erik Slagter, 24 April 2014 - 21:18.

* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.


Re: BCM7405 graphics pipeline #8 Erik Slagter

  • PLi® Core member
  • 46,951 posts

+541
Excellent

Posted 24 April 2014 - 21:16

Images use closed source drivers for these layers. It's all closed/NDA stuff...

 

nexus sdk for bcm7405 has been leaked in the past. Of course it is illegal to distribute it or use it in public images but noone will know if you use it at private project.

One could at least remove the name "nexus" from the kernel messages (= VU+) :D


* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.


Re: BCM7405 graphics pipeline #9 littlesat

  • PLi® Core member
  • 56,257 posts

+691
Excellent

Posted 24 April 2014 - 21:38

Is that how the non ET boxes get WMV?


WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W


Re: BCM7405 graphics pipeline #10 pop_eye

  • Senior Member
  • 240 posts

+9
Neutral

Posted 25 April 2014 - 00:50

 

Also the drivers have access to memory that even the linux kernel doesn't know of, I suspect it's used for the frame buffer, OSD and (hardware) demuxer buffers.

If the memory allocation is not known by the kernel then how user space drivers are accessing it ?

I am not the expert in this particular case, but in general there are always ways to achieve this, e.g. with an explicit i/o address space, with untranslated memory access (which is possible from within the kernel, so page tables are completely bypassed). This is the strength and also the weakness of unix, a device driver runs inside the kernel and has exactly the same priviledges as the rest of the kernel, so it can really completely trash the computer. On other operating systems often several levels of priviledge are enforced with the kernel.

 

Luckily "user space drivers" (whatever you exactly mean by that) don't have such access.

There is a contradiction somewhere. Because as far as I know all dvb-modules are user space.

The typical dvb-module is loaded after kernel is loaded (or booted).


Edited by pop_eye, 25 April 2014 - 00:53.


Re: BCM7405 graphics pipeline #11 malakudi

  • Senior Member
  • 1,449 posts

+69
Good

Posted 25 April 2014 - 07:37

kernel modules run in kernel space.



Re: BCM7405 graphics pipeline #12 MiLo

  • PLi® Core member
  • 14,045 posts

+298
Excellent

Posted 25 April 2014 - 08:10

If you look at aio-grab you can get some hints as to where things are located in memory.

A big portion of the RAM is assigned to driver/hardware use. It's sometimes still accessible through /dev/mem or a normal iomap by a driver. On many of the chips, the video RAM is not directly addressable by the CPU at all, but can only be accessed via the DMA controller (see also aio-grab source code for that...).

So there are places where even the kernel (drivers, modules) can't reach into.

Reverse-engineering and using "brute force" to find interesting addresses are basically the only way to get to create a frambuffer driver.
Real musicians never die - they just decompose

Re: BCM7405 graphics pipeline #13 pieterg

  • PLi® Core member
  • 32,766 posts

+245
Excellent

Posted 25 April 2014 - 10:35

Regarding the framebuffer access from aio-grab, that only works because the kernel drivers setup a framebuffer, and mapped it at that particular address.

So that won't help if you start from scratch.



Also tagged with one or more of these keywords: BCM7405, framebuffer, graphics, pipeline

1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users