Dieser Artikel betrifft die Nintendo Wii

Starlet

Aus WiiDatabase Wiki
Zur Navigation springenZur Suche springen

Das "Hollywood"-MCM der Wii beinhaltet im Vegas-Chiplet einen ARM9-Co-Prozessor, der Ein-/Ausgabe- und Sicherheitsvorgänge verwaltet. Dieser Security-Prozessor wurde von Team Twiizers Starlet getauft. Nintendo nennt ihn intern schlicht IOP (I/O Processor). Eine Iteration des Starlet ist der Starbuck der Wii U.

Die-Fotografie des Vegas-Chiplets in Hollywood; Starlet sowie dessen dedizierter S-RAM befindet sich rechts unten. Ebenfalls rechts unten (klein, links neben dem 32K S-RAM Block) befindet sich der Mask-ROM, welcher boot0 enthält.

Spezifikationen

  • NEC ARM926EJ-S SoC
  • ARM v5-Befehlssatz in der ARMv5TEJ-Variante, inkl. Thumb und Jazelle
  • Läuft im sonst vergleichsweise wenig genutzten Big-Endian-Modus für Kompatibilität mit dem Broadway
  • Getaktet auf 243 MHz (wie auch die anderen Komponenten des Hollywood)
  • 96 KB S-RAM
  • Mask-ROM: enthält boot0
  • eFuse/OTP-Bereich: enthält boot1-Prüfsumme sowie verschiedene Keys

Bootvorgang

Der Starlet ist der erste Prozessor, der Code auf der Wii ausführt.

  1. Starlet bootet von einem internen Mask ROM, "BOOT0" (nur 1300 Bytes Code, obwohl der Mask ROM bis zu 4 KiB fassen könnte)
  2. boot0 initialisiert die GPIOs von Hollywood, was für die grundlegendsten Hardwarefunktionen (wie z.B. das Einschalten des Lüfters) notwendig ist
  3. boot0 lädt boot1 aus Block 0 des NAND in den 1T-SRAM bzw. MEM1 (verwendet werden nur ca. 9 Pages bzw. 18 KiB des eigentlich 64 Pages bzw. 128 KiB fassenden Blocks), entschlüsselt und verifiziert ihn anhand der fixen boot1-Prüfsumme aus dem OTP und startet ihn
  4. boot1 führt weitere Hardware-Initialisierungen durch, wie etwa die Initialisierung des externen GDDR3-RAMs (MEM2)
  5. boot1 sucht aus 2 vorhandenen Kopien die zu verwendende Kopie von boot2 aus. Priorität hat dabei stets die neuere Kopie; sollte sich diese als fehlerhaft herausstellen, wird jedoch auf die ältere Kopie zurückgegriffen. Dies soll rudimentäre Bricksicherheit bieten, da bei einem Update immer nur die ältere Kopie von boot2 überschrieben wird. Zu diesem Zweck hat jede Kopie von boot2 einen "Generation"-Zähler, welcher bei jeder Installation eines boot2-images in der jeweiligen Kopie um 2 erhöht wird, sodass die zuvor ältere und jetzt überschriebene Kopie fortan als die neuere identifiziert werden kann.
  6. boot1 lädt, entschlüsselt, verifiziert (mithilfe des E-Ticket-Service) und startet boot2, wobei die zu startende boot2-Version mit der im SEEPROM hinterlegten boot2-Versionsnummer verglichen wird. Diese darf nicht höher als die zu startende Versionsnummer sein, da das auf einen Downgrade-Versuch von boot2 hindeuten würde.
  7. boot2 bootstrapped und lädt dann die eingebettete ELF-Datei
  8. boot2 startet IOS
  9. IOS lädt Code in den EXI-Buffer und startet den Broadway

Einzelnachweise