Changes

Jump to navigation Jump to search
1,647 bytes added ,  20:56, 12 February 2021
no edit summary
Line 1: Line 1: −
Ernie is the codename for the Syscon chip. The Syscon is for exemple responsible for handling button input (including power button), reading/writing to non-volatile storage (NVS) for storing system flags (mostly encrypted and signed). For example IDU flag is stored in NVS. Syscon is also responsible for maintaining the physical address to the resume buffer during [[Suspend]]. Communication between [[Kermit]] and Syscon is mainly through SPI (see [[SceSyscon]]) but there are also some GPIO pins connecting the two. The chip model is NEC/Renesas <code>uPD79F0109</code> and is likely custom designed for Sony.  
+
Ernie is the codename for the Syscon chip. The Syscon is for exemple responsible for handling button input (including power button), reading/writing to non-volatile storage (NVS) for storing system flags (mostly encrypted and signed). For example IDU flag is stored in NVS. Syscon is also responsible for maintaining the physical address to the resume buffer during [[Suspend]]. Communication between [[Kermit]] and Syscon is mainly through SPI (see [[SceSyscon]]) but there are also some GPIO pins connecting the two. The chip model is NEC/Renesas <code>uPD79F0109</code> and is likely custom designed for Sony.
    
See also: [[Ernie Secure]]
 
See also: [[Ernie Secure]]
Line 404: Line 404:  
RESP 27  < [4.177586083333333] 0x0000, flags=00, payload=[00 FF 04 00 | ....], chk=0xF6, unk=0x31
 
RESP 27  < [4.177586083333333] 0x0000, flags=00, payload=[00 FF 04 00 | ....], chk=0xF6, unk=0x31
 
</pre>
 
</pre>
 +
 +
= Syscon Volatile Storage =
 +
 +
{| class="wikitable"
 +
|-
 +
! Offset !! Size !! Name !! Comment !! Used by
 +
|-
 +
| 0x0 || 8 || unknown ||  ||
 +
|-
 +
| 0x8 || 4 || unknown || ex: 0x05AC1AF7  || [[SceRtc#sceRtcSetCurrentTickForDriver]]
 +
|-
 +
| 0xC || 4 || resume context physical address || ex: 0x411F1EF0 || second_loader
 +
|-
 +
| 0x10 || 5 || unknown Tick ||  || [[SceRtc#sceRtcSetCurrentTickForDriver]]
 +
|-
 +
| 0x15 || 3 || padding ||  ||
 +
|-
 +
| 0x18 || 5 || Current Secure Tick ||  || [[SceRtc#sceRtcSetCurrentSecureTickForDriver]]
 +
|-
 +
| 0x1D || 5 || Current Network Tick ||  || [[SceRtc#sceRtcSetCurrentNetworkTickForDriver]]
 +
|-
 +
| 0x22 || 5 || unknown Tick || ?Current Debug Secure Tick? || [[SceRtc]]
 +
|-
 +
| 0x27 || 5 || unknown Tick || ?Current Debug Secure Tick? || [[SceRtc#SceRtcForDriver_A7236656]]
 +
|-
 +
| 0x2C || 5 || Current Debug Network Tick ||  || [[SceRtc#sceRtcSetCurrentDebugNetworkTickForDriver]]
 +
|-
 +
| 0x31 || 0x8F || unknown || Maybe reserved. Probably unused. || [[SceRtc#sceRtcSetCurrentTickForDriver]]
 +
|-
 +
| 0xE0 || 0x20 || CP DIP switches ||  || second_loader
 +
|}
 +
 +
== Types ==
 +
 +
<source lang="C">
 +
typedef struct SceRtcSysconTick { // size is 5 bytes
 +
  uint8_t tick[5];
 +
} SceRtcSysconTick;
 +
 +
typedef struct SceSysconVolatileStorage { // size is 0x100 bytes
 +
  uint8_t unk_0[8];
 +
  uint32_t unk_8;
 +
  void *resumeContextPA;
 +
  SceRtcSysconTick unk_10;
 +
  uint8_t padding[3}
 +
  SceRtcSysconTick currentSecureTick;
 +
  SceRtcSysconTick currentNetworkTick;
 +
  SceRtcSysconTick unk_22;
 +
  SceRtcSysconTick unk_27;
 +
  SceRtcSysconTick currentDebugNetworkTick;
 +
  SceRtcSysconTick unk_31;
 +
  SceDIPSW dipsw;
 +
} SceSysconVolatileStorage;
 +
</source>
    
= NVS =
 
= NVS =
Line 410: Line 464:     
On FW 3.60, NVS size is 0xB60 bytes:
 
On FW 3.60, NVS size is 0xB60 bytes:
* Area from 0 to 0x3FF cannot be read using sceSblSsNvsReadForKernel nor written using sceSblSsNvsWriteForKernel. This area is handled by Secure Modules.  
+
* Area from 0 to 0x3FF cannot be read using [[SceSblSsMgr#sceSblNvsReadForKernel]] nor written using [[SceSblSsMgr#sceSblNvsWriteForKernel]]. This area is handled by Secure Modules.  
* Area from 0x400 to 0x75F is handled by NS Kernel SceSblSsMgr.
+
* Area from 0x400 to 0x75F is handled by NS Kernel [[SceSblSsMgr]].
 
* Area from 0x760 to 0xB5F seems to be unused. It is reserved for Test and Tool consoles.
 
* Area from 0x760 to 0xB5F seems to be unused. It is reserved for Test and Tool consoles.
  
6,259

edits

Navigation menu