Linux在嵌入式系统中的应用正在迅速扩大,这意味着软件开发工程师必须弄懂如何将为资源丰富的台式PC和服务器开发的源代码开放软件,应用于资源有限的嵌入式系统。
Linux 操作系统是UNIX 操作系统的一个克隆版本。UNIX 操作系统是美国贝尔实验室的肯·汤普逊Ken.Thompson和丹尼斯·里奇Dennis Ritchie 于1969 年夏在DEC PDP-7 小型计算机上开发的一个分时操作系统。当时Ken Thompson 为了能在闲置不用的PDP-7 计算机上运行他非常喜欢的星际旅行(SPACe travel)游戏,在1969 年夏天乘他夫人回家乡加利福尼亚渡假期间,在一个月内开发出了unix 操作系统的原型。当时使用的是BCPL 语言(基本组合编程语言),后经Dennis Ritchie 于1972 年用移植性很强的C 语言进行了改写,使得UNIX 系统在大专院校得到了推广。
现在PC机上具备上百兆字节RAM和几十GB的硬盘资源已很普遍,但对嵌入式系统的开发者来说通常是不可能的。而且,运行在可随意重启动系统中的桌面和企业级软件很容易经常升级,但是安装在工业现场的嵌入式应用系统就不太容易,而且理想状态下这种系统会一直运行下去,根本不存在重新启动的问题。因此,开发工程师们应当研究如何在一个只有数兆存储器资源的嵌入式设计中,充分利用过去十年来开发的桌面软件资源?
现有的基于Linux操作系统的桌面浏览器家族已经发展到了相当的规模,目前市面上可供用户选择的桌面浏览器超过20种,那么为什么还要引入另外一种呢?在做了哪一种现有的桌面浏览器适合用于开发嵌入式浏览器的调查之后,我们发现没有一个网络客户端的桌面浏览器满足嵌入式系统的要求。这些浏览器不是象Netscape的Mozilla那样太大而导致没法在大多数嵌入式系统上运行,就是太小,其HTML功能很不完整,因此我们决定自己设计一种新型浏览器,一种专门适用于嵌入式Linux设备的浏览器。
我们有五个最初的设计目标。首先,希望创建尽可能小的浏览器,不过这种浏览器要保持与HTML 100%的标准兼容性。这种浏览器可以应用于很多应用设备,从嵌入式设备文档显示到因特网电器设备和机顶盒,而且我们必须确信这种浏览器总能正确地显示网页。其次,同样重要的是,希望采用现有的用于HTML语法分析和显示引擎的开放式源代码,我们不想再从零开始编写HTML引擎代码,这是实现大多数小型浏览器时最常见的一个毛病,因为正确地显示所有的HTML文件需要大量的知识和经验,尤其是现在很多的HTML文件仍然是手写的。
第三,希望采用已选定的HTML窗口部件代码,我们不想改变任何核心HTML显示引擎代码,尽管它的源代码是开放的。这样做将带来两大主要好处:一是不用操心HTML显示引擎功能的升级,因为HTML专家已经优化了HTML分析引擎的代码设计;二是不会有设计缺陷被直接引入到核心显示子程序中,从而可保证很高的代码质量。
小型窗口部件
第四,我们想要使用一套适用于小环境的用户界面窗口部件,为此,决定利用Fast Light工具套件(FLTK)应用框架。FLTK能提供一套理想的适用于小型应用环境的用户界面窗口部件。
最后,我们认为为了使这种浏览器被市场广泛接受,应使它具有足够的灵活性,即既可以运行在新型嵌入式MICrowindows图形窗口环境中,也可以运行在标准的X Windows系统中。此外,我们希望确保这两种视窗操作系统都可以与该软件设计进行无缝集成,而且不会对该浏览器的体系结构产生任何影响。
对于第一个问题,我们是这样考虑的:KDE 1.0 HTML窗口部件在大多数网站上都能正确显示,这一点我们已经通过运行桌面kFM文件管理器得到验证。KDE窗口部件工作稳定,支持全部HTML 3.2功能,相对较小,而且其代码可读性好,易于再利用。那么为什么不使用可支持HTML 4.0和 1.4的KDE 2.0窗口部件呢?这里至少有两个问题:首先,KDE 2.0在我们设计工作开始的时候还不成熟,缺少很多功能,而且在实际运作工程中的表现还不够稳定。我们认为对第一版来说,其功能与大小的折衷是可以接受的,尤其是由于该设计的可扩展性好,即便在其设计定型以后仍允许添加新的功能。
有段时间,我们还曾考虑过Mozilla, 它是继网景浏览器之后推出的一种源代码开放浏览器,但最终因反对声过多而放弃了它,只因为Mozilla过于庞大了。Mozilla 版本的GTK+窗口部件(不包括邮件、新闻等)在不装入任何网页的情况下需要多达12M字节,这比目前的ViewML浏览器要大6倍。GTK+窗口部件集合也很大,与FLTK的100k相比,它至少有2M字节。