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

Hardware/Starlet: Difference between revisions

From WiiBrew
Jump to navigation Jump to search
Marcan (talk | contribs)
initial version
 
m whoops, should've done a full page edit
 
(40 intermediate revisions by 20 users not shown)
Line 1: Line 1:
The [[Hollywood]] includes an ARM9 core, nicknamed the Starlet. This is a very interesting piece of hardware, as it basically does everything that makes a Wii different from a Gamecube.
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!''
''Note: this page is incomplete. Please expand it as you see fit!''


== Hardware ==
== Specs ==
 
* arm926ejs (or similar) core.
* AES and SHA-1 hardware engines
* Boot ROM
* OTP key/hash area


[[Starlet Register List]]
* 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
* ARM and thumb instruction set
* Clocked at 243MHz (Hollywood clock)


== 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
* Code decryption and signature checking
! [[mini]] name
* Disc decryption
! Description
* USB HCD
|-
* USB Keyboard driver
| 0
* USB Ethernet driver
| v_reset
* WiFi
| Hardware reset. Typically the entrypoint for official software.
* TCP/IP
|-
* SD card
| 1
* RSA encryption / decryption / signing / verifying / etc
| v_undf
* Sensor bar
| Undefined instruction, used as handler for [[IOS/Syscalls|IOS syscalls]]
* Probably handles the Audio/Video encoder I2C bus as well
|-
| 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
*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
*[[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
* [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: