The iPhone Wiki is no longer updated. Visit this article on The Apple Wiki for current information. |
Difference between revisions of "S5L8720 (Hardware)"
ChronicDev (talk | contribs) (→OTG-PHYCTRL) |
ChronicDev (talk | contribs) |
||
Line 195: | Line 195: | ||
<td width=50%><center>"Code Waiting"<br><br> |
<td width=50%><center>"Code Waiting"<br><br> |
||
I don't know exactly what this register does, but I named it like this because 0x3FF0000 is written to this register when there is a load address of code to be jumped to in register 0x110</center></td> |
I don't know exactly what this register does, but I named it like this because 0x3FF0000 is written to this register when there is a load address of code to be jumped to in register 0x110</center></td> |
||
+ | </tr> |
||
+ | </table> |
||
+ | |||
+ | ==UART== |
||
+ | <table border=1 width=100%> |
||
+ | <tr> |
||
+ | <td colspan=2><center><b>Base (uart0)</b>: 0x3CC00000<br><b>Base (uart1)</b>: 0x3DB00000<br><b>Base (uart2)</b>: 0x3DC00000<br><b>Base (uart3)</b>: 0x3DD00000<br></center></td> |
||
+ | </tr> |
||
+ | <tr> |
||
+ | <td width=50%><center><b>Register</b></center></td> |
||
+ | <td width=50%><center><b>Description</b></center></td> |
||
+ | </tr> |
||
+ | <tr> |
||
+ | <td width=50%><center>0x0</center></td> |
||
+ | <td width=50%><center>Line Control</center></td> |
||
+ | </tr> |
||
+ | <tr> |
||
+ | <td width=50%><center>0x4</center></td> |
||
+ | <td width=50%><center>Control</center></td> |
||
+ | </tr> |
||
+ | <tr> |
||
+ | <td width=50%><center>0x8</center></td> |
||
+ | <td width=50%><center>FIFO Control</center></td> |
||
+ | </tr> |
||
+ | <tr> |
||
+ | <td width=50%><center>0xC</center></td> |
||
+ | <td width=50%><center>Modem Control (uart0 and uart1 only)</center></td> |
||
+ | </tr> |
||
+ | <tr> |
||
+ | <td width=50%><center>0x10</center></td> |
||
+ | <td width=50%><center>Tx / Rx Status<br><br> |
||
+ | <b>Bit 0</b>: If 1, Rx buffer has data, if 0, Rx buffer is empty<br> |
||
+ | <b>Bit 1</b>: If 1, Rx buffer is empty, if 0, it is not empty<br></center></td> |
||
+ | <tr> |
||
+ | <td width=50%><center>0x14</center></td> |
||
+ | <td width=50%><center>Rx Error<br><br> |
||
+ | <b>Bit 0</b>: If 1, overrun error<br> |
||
+ | <b>Bit 1</b>: If 1, parity error<br> |
||
+ | <b>Bit 2</b>: If 1, frame error<br> |
||
+ | <b>Bit 3</b>: If 1, break signal<br></center></td> |
||
+ | </tr> |
||
+ | <tr> |
||
+ | <td width=50%><center>0x18</center></td> |
||
+ | <td width=50%><center>FIFO Status</center></td> |
||
+ | </tr> |
||
+ | <tr> |
||
+ | <td width=50%><center>0x1C</center></td> |
||
+ | <td width=50%><center>Modem Status (uart0 and uart1 only)</center></td> |
||
+ | </tr> |
||
+ | <tr> |
||
+ | <td width=50%><center>0x20</center></td> |
||
+ | <td width=50%><center>Tx Buffer (write-only)</center></td> |
||
+ | </tr> |
||
+ | <tr> |
||
+ | <td width=50%><center>0x24</center></td> |
||
+ | <td width=50%><center>Rx Buffer (read-only)</center></td> |
||
+ | </tr> |
||
+ | <tr> |
||
+ | <td width=50%><center>0x28</center></td> |
||
+ | <td width=50%><center>Baud Rate Divisor</center></td> |
||
+ | </tr> |
||
+ | <tr> |
||
+ | <td width=50%><center>0x2C</center></td> |
||
+ | <td width=50%><center>???</center></td> |
||
+ | </tr> |
||
+ | <tr> |
||
+ | <td width=50%><center>0x30</center></td> |
||
+ | <td width=50%><center>Interrupt Pending</center></td> |
||
+ | </tr> |
||
+ | <tr> |
||
+ | <td width=50%><center>0x34</center></td> |
||
+ | <td width=50%><center>Interrupt Source Pending</center></td> |
||
+ | </tr> |
||
+ | <tr> |
||
+ | <td width=50%><center>0x38</center></td> |
||
+ | <td width=50%><center>Interrupt Mask</center></td> |
||
</tr> |
</tr> |
||
</table> |
</table> |
Revision as of 17:21, 15 February 2009
This should help people reversing iBoot and friends. It is a work in progress.
Contents
VIC (Vectored Interrupt Controller)
Base (vic1): 0x38E01000 |
|
WDT (Watchdog Timer)
NOTE: It seems that you can disable Watchdog Timer by rewriting this register to 0x00000000, and you can reboot the device by rewriting it to 0x100000 |
|
USB
OTG-PHYCTRL
OTG
ARM7
To halt the ARM7: Write 0x0 then 0x10 to this register |
|
To run code, halt the ARM7, write the load address of the code to this register, write 0x3FF0000 to register 0x114, then resume the ARM7 |
|
I don't know exactly what this register does, but I named it like this because 0x3FF0000 is written to this register when there is a load address of code to be jumped to in register 0x110 |
UART
Base (uart1): 0x3DB00000 Base (uart2): 0x3DC00000 Base (uart3): 0x3DD00000 |
|
Bit 0: If 1, Rx buffer has data, if 0, Rx buffer is empty |
|
Bit 0: If 1, overrun error |
|