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!''
−
== Hardware ==
+
== Specs ==
−
* NEC ARM926EJ-S SoC. See also [http://www.chipworks.com/seamark.aspx?sm=s4%3BDatedfl14%3BDeviceCategory6%3BMemoryfl10%3BReportCode12%3BCAR-0703-201&cw=detail ChipWorks].
+
* 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 instructions
+
* ARM and thumb instruction set
−
* AES and SHA-1 hardware engines
+
* Clocked at 243MHz (Hollywood clock)
−
* Boot ROM
−
* OTP key/hash area
−
−
[[Starlet memory map]]
−
== Tasks ==
+
== Exceptions ==
−
The Starlet handles at least these tasks in the Wii
+
Exception vectors are located at <code>ffff0000</code>. Each exception is given 4 bytes, and usually branches elsewhere.
−
* NAND access / filesystem
+
{| class="wikitable"
−
* DVD subsystem
+
! Index
−
* Authentication (RSA, EC, SHA1, HMAC-SHA1) and encryption/decryption (AES, RSA, EC)
+
! [[mini]] name
−
* USB HCD (generic USB interface), Keyboard driver, Ethernet driver
+
! Description
−
* WiFi (both for networking and communication with Nintendo DS devices)
+
|-
−
* TCP/IP and UDP
+
| 0
−
* SD card
+
| v_reset
−
* GPIO (Sensor bar, drive LED, power LED, etc)
+
| Hardware reset. Typically the entrypoint for official software.
−
* Audio/Video encoder (I2C) bus
+
|-
+
| 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 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
−
* The BOOT2 bootstrap then loads the embedded ELF file.
+
*[[boot2]] starts the IOS
−
* 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]]
−
−
At some point, Starlet loads code into an EXI buffer and bootstraps Broadway.
== 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:Wii_Hardware]]
+
* [https://www.freepatentsonline.com/y2005/0132217.html Patent for Starlet and IOS]
+
+
[[Category:Hardware]]