UART
The XBox 360 has an UART in the Southbridge.
Registers
To configure the UART, write to register 0x8000 0200 EA00 101C (real mode)
Register value | Configuration |
---|---|
0xE6010000 | 115200,8,N,1 |
0xB2010000 | 38400,8,N,1 |
0x63010000 | 19200,8,N,1 |
To send a byte, do a 32 bit write to 0x8000 0200 EA00 1014. After you sent something to the serial port, the status should be read from 0x8000 0200 EA00 1018.
Sample code
Init UART speed:
li %r7, 0x0200 oris %r7, %r7, 0x8000 sldi %r7, %r7, 32 oris %r7, %r7, 0xEA00 #ori %r7, %r7, 0x101C lis %r8, 0 oris %r8, %r8, 0xE601 # 115200,8,N,1 stw %r8, 0x101C(%r7)
Send char '!' to the serial port (UART):
li %r8, '!' slwi %r8, %r8, 24 stw %r8, 0x1014(%r7) # send the character sync isync 1: lwz %r8, 0x1018(%r7) # wait until character is sent rlwinm. %r8, %r8, 0, 6, 6 beq 1b
Get char from the serial port (UART):
lis %r4, 0x8000 ori %r4, %r4, 0x200 rldicr %r4, %r4, 32,31 oris %r4, %r4, 0xEA00 1: lwz %r8, 0x1018(%r4) rlwinm %r7, %r8, 0,8,5 cmplwi %r7, 0 # check the status of the UART before input bne 1b rlwinm. %r7, %r8, 0,7,7 beq 1b lwz %r3, 0x1010(%r4) # input char from address 8000 0200 EA00 1010 srwi %r3, %r3, 24
Serial Console
The Serial Console can be very useful when debugging the Linux Kernel or diagnosing the Boot Process.
Diagram FAT
Diagram ALL
You can either use the GND pin on the header (might be difficult to solder for the inexperienced) or some alternative GND pin like the one from the Stereo DAC nearby the J2B1 header.
Note that you will probably need a Level Shifter to connect the 3.3V RX/TX pins to your PC Serial Port (which usually uses +/-12V)
The Level Shifter can be either powered from the standby 3.3V on pin 7 (always on) or better from the active 3.3V on pin 8 or from an external power source.
It is also possible to use some cheap cell phone data cables as a PC interface.