Difference between revisions of "PXI"
Jump to navigation
Jump to search
Hallowizer (talk | contribs) (added the message structure) |
|||
(6 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | PXI is the inter-processor communication interface between the ARM7 and ARM9. Most user code runs on the | + | PXI is the inter-processor communication interface between the ARM7 and ARM9. Most user code runs on the ARM9 and makes requests to the ARM7 to access various hardware (SD, NAND, AES, etc). Each module is identified by a tag. |
+ | == IPC message structure == | ||
+ | IPC messages are stored in a single integer, and are sent to the IPC FIFO. | ||
− | * PXI 0xB: | + | {| class="wikitable" |
+ | ! Bit(s) | ||
+ | ! Description | ||
+ | |- | ||
+ | | 31-6 | ||
+ | | Arguments | ||
+ | |- | ||
+ | | 5 | ||
+ | | No handler (when no handler exists, the message is sent back with this bit enabled) | ||
+ | |- | ||
+ | | 4-0 | ||
+ | | Service | ||
+ | |} | ||
+ | |||
+ | == Known PXI services == | ||
+ | * PXI 0x2: Boot (used by [[boot2]]) | ||
+ | ** subcommand 1: send 8 times to halt | ||
+ | ** subcommand 4: first sync | ||
+ | ** subcommand 5: second sync | ||
+ | ** subcommand 6: third sync | ||
+ | ** subcommand 0xF: used by ARM9 to halt ARM7, but any unknown subcommand can do this | ||
+ | * PXI 0xB: CARD | ||
* PXI 0x13: AES | * PXI 0x13: AES | ||
** subcommand 1,0 | ** subcommand 1,0 | ||
Line 14: | Line 37: | ||
** subcommand 0x0: read | ** subcommand 0x0: read | ||
** subcommand 0x1: write | ** subcommand 0x1: write | ||
+ | ** subcommand 0x3: readdir | ||
** subcommand 0x8: close | ** subcommand 0x8: close | ||
** subcommand 0xD: open | ** subcommand 0xD: open | ||
** subcommand 0xE: seek | ** subcommand 0xE: seek | ||
+ | ** subcommand 0xF: getfilesize | ||
+ | ** subcommand 0x15: createfile | ||
** subcommand 0x15: deletefile | ** subcommand 0x15: deletefile | ||
** subcommand 0x16: renamefile? | ** subcommand 0x16: renamefile? |
Latest revision as of 22:54, 3 September 2022
PXI is the inter-processor communication interface between the ARM7 and ARM9. Most user code runs on the ARM9 and makes requests to the ARM7 to access various hardware (SD, NAND, AES, etc). Each module is identified by a tag.
IPC message structure
IPC messages are stored in a single integer, and are sent to the IPC FIFO.
Bit(s) | Description |
---|---|
31-6 | Arguments |
5 | No handler (when no handler exists, the message is sent back with this bit enabled) |
4-0 | Service |
Known PXI services
- PXI 0x2: Boot (used by boot2)
- subcommand 1: send 8 times to halt
- subcommand 4: first sync
- subcommand 5: second sync
- subcommand 6: third sync
- subcommand 0xF: used by ARM9 to halt ARM7, but any unknown subcommand can do this
- PXI 0xB: CARD
- PXI 0x13: AES
- subcommand 1,0
- subcommand 7,6
- subcommand 0xA, 0
- subcommand 0xA, 1
- subcommand 0xA, 2
- subcommand 0xA, 3
- subcommand 0xA, 4
- PXI 0x14: FATFS
- subcommand 0x0: read
- subcommand 0x1: write
- subcommand 0x3: readdir
- subcommand 0x8: close
- subcommand 0xD: open
- subcommand 0xE: seek
- subcommand 0xF: getfilesize
- subcommand 0x15: createfile
- subcommand 0x15: deletefile
- subcommand 0x16: renamefile?
- subcommand 0x17: getpathinfo
- subcommand 0x19: createdir
- subcommand 0x1f: truncate
- subcommand 0x20: createfile
- PXI 0x13: SEA
- subcommand 1,0