Difference between revisions of "Hardware/Starlet"
< Hardware
Jump to navigation
Jump to search
(→Hardware: added thumb instructions) |
m (whoops, should've done a full page edit) |
||
(30 intermediate revisions by 15 users not shown) | |||
Line 1: | Line 1: | ||
− | The [[Hollywood]] includes an ARM9 core to handle I/O and security, nicknamed the '''Starlet'''. | + | 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!'' | ||
− | == | + | == Specs == |
− | * NEC | + | * NEC ARM926EJ-S SoC. See also [https://www.techinsights.com/products/nec-c10046f5-211-pn2-circuit-analysis-report ChipWorks]. |
* Big endian for compatibility with the Broadway | * Big endian for compatibility with the Broadway | ||
− | * ARM thumb | + | * ARM and thumb instruction set |
− | + | * 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 == | ||
+ | {{Seealso|boot process}} | ||
Starlet is the first processor to run code in the Wii. | 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) | + | *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 {{hw|Broadway}} using the [[Hardware/External_Interface#EXI_boot_vector|EXI boot vector]] |
− | |||
− | |||
== Links == | == Links == | ||
More information about the Starlet: | More information about the Starlet: | ||
+ | * [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0198d/DDI0198_926_TRM.pdf ARM926EJ-S Technical Reference Manual] - CPU, MMU, Cache specs and programmer's interface | ||
+ | * [https://web.archive.org/web/20050308211243/http://www.arm.com:80/pdfs/DDI0222B_9EJS_r1p2.pdf ARM9EJ-S Technical Reference Manual] - CPU specs and programmer's interface | ||
+ | * [https://web.archive.org/web/20081221072959/http://www.arm.com/miscPDFs/14128.pdf 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. | * [[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 | * [[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 | ||
− | [[Category: | + | * [https://www.freepatentsonline.com/y2005/0132217.html Patent for Starlet and IOS] |
+ | |||
+ | [[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