Difference between revisions of "PXI"

From DSiBrew
Jump to navigation Jump to search
(added the message structure)
 
(4 intermediate revisions by 3 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 ARM9 and makes requests to the ARM7 to access various hardware (SD, NAND, AES, etc).   Each module is identified by a tag.
+
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: CARD NITROFS
+
{| 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