Media Engine vs Graphics Processor

Discuss the development of new homebrew software, tools and libraries.

Moderators: cheriff, TyRaNiD

Post Reply
KPOT0B
Posts: 9
Joined: Thu Mar 09, 2006 6:33 pm

Media Engine vs Graphics Processor

Post by KPOT0B »

Both(?) has MIPS cores.
Flash connected to Graphics Processor. What for?
DDR also connected to Graphics Processor. Reasonable.

Is the Media Engine just slave to Graphics Processor?
Or those are peers?

Where OS is executed? Which chip executes decrypted IPL? Which does decryption?

Do we have dual cpu system or singe processor with co-processor?
User avatar
groepaz
Posts: 305
Joined: Thu Sep 01, 2005 7:44 am
Contact:

Post by groepaz »

there are two cpus, then main cpu which executes the OS (and executes th ipl) and the media engine (ME). the graphics processor (GU) isnt a cpu. both media engine and GU have their local ram. decryption is initiated by the main cpu and handled by "KIRK", the decryption engine.
KPOT0B
Posts: 9
Joined: Thu Mar 09, 2006 6:33 pm

Post by KPOT0B »

According to http://hitmen.c02.at/files/yapspd/index.html

CXD2926 listed as Graphic Processor Chip
CXD1876 as ME

What is actually what? First one has GPU and CPU then? And ME just co-proc?
User avatar
groepaz
Posts: 305
Joined: Thu Sep 01, 2005 7:44 am
Contact:

Post by groepaz »

What is actually what? First one has GPU and CPU then? And ME just co-proc?
ME is a second CPU, not a coprocessor. and what actually is in what chip package is more or less speculation :)
hitchhikr
Posts: 83
Joined: Sat Feb 04, 2006 3:33 pm

Post by hitchhikr »

groepaz: talking about the ME, is there a way to access it from game mode ? I know about the vector address being unreachable from this mode but there must be another way to do it using an already loaded library via a syscall or something ?

Btw: you may want to change the "mov" instruction into "move" in your IDA plugin.
User avatar
groepaz
Posts: 305
Joined: Thu Sep 01, 2005 7:44 am
Contact:

Post by groepaz »

talking about the ME, is there a way to access it from game mode ? I know about the vector address being unreachable from this mode but there must be another way to do it using an already loaded library via a syscall or something ?
as far as i am aware there is no way for the "user" (as in usermode) to upload custom code to the ME.
you may want to change the "mov" instruction into "move" in your IDA plugin.
uhm well, its not a standard instruction anyway :)
Kojima
Posts: 275
Joined: Mon Jun 26, 2006 3:49 am

Post by Kojima »

How far has Media Engine coding got? I saw an old thread and people were pretty excited by running code on it, but has it be refined? Is it safe to code for the me in asm without fear of bricking your psp?
User avatar
groepaz
Posts: 305
Joined: Thu Sep 01, 2005 7:44 am
Contact:

Post by groepaz »

Is it safe to code for the me in asm without fear of bricking your psp?
yes ofcourse, just play around :)
PSP250
Posts: 12
Joined: Sat Nov 19, 2005 2:41 am

Post by PSP250 »

hitchhikr wrote:groepaz: talking about the ME, is there a way to access it from game mode ? I know about the vector address being unreachable from this mode but there must be another way to do it using an already loaded library via a syscall or something ?
You might try to research how the sce(Video|Audio)codec* range of user mode functions work. They seem to be an usermode API layer which interacts with the ME.

Things like sceVideocodecGetEDRAM, sceVideocodecSetMemory and similar seem to make use of the ME to store the "codec program".

Since this thread is from July, I guess someone has already dissected these functions ;)
hitchhikr
Posts: 83
Joined: Sat Feb 04, 2006 3:33 pm

Post by hitchhikr »

Yes the issue has been resolved.
User avatar
groepaz
Posts: 305
Joined: Thu Sep 01, 2005 7:44 am
Contact:

Post by groepaz »

there is also some kind of lowlevel interface which only handles semaphores between the two cores....i *think* part of it can be seen in my irq-handler reversing.
TyRaNiD
Posts: 907
Joined: Sun Jan 18, 2004 12:23 am

Post by TyRaNiD »

Well for pure interest sake, and we know how groepaz likes low level stuff ;)

The RPC works by posting an interrupt to the other processor using the following code:

Code: Select all

 asm("sync\n");
    _sw(1, 0xBC100044);
    asm("sync\n");
If you do that on the SC you interrupt (I think interrupt 31) the ME, on the ME is does the reverse. On the SC side that is wrapped up in sceSysregInterruptToOther.

Now as for semaphores there seems to be a shared lock register at 0xBC100048 which both the ME and the SC can write to and it used as a spin lock. Not tested it properly myself mind but still ;)

Have fun :P
Post Reply