« NDS架构 (index)

NDS架构

Chapter 7: 操作系统


目录

  1. 入口点(Entry point)
  2. 机会之窗
  3. 交互界面
  4. 可更新性

我觉得基本可以认为,这一世代的每款游戏机都带有了某种交互界面。 NDS继承了以轻量级API为基础的操作系统模型,以简化I/O访问;但同时也提供了一个精简的用户界面,以供调整设置或者运行"应用程序"。

话虽如此,它的操作系统分散在多个芯片中。让我们从启动时读取的芯片开始。

入口点(Entry point)

在某一时刻,ARM7和ARM9将需要初始化硬件。NTR-CPU包括两个不同的小型ROM芯片来做这件事:

当掌机启动时,每个CPU从各自的ROM启动引导。 这是因为它们的复位向量(reset vector)指向每个芯片(作为参考,ARM9的向量位于0xFFFF0000,而ARM7的向量位于0x00000000)。

继续推进,两个BIOS都存储两组例程:引导代码和中断调用。 考虑到前代掌机的历史,后者我们并不陌生,然而前者的复杂度却增加了:除了硬件初始化之外,ARM7的代码还将对DS卡带(如果插入了的话)进行一些检查来确保安全性。

运行引导代码后,两个CPU将同步,以便它们可以开始充当"单个机器":事实证明,ARM9的加载完成要比ARM7快得多。于是ARM9向ARM7发送一个4比特值,在半无限循环中阻塞等待ARM7的响应。一旦ARM7响应,两者同时"越过终点线",也就是说,它们现在同步了。

机会之窗

如果您现在拥有或者曾经拥有NDS,您可能会注意到只能在游戏机开机前插入卡带才能玩游戏。 这是因为ARM7的BIOS在启动时对卡带进行了一些检查(更多详情参见最后一节),如果所有测试都通过,ARM7的游戏可执行程序将被复制到WRAM,ARM9的程序则被复制到主内存。

如果出于某些原因未能复制可执行文件(卡带无效或在启动时未找到可执行文件),则无法启动游戏。用户将不得不重置游戏机才能玩游戏。

交互界面

无论是否插卡,系统都将加载交互界面完成引导。 这只是一个驻留在外部256 KB闪存存储器上的程序。

Image
主界面。

Image
每次NDS开机时都会看到此界面。 在有效插入一张卡时"Nintendo" logo会显示出来。

Image
设置界面。

存储界面的芯片还存储着固件、一些用户设置(语言、昵称、生日、闹钟和欢迎消息)以及一些系统设置(触摸屏校准、首次启动标志、固件版本和Wi-Fi设置)。

这个界面与其他同期的游戏机界面基本上差不多。 用户依靠它来启动游戏、更改设置、下载游戏(使用"Download Play"功能)或者玩玩Pictochat:一个开放的聊天室软件,可以与附近的NDS交流。

值得强调的是,只读数据和可写数据都驻留在同一个可重写的芯片中,因此理论上固件可以被覆盖! 幸运的是(或者出于显而易见的原因),任天堂在主板上的一个点(称为SL1)上放置了跳线来保护芯片的上四分之一(64 KB)不被写入,拆卸电池仓后可以看到这个点。 然而,仍然可以覆盖闪存的其余部分,虽然结果也是灾难性的!

可更新性

任天堂为了修复一些安全漏洞,曾多次更新这个固件(确切地说是5次)。 用户无法自行安装这些更新(回想一下SL1的保护)。 但是,任天堂在下一批生产的产品中嵌入了更新后的固件。


Previous: 6. I/O

Next: 8. 游戏


Rodrigo Copetti © 2026 RSS Feed

切换至现代版

主页 · 文章 · 支持 · 关于作者 · 关于此网站