总的来说,Wii有两个操作系统。 一个在Broadway(主CPU)上执行,另一个在Starlet(I/O CPU)上执行。 这两个系统都位于512 MB的NAND存储中,并可以更新。
Starlet的操作系统
Starlet已经是一款有趣的硬件,但它的软件却更加引人入胜。 你看,这个操作系统不仅可以完全访问游戏机的每一个角落,而且还是按下电源键后首先运行的系统。
Starlet运行的系统被非官方地称为"I/O操作系统"或"IOS"(请不要将其与苹果公司的iOS系统混淆)。 IOS是一个功能齐全的操作系统,由以下部分组成:
- 微内核:控制ARM9 CPU、执行进程并使用驱动程序与其他硬件对话。
- 驱动程序: 实现与CPU外部硬件的通信(I/O)。
- 进程: 执行任务,如网络管理或执行文件系统。
- 加密内核: 加速加密相关操作(仅限AES和SHA-1)。
考虑到这一点,IOS的主要工作是通过抽象I/O和安全系统来卸载主CPU的工作量。 因此,程序员无需担心这些问题。 为此,Starlet为自己的任务预留了12至16 MB 的GDDR3 RAM,其余部分由Broadway和GPU使用。
Broadway和Starlet使用进程间通信协议(Inter-Process Communication,"IPC"协议)相互通信: 简而言之,两个CPU共享两个寄存器。 一个CPU可以向另一个CPU的寄存器写入数据(写入的数据可以是一条命令,也可以是一个值),接收端CPU可以执行相应的功能。
IOS的更新系统有点麻烦:更新的IOS版本不会安装在旧版本上,而是安装在另一个插槽中(NAND中为IOS预留的区域被划分为多个"插槽")。 这完全是出于兼容性的考虑,因为它允许旧版Wii软件继续使用与之相同的IOS版本。
任天堂经常发布IOS更新来改进硬件支持(这在新配件上市时是必要的)。 只有一个例外下IOS更新实际上取代了旧版本: 当发现某个特定版本存在可利用的漏洞时。 这只是出于安全考虑。
当插入GameCube游戏时,情况就不同了: Starlet启动的是MIOS。 这个IOS变体只是命令Starlet模拟原始的IPL。
Broadway的操作系统
这个菜单通常被称为系统菜单,在主PowerPC CPU(Broadway)上有效运行。
与IOS相比,我不认为这是一个"完全成熟"的操作系统,而更像是一个"程序",允许用户执行以下操作:
- 启动Wii/GameCube游戏:只有在插入有效游戏碟的情况下。
- 更改游戏机设置:包括时间、日期、视频模式或感应条位置等。
- 运行应用程序:该游戏机的新颖之处之一是可以安装Wii小游戏(称为"WiiWare")、复古游戏("虚拟游戏机"游戏)或方便的应用程序(如互联网浏览器)。 任天堂称这些为"频道",但操作系统也称它们为"标题"。
- 用户可以通过预装的Wii商店频道下载/购买频道。
- 虚拟游戏机应用嵌入了一个模拟器来运行游戏本身。 奇怪的是,模拟器并不是跨系统共享的,甚至在同一平台的游戏之间也不是共享的。 这样就可以针对特定游戏优化模拟器。
- 发送/接收信息:Wii有一个唯一的ID(刻录在其SEEPROM芯片中),可在其他Wii之间共享以交换信息。 信息可以在留言板上看到。
- 任天堂和Wii游戏也利用这一媒介提供通讯。
就像IOS一样,任天堂也对该系统发布了多个更新。 有的修复了安全漏洞,有的增加了更多功能。 一个值得注意的新功能是可以在SD卡上存储频道。
Broadway上运行的任何程序(包括系统菜单)都依赖于特定的IOS版本才能运行。 启动游戏或频道时,Starlet会使用所需的IOS声明版本重新启动。
更新媒介
任天堂将其称为系统更新。 它们在同一个软件包中包含两个操作系统,并使用序号进行版本控制。 目前已知的最后一个版本是2010年6月发布的4.3E。
系统更新包可从任天堂服务器或游戏光盘中获取。 用户可以使用系统菜单手动检查更新。 如果游戏需要特定版本但尚未安装的IOS,(且光盘中恰好包含所需的软件包)则会强制更新。
启动顺序
到目前为止,我们已经讨论了驻留在该游戏机中并同时运行的两个截然不同的操作系统。 这看起来相当简单,不过两者必须在游戏机启动时小心协调,之后才能正常工作。
也就是说,该游戏机的启动过程如下:
- 用户轻按游戏机上的开机按钮。
- Boot0阶段: Starlet运行内嵌Mask ROM(1.5 KB)中的硬连线程序。
- 简而言之,Starlet会解密并检查前96 KB NAND的完整性,然后计算哈希值,并与Starlet嵌入式OTP存储器中保存的哈希值进行比较。 如果两个哈希值不匹配,则诱导游戏机进入无限循环。
- Boot1阶段: Starlet运行上述96 KB NAND中的一个小程序。
- 该程序将指示Starlet 初始化(清除)64 MB GDDR3 RAM,然后解密并验证NAND的其余部分。
- Boot2 阶段: Starlet加载初始IOS(系统菜单需要的),然后启动Broadway。
- Broadway启动系统菜单。 现在由用户控制。


