Editing Hardware Registers
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 500: | Line 500: | ||
| 0xBC100068 || 4 || RW || Bits 0-7: PLL frequency | | 0xBC100068 || 4 || RW || Bits 0-7: PLL frequency | ||
Bits 16-31: unknown, checked against by the | Bits 16-31: unknown, checked against by the PRE-IPL, possibly related to jigkick | ||
|- | |- | ||
| 0xBC100070 || 4 || RW || Set Avc power | | 0xBC100070 || 4 || RW || Set Avc power | ||
Line 1,497: | Line 1,497: | ||
| 0xBD700007 || 1 || RW || Command | | 0xBD700007 || 1 || RW || Command | ||
Cmd 0x08 = reset | |||
Cmd 0x08 = | |||
Cmd 0xA0 = packet | Cmd 0xA0 = packet | ||
Cmd 0xC8 = read | Cmd 0xC8 = read | ||
Line 1,515: | Line 1,505: | ||
Cmd 0xCA = write | Cmd 0xCA = write | ||
Cmd 0xE0 = standby now 1 | |||
Cmd 0xE0 = standby | |||
Cmd 0xE6 = sleep | Cmd 0xE6 = sleep | ||
Line 1,532: | Line 1,512: | ||
Cmd 0xEC = ID ATA | Cmd 0xEC = ID ATA | ||
Cmd 0xEF = set features | Cmd 0xEF = set features | ||
|- | |- | ||
Line 1,800: | Line 1,776: | ||
|} | |} | ||
= 0xBDF00000: | = 0xBDF00000: UMD = | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Address !! Size !! R/W !! Description | ! Address !! Size !! R/W !! Description | ||
|- | |- | ||
| 0xBC900008 || 4 || RW || Reset | | 0xBC900008 || 4 || RW || Reset | ||
Line 1,814: | Line 1,786: | ||
Bit 0 = reset | Bit 0 = reset | ||
|- | |- | ||
| | | 0xBC900010 || 4 || RW || Set command | ||
Value 0x01 = ? | Value 0x01 = ? | ||
Value 0x02 = | Value 0x02 = ? | ||
Value 0x03 = ? | Value 0x03 = ? | ||
Line 1,826: | Line 1,798: | ||
Value 0x05 = write QTGP3 () at the first transfer address | Value 0x05 = write QTGP3 () at the first transfer address | ||
Value 0x08 = | Value 0x08 = find region | ||
Value 0x09 = | Value 0x09 = ? | ||
Value 0x0A = | Value 0x0A = read data | ||
Value 0x0B = ? | Value 0x0B = ? | ||
|- | |- | ||
| 0xBD900014 || 4 || R? || Unknown | | 0xBD900014 || 4 || R? || Unknown | ||
|- | |- | ||
| | | 0xBD900018 || 4 || R? || Unknown flags | ||
|- | |- | ||
| 0xBD90001C || 4 || R? || Unknown | | 0xBD90001C || 4 || R? || Unknown | ||
Line 1,846: | Line 1,816: | ||
| 0xBD900024 || 4 || RW || Clear interrupt? | | 0xBD900024 || 4 || RW || Clear interrupt? | ||
|- | |- | ||
| | | 0xBD900028 || 4 || RW || Enable interrupt? | ||
|- | |- | ||
| 0xBD90002C || 4 || RW || Disable interrupt? | | 0xBD90002C || 4 || RW || Disable interrupt? | ||
|- | |- | ||
| | | 0xBD900030 || 4 || RW || Unknown, set to 4 | ||
|- | |- | ||
| 0xBD900038 || 4 || RW || Unknown, set to 4 | | 0xBD900038 || 4 || RW || Unknown, set to 4 | ||
Line 2,326: | Line 2,296: | ||
Note this is not a hardware register *per se*. | Note this is not a hardware register *per se*. | ||
At boot time, the PSP [[iplloader]] is mapped to read-only 0xBFC00000 then executed. An additional 4096-byte scratchpad-like RAM is accessible at 0xBFD00000 and used as a temporary space to decrypt the IPL blocks. | At boot time, the PSP [[PRE-IPL|iplloader]] is mapped to read-only 0xBFC00000 then executed. An additional 4096-byte scratchpad-like RAM is accessible at 0xBFD00000 and used as a temporary space to decrypt the IPL blocks. | ||
Then, once the CPU is reset (0xBC10004C |= 2), the | Then, once the CPU is reset (0xBC10004C |= 2), the PRE-IPL is unmapped, and the memory which was then at 0xBFD00000 is now mapped at 0xBFC00000 and execution restarts at 0xBFC00000. | ||
On devkit, bloadp is copied to 0xBFE00000 then executed. IPL blocks are usually copied to 0xBFE01000, decrypted in place then executed. | On devkit, bloadp is copied to 0xBFE00000 then executed. IPL blocks are usually copied to 0xBFE01000, decrypted in place then executed. |