In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

Difference between revisions of "Hardware/Starlet"

From WiiBrew
Jump to navigation Jump to search
(Removed speculation; we have legitimate ways of knowing this is called the IOP. That name was mentioned in the 25c3 presentation, seen in some factory logs dumped on HackMii, and seen as some of the Hollywood register names (HW_IOPINTPPC))
m (whoops, should've done a full page edit)
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
The [[Hollywood]] includes an ARM9 core to handle I/O and security, nicknamed the '''Starlet''' by [[fail0verflow]], but internally known as the '''IOP'''.
+
The [[Hollywood]] includes an ARM9 core to handle I/O and security, nicknamed the '''Starlet''' by [[fail0verflow]], but internally known as the '''IOP''', short for Input/Output Processor.
 
This is a very interesting piece of hardware, as it basically does everything that makes a Wii different from a GameCube.
 
This is a very interesting piece of hardware, as it basically does everything that makes a Wii different from a GameCube.
 +
 +
The Starlet contains an internal 96KB SRAM; if [[IOS]] needs more memory, it can lock part of MEM2 to prevent [[Broadway]] access.
  
 
''Note: this page is incomplete. Please expand it as you see fit!''
 
''Note: this page is incomplete. Please expand it as you see fit!''
Line 10: Line 12:
 
* ARM and thumb instruction set
 
* ARM and thumb instruction set
 
* Clocked at 243MHz (Hollywood clock)
 
* Clocked at 243MHz (Hollywood clock)
 +
 +
== Exceptions ==
 +
Exception vectors are located at <code>ffff0000</code>. Each exception is given 4 bytes, and usually branches elsewhere.
 +
 +
{| class="wikitable"
 +
! Index
 +
! [[mini]] name
 +
! Description
 +
|-
 +
| 0
 +
| v_reset
 +
| Hardware reset. Typically the entrypoint for official software.
 +
|-
 +
| 1
 +
| v_undf
 +
| Undefined instruction, used as handler for [[IOS/Syscalls|IOS syscalls]]
 +
|-
 +
| 2
 +
| v_swi
 +
| SVC/SWI instruction, used for [[IOS/Syscalls#Syscalls_.28via_ARM_syscall_instruction.29|IOS SWI syscalls]]
 +
|-
 +
| 3
 +
| v_instr_abrt
 +
| Instruction abort
 +
|-
 +
| 4
 +
| v_data_abrt
 +
| Data abort
 +
|-
 +
| 5
 +
| v_reserved
 +
| Reserved
 +
|-
 +
| 6
 +
| v_irq
 +
| [[Hollywood/IRQs|IRQ]]
 +
|-
 +
| 7
 +
| v_fiq
 +
| FIQ
 +
|}
  
 
== Boot ==
 
== Boot ==
Line 16: Line 59:
  
 
*Starlet boots from an internal Mask ROM, BOOT0 (about 1300 bytes of code out of 4K possible)
 
*Starlet boots from an internal Mask ROM, BOOT0 (about 1300 bytes of code out of 4K possible)
*[[boot0]] decrypts, verifies, and runs the first few blocks of NAND, BOOT1 (up to the first 48 pages of flash)
+
*[[boot0]] decrypts, verifies, and runs the first few blocks of NAND, BOOT1 (up to the first 47 pages of flash)
* [[boot1]] locates, loads, decrypts, verifies, and runs BOOT2
+
*[[boot1]] locates, loads, decrypts, verifies, and runs BOOT2
*[[boot2]] bootstrap then loads the embedded ELF file
 
 
*[[boot2]] starts the IOS
 
*[[boot2]] starts the IOS
*[[IOS]] loads code into the EXI buffer and bootstraps the {{hw|Broadway}}
+
*[[IOS]] loads [[System Menu]] into memory and bootstraps the {{hw|Broadway}} using the [[Hardware/External_Interface#EXI_boot_vector|EXI boot vector]]
  
 
== Links ==
 
== Links ==
Line 31: Line 73:
 
* [[ARM Binaries]] - the formats used for Starlet executable code
 
* [[ARM Binaries]] - the formats used for Starlet executable code
 
* [[WAD Files]] are used for BOOT2 and the IOS
 
* [[WAD Files]] are used for BOOT2 and the IOS
 +
* [https://www.freepatentsonline.com/y2005/0132217.html Patent for Starlet and IOS]
  
 
[[Category:Hardware]]
 
[[Category:Hardware]]

Latest revision as of 08:13, 27 September 2022

The Hollywood includes an ARM9 core to handle I/O and security, nicknamed the Starlet by fail0verflow, but internally known as the IOP, short for Input/Output Processor. This is a very interesting piece of hardware, as it basically does everything that makes a Wii different from a GameCube.

The Starlet contains an internal 96KB SRAM; if IOS needs more memory, it can lock part of MEM2 to prevent Broadway access.

Note: this page is incomplete. Please expand it as you see fit!

Specs

  • NEC ARM926EJ-S SoC. See also ChipWorks.
  • Big endian for compatibility with the Broadway
  • ARM and thumb instruction set
  • Clocked at 243MHz (Hollywood clock)

Exceptions

Exception vectors are located at ffff0000. Each exception is given 4 bytes, and usually branches elsewhere.

Index mini name Description
0 v_reset Hardware reset. Typically the entrypoint for official software.
1 v_undf Undefined instruction, used as handler for IOS syscalls
2 v_swi SVC/SWI instruction, used for IOS SWI syscalls
3 v_instr_abrt Instruction abort
4 v_data_abrt Data abort
5 v_reserved Reserved
6 v_irq IRQ
7 v_fiq FIQ

Boot

See also: boot process

Starlet is the first processor to run code in the Wii.

  • Starlet boots from an internal Mask ROM, BOOT0 (about 1300 bytes of code out of 4K possible)
  • boot0 decrypts, verifies, and runs the first few blocks of NAND, BOOT1 (up to the first 47 pages of flash)
  • boot1 locates, loads, decrypts, verifies, and runs BOOT2
  • boot2 starts the IOS
  • IOS loads System Menu into memory and bootstraps the Broadway using the EXI boot vector

Links

More information about the Starlet: