Initializing the PlayStation 2 from cold boot

Discussion in 'Sony Programming and Development' started by sp193, Dec 13, 2017.

  1. ps2netbox

    ps2netbox Spirited Member

    Joined:
    Dec 26, 2017
    Messages:
    116
    Likes Received:
    93
    Code:
     //Transfer to IOP RAM
       while(SifSetDma(&dmat, 1)==0){};
    
    If one does not set any flag of dmat( ie :dmat.attr=0),
    This will be a EE side only .
    But
    Code:
    while(SifRpcGetOtherData(...) < 0){}
    
    need EE and IOP cooperation .

    SifSetDma implied bugs in Sony's EE kernel since RDB run at IOP side only .
     
  2. sp193

    sp193 Site Soldier

    Joined:
    Mar 28, 2012
    Messages:
    2,217
    Likes Received:
    1,052
    Yes. If you are wondering, sceSifRpcGetOtherData uses SIFCMD APIs to request that the IOP-side SIFCMD implementation send a certain number of bytes of data from a certain address.

    Not really. It also involves the EE-side DECI2 manager.
    Even if not, the load on the IOP can cause timing bugs to appear.

    I later on encountered a jump to address 0. The contents of the stack might suggest that last function might have been within DECI2DRU, which is one of the RDB modules.
     
    pool7 and AlGollan84 like this.
  3. sp193

    sp193 Site Soldier

    Joined:
    Mar 28, 2012
    Messages:
    2,217
    Likes Received:
    1,052
    I have made new releases of FMCB with the new libraries, so I know that they are mostly functional.
    During development, I have found some issues and made amendments. I have also updated some of the comments.

    Please refer to these links to get the latest samples (OSD, MBR and kernel patch):
    Only the kernel patches have not been changed, since the last time.

    I did not mention it anywhere, but the hdd0:__system/osd/osdmain.elf target of the MBR is an unofficial target, meant for FHDB.
    The official MBR programs only have 2 targets (either osd/hosdsys.elf or osd100/hosdsys.elf), so I added a third to avoid overwriting any official files.

    EDIT: I've updated the OSD Init example again.
    Forgot to change the SifInitCmd() to SifInitRpc(0) at the start of main().

    EDIT: OSD Initialization package has been replaced. Please refer to the post below.

    EDIT 2018/06/28: OSD Initialization sample package has been replaced. The compiler warnings have been fixed.
     
    Last edited: Jun 28, 2018
    AlGollan84, uyjulian and pool7 like this.
  4. sp193

    sp193 Site Soldier

    Joined:
    Mar 28, 2012
    Messages:
    2,217
    Likes Received:
    1,052
    Please use this updated file for the OSD Initialization sample: (refer to the previous post)
    The post above has been updated.

    For some reason, I took an older archive and uploaded it. I was wondering why the incomplete part was entirely missing, since it wasn't even implemented in the old version!
    The comments have been updated and the OSD Configuration code has the "unknowns" named properly.

    This new version has cleaner examples, code and explanations. So sorry for the mix-up.

    EDIT 2018/06/28: OSD Initialization sample package has been replaced. The compiler warnings have been fixed.
     
    Last edited: Jul 7, 2018
    uyjulian likes this.
  5. sp193

    sp193 Site Soldier

    Joined:
    Mar 28, 2012
    Messages:
    2,217
    Likes Received:
    1,052
    kHn, pool7 and uyjulian like this.
  6. sp193

    sp193 Site Soldier

    Joined:
    Mar 28, 2012
    Messages:
    2,217
    Likes Received:
    1,052
    Please use the new MBR sample package: https://www.mediafire.com/file/ikf8hy2y0fs5j8j/[190107]mbr.7z/file

    There was a typo in the shutdown() function, which is used to set the DEV9 hardware into the desired power states. That function was modelled after the code from the Japanese HDD Browser v1.00's MBR, so it used the HDIOC_IDLE code (for the ATA IDLE command). However, I missed out the parameter.

    I also found that Sony changed that behaviour slightly for the PSBBN. On the surface, the documented behaviour remained the same for the three options for HDDUNITPOWER (something similar is used within the MBR):
    • NICHDD: HDD's standby timer will be set to the Sony default of 0xff (21 minutes & 15 seconds).
    • NIC: The HDD unit is put into IDLE state (it is usually still spinning).
    • A blank: The network adaptor is switched off.
    For the "NIC" mode, the HDD was put into IDLE state with the ATA IDLE command, but with a standby timer value of 0. Unfortunately, that also prevented the HDD from ever transitioning into STANDBY state (which could mean a spin down, depending on the HDD).
    With the PSBBN, Sony issued the ATA IDLE IMMEDIATE command instead, which will only set the HDD into IDLE state without changing the standby timer. And so the HDD will allowed to enter STANDBY state after 21 minutes and 15 seconds, as per the Sony default.

    I only checked the Japanese HDD Browser, however. But I doubt Sony would have corrected it for the US HDD Browser releases because they only added the IDLE IMMEDIATE command at SDK release 2.5.
     
    pool7, svotib, krHACKen and 2 others like this.
sonicdude10
Draft saved Draft deleted
Insert every image as a...
  1.  0%

Share This Page