Difference between revisions of "Hardware/Starlet"
< Hardware
Jump to navigation
Jump to search
Hallowizer (talk | contribs) (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 | + | *[[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]] starts the IOS | *[[boot2]] starts the IOS | ||
− | *[[IOS]] loads | + | *[[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:
- ARM926EJ-S Technical Reference Manual - CPU, MMU, Cache specs and programmer's interface
- ARM9EJ-S Technical Reference Manual - CPU specs and programmer's interface
- ARM Architecture Reference Manual - Documentation about the ARMv5 architecture.
- IOS - the OS that runs on the Starlet and handles calls from the Broadway during game execution and while in the system menu.
- ARM Binaries - the formats used for Starlet executable code
- WAD Files are used for BOOT2 and the IOS
- Patent for Starlet and IOS