Curious about ee/iop communication in pcsx2
#1
Hi,every one, i am curious about how ee communicates with iop in emulator implememtation. I found that when pcsx2 boots, ee starts to execute bios codes in the first stage. it also loads OSD to the main memory,and irx module to iop, then ee begins to execute OSD(i guess, not sure). So it should exist a kind of method to let ee notice iop to load game elf from iop to main memory through sif. some ps2dev related material documented ee and iop use rpc to communicate with each other, but unfortunately i didn’t find rpc implementation in pcsx2 source code. So how does ee notice iop to load instruction to memory in pcsx2 actually? how ee dose notice iop to load irx modules? How u developers know what bios code is doing? It looks like a black box even i has disassemly the binary code.
Reply

Sponsored links

#2
This is deep stuff. Are you sure you meant to post in the Linux section (as opposed to developer discussion)?
OS: Linux Mint 17.2 64 bit (occasional Antergos/Arch user)
(I am no longer a Windows user)
CPU: Intel Pentium G3258
GPU: Nvidia GTX 650 Ti



Reply
#3
(08-15-2013, 08:52 PM)DaTankAC Wrote: This is deep stuff. Are you sure you meant to post in the Linux section (as opposed to developer discussion)?
Yes, I think so, but i'm not a pcsx2 developer and haven't permission to post a thread there. I'm not sure if here is a better place to post, but i really want to make things clear
Reply
#4
I'm a bit rusty on this but basically it's like this:
We start up the EE and let it execute the code from the BIOS entry point.
Also starting up is the IOP with it's own entry point.
Now the 2 never run in parallel in our implementation, they share time slices.
The EE will run a maximum number cycles before turning over control to IOP, for example.
Now these 2 chips do all the communication and sync code you read about (RPC) without us
knowing or caring about it. This is low level emulation afterall: We just let them do their thing Smile
Reply
#5
Wink 
(08-16-2013, 08:57 AM)rama Wrote: I'm a bit rusty on this but basically it's like this:
We start up the EE and let it execute the code from the BIOS entry point.
Also starting up is the IOP with it's own entry point.
Now the 2 never run in parallel in our implementation, they share time slices.
The EE will run a maximum number cycles before turning over control to IOP, for example.
Now these 2 chips do all the communication and sync code you read about (RPC) without us
knowing or caring about it. This is low level emulation afterall: We just let them do their thing Smile

Thank you Rama, Pcsx2 is a really excellent project. Thank u Pcsx2 develpers!Smile

I found fps2bios directory in pcsx2 project, that's really what I want to get. As you said, EE and IOP execute first few same instructions from BIOS entry point, those instructions identify which cpu is running, by reading id register of CP0, then, they separate, ie.EE jumps to eestart and IOP jumps to iopstart, though they're in the same thread.

I haven't read the communication part of fps2bios,that's the next step I want to do. Maybe I will come back to share something about that. BTW is that a better place for a newbie to discuss technical problem?
Reply
#6
It's fine to talk about it here, I suppose Tongue2
Fps2bios is an ambitious project which we'd all love to see working but there's much to do.
The obvious benefit would be independence from Sony's code and we could ship PCSX2 without the BIOS requirement
but there are other benefits as well. It's very likely that we could cut some corners with a custom routine that
better fits emulation and thus maybe fix a few games or make them run better.
Reply




Users browsing this thread: 1 Guest(s)