在本系列文章中,我们将使用一个现成的 PLAYSTATION 3(PS3)— 上的 Cell/B.E. 处理器 — 来构建一个 Linux 托管的实验设备,即一个简单的音频带宽频谱分析器和函数生成器。
在本系列文章的第 1 部分中,我们将介绍本项目的设计内容,并开始详细介绍用户接口的实现。
设置
我所使用的硬件和软件是一个 60GB 的 PS3,上面运行的系统是 Yellow Dog Linux 5.0(YDL)。我使用了一个标准的 NTSC 电视机作为输出设备,还向系统中增加了一个 vanilla USB 键盘和鼠标以及一个 Griffin iMic(稍后将对这些外围设备作更详细的介绍)。
我们在此处执行的所有操作都应该与 20GB 的 PS3 兼容,也应该与所有其他的 Linux 发行版兼容(在撰写本文时惟一的另外一个发行版是 Fedora Core 5 for PowerPC®)。选择使用 YDL 完全是因为它不易引起冲突 — Terra Soft 装配起来后允许它在 PS3 上使用,另外 它还包括了启动、进行开发过程所需的硬件,以及我们打算使用的一些硬件。
如果您更喜欢使用其他 PowerPC Linux 发行版,可以随意使用 — 但是您需要下载本文没有提及的一些其他组件。类似地,我选择 iMic 也是因为它可以得到 PowerPC Linux 的良好支持 — 您可以自由地使用任何 USB 音频输入设备,但是如何寻找驱动程序就留给读者作为练习了。另外,还请注意您并不需要购买一个 PS3 游戏控制器;您可以使用一个 USB 键盘来控制 Sony 的操作系统(至少安装 Linux 是足够的,此后就不需要与 GameOS 再进行任何交互了)。
有关所提到的产品的链接,请参看 参考资料 一节的内容。如果您计划按照本文的介绍来构建并测试示例代码,开始还应该阅读 Jonathan Bartlett 撰写的文章,其中介绍了如何在 PS3 上安装 Linux(请参看 参考资料)。这是记录非常完备的文档,与我了解的其他 Linux 相比,其安装非常简单;不过还没有插入一张 DVD 并单击 “Go” 按钮这么简单。有些手工处理是相当必要的。
现在您可能会问:在这种应用程序中使用 Cell/B.E. 处理器背后的基本原理是什么?最近,工程师常常需要能够从 PC 中控制测试设备,并将获得的所有测试数据传回计算机,以便导入 Mathcad 或 Matlab 之类的分析软件中。随着复杂性的不断增加,以及分析仪器以 PC 为中心这个特性的强化,几乎所有现代的单独实验设备中实际上都存在一种常见趋势:都是基于嵌入式 PC 并且前端中增加了很多定制功能。
PS3 视频子系统受到了 Sony GameOS “系统管理程序” 的严格保护,它不能在其他 Linux 上显示出来。尚不清楚它们之所以这样做有多大程度是由于害怕有人会在某些特定情况下复制 PS3 游戏,或者能够看到一个 HD 视频内容的未加密字节;或者有多大程度上是由于 Sony 需要开发一种方法向 Linux 公开视频接口,而不需要对外公布有关 GPU 的任何注册表级文档(研究标明这可能会产生 GPL 的副作用,例如需要公布与 nVidia 达成的非公开协议所隐藏的代码)。
不管动机如何,ps3fb 视频设备的工作方式与其他 Linux framebuffer 都有些不同,这既是一个缺点,又是一个优点。参考资料 中给出了有关它的工作方式的详细文档,不过上面对讨厌的 bug 却只字未提。您需要了解的内容简单总结如下: