作为一款MP3和MPEG播放器,HauppaugeMediaMVP使您能够通过电视机播放数字媒体。它是一种目标明确的嵌入式设备,也是在微型硬件上的简洁Linux®实现的最佳例子。
除了HauppageMediaMVP以外,我确实还见过更小的嵌入式Linux系统,但HauppageMediaMVP是最小的非手持设备,它也是市面上最便宜的Linux系统之一。MediaMVP在某些方面与TiVo非常相似:它纯粹以应用为目的,仅执行特定功能。但与TiVo不同的是,它没有竭力阻止用户加载他们自己的软件,毫无疑问,很多用户已经那样做了。(关于我对TiVo的深入探讨,请阅读我早先在Linux的魅力这一专栏中撰写的文章“TiVo揭密”。
本文探讨了Hauppage提供的“标准”安装,还介绍了MediaMVPMediaCenter(MVPMC)项目,此项目为该系统开发定制的用户环境。
在机顶盒内
MVP是一项特别精简的小发明。从某种程度上来说,它的板载硬件甚至比KuroBox还要少(关于KuroBox的文章见参考资料部分),没有以太网,也没有足够的闪存来容纳一个内核。(实际上,对内核加以调整后可以放到MVP中,但他们没有这样做。)处理器是一个STBx25xx系列的机顶控制器,它以一个PowerPC®405内核为中心构造。这种机器具有32MB的RAM和一个以太网控制器。某些版本还提供了无线功能,我所用的版本只是在母板上有一束焊接式接头,可能还有一个CardBus插槽。我在一个论坛中发现了一篇参考文章(见参考资料),适于想要连接串口的用户阅读,因此这种功能也是可用的。还有一个IR端口,Linux内核可通过/dev/rawir使用它。
STB处理器不是普通的PPC405,它具有内置的硬件MPEG解码支持,它是此类产品的绝配,使系统能够传输大量视频音频,而无需极高的处理器速度。简言之,看过所有那些关于PowerPC系统的市场宣传材料后,您知道了这种系统有着非比寻常的成本节约效果,而且易于修改,能够满足特定业务市场,而这就是一个具体的例子。处理器的额定速度是252MHz。
从硬件设计可以清楚地了解,这是一种定位明确的设备,很可能这正是该系统成本低于KuroBox(更不用说普通的计算机了)的原因。
在机顶盒外
在外部,MediaMVP的功能只是搜索服务器。简化此系统的方法之一就是省略了通常要为内核和根文件系统使用的大容量闪存,这个机顶盒通过网络引导。为了避免与已有网络引导服务器发生冲突,MediaMVP使用了非标准端口号。随产品打包发布的软件是一个仅适用于Windows的服务器,它结合了网络引导和流媒体服务。机顶盒在引导时会从服务器获取配置信息和名为dongle.bin的文件。该文件包含许多内容,有一个引导装入程序、一个ramdisk映像和一个内核。通过一个小小的Perl脚本即可轻松提取出这一切。
默认安装非常简单,只需轻松与基于Windows的服务器程序会话即可。如您所想,磁盘上的配置比较有趣。让人出乎意料的是,您会发现系统中包含一个BusyBox安装(V0.60.5)。(参考资料中提供了一个链接,可获得关于BusyBox的更多信息。)整个ramdisk包含略超过2MB的文件:其中686KB用于BusyBox、1191KB用于MediaMVP的userland软件、436KB用于内核模块,还有一些小的配置文件。与Tivo精细复杂的安装相比,此安装更加简捷。
安装文件非常小,完全可以完整地重新生成这些文件。/etc/inittab文件简直是一个简洁方面的奇迹。
清单1./etc/inittab的内容
::sysinit:/etc/rcS
::respawn:-/bin/sh
::respawn:/bin/auto-dongle.sh
#::respawn:/etc/serial_proxy.sh
serial_proxy程序是一段在端口4000上运行netcat的袖珍脚本。它被注释掉了,无论如何,发布版中已删除了nc二进制文件。rcS脚本处理启动任务,auto-dongle脚本只是运行mpeg解码程序。解码程序若停止会自动重新启动,看起来这是这种环境中的合理选择,在桌面系统中,您可能希望关闭发生错误的服务或发出警告,但在嵌入式设备中,这不是真正的重点。rcS脚本形式如下所示,补充了注释掉的位。
清单2./etc/rcS脚本
#!/bin/sh
#/bin/umount-a
/bin/mount-a-orw
#Autoconfigurationmode
#AUTO=
AUTO=auto-
#ismodsfordongle
/etc/insmods.sh
#userstatefpage
/usr/bin/fpage>/dev/null2>&1&
#setupnetwork
./etc/${AUTO}netsh.sh
与inittab文件一样,这些文件需要调整一个未出现的配置选项,这里没有普通的netsh.sh,只安装了auto-netsh.sh脚本。auto-netsh.sh脚本调整一些内核联网参数,配置loopback接口,并启动一个DHCP客户机。
1
2
3
下一页>>
下载本文示例代码
阅读(255) | 评论(0) | 转发(0) |