Linux在嵌入式系统中
![](/icons/97518de.gif)
应用正在迅速扩大
![](/icons/97518dou.gif)
这意味着软件开发工程师必须弄懂如何将为资源丰富
![](/icons/97518de.gif)
台式PC和服务器开发
![](/icons/97518de.gif)
源代码开放软件
![](/icons/97518dou.gif)
应用于资源有限
![](/icons/97518de.gif)
嵌入式系统
7CgfbaiducukKnY
7CgfbaiducukKnY
现在PC机上具备上百兆字节RAM和几十GB
![](/icons/97518de.gif)
硬盘资源已很普遍
![](/icons/97518dou.gif)
但对嵌入式系统
![](/icons/97518de.gif)
开发者来说通常是不可能
![](/icons/97518de.gif)
![](/icons/97518dou2.gif)
而且
![](/icons/97518dou.gif)
运行在可随意重启动系统中
![](/icons/97518de.gif)
桌面和企业级软件很容易经常升级
![](/icons/97518dou.gif)
但是安装在工业现场
![](/icons/97518de.gif)
嵌入式应用系统就不太容易
![](/icons/97518dou.gif)
而且理想状态下这种系统会
![](/icons/97518yi.gif)
直运行下去
![](/icons/97518dou.gif)
根本不存在重新启动
![](/icons/97518de.gif)
问题
![](/icons/97518dou2.gif)
因此
![](/icons/97518dou.gif)
开发工程师们应当研究如何在
![](/icons/97518yi.gif)
个只有数兆存储器资源
![](/icons/97518de.gif)
嵌入式设计中
![](/icons/97518dou.gif)
充分利用过去十年来开发
![](/icons/97518de.gif)
桌面软件资源?
7CgfbaiducukKnY
7CgfbaiducukKnY
现有
![](/icons/97518de.gif)
基于Linux操作系统
![](/icons/97518de.gif)
桌面浏览器家族已经发展到了相当
![](/icons/97518de.gif)
规模
![](/icons/97518dou.gif)
目前市面上可供用户选择
![](/icons/97518de.gif)
桌面浏览器超过20种
![](/icons/97518dou.gif)
那么为什么还要引入另外
![](/icons/97518yi.gif)
种呢?在做了哪
![](/icons/97518yi.gif)
种现有
![](/icons/97518de.gif)
桌面浏览器适合用于开发嵌入式浏览器
![](/icons/97518de.gif)
调查之后
![](/icons/97518dou.gif)
我们发现没有
![](/icons/97518yi.gif)
个网络客户端
![](/icons/97518de.gif)
桌面浏览器满足嵌入式系统
![](/icons/97518de.gif)
要求
![](/icons/97518dou2.gif)
这些浏览器不是象Netscape
![](/icons/97518de.gif)
Mozilla那样太大而导致没法在大多数嵌入式系统上运行
![](/icons/97518dou.gif)
就是太小
![](/icons/97518dou.gif)
其HTML功能很不完整
![](/icons/97518dou.gif)
因此我们决定自己设计
![](/icons/97518yi.gif)
种新型浏览器
![](/icons/97518dou.gif)
![](/icons/97518yi.gif)
种专门适用于嵌入式Linux设备
![](/icons/97518de.gif)
浏览器
7CgfbaiducukKnY
7CgfbaiducukKnY
7CgfbaiducukKnY
我们有五个最初
![](/icons/97518de.gif)
设计目标
![](/icons/97518dou2.gif)
首先
![](/icons/97518dou.gif)
希望创建尽可能小
![](/icons/97518de.gif)
浏览器
![](/icons/97518dou.gif)
不过这种浏览器要保持与HTML 100%
![](/icons/97518de.gif)
标准兼容性
![](/icons/97518dou2.gif)
这种浏览器可以应用于很多应用设备
![](/icons/97518dou.gif)
从嵌入式设备文档显示到因特网电器设备和机顶盒
![](/icons/97518dou.gif)
而且我们必须确信这种浏览器总能正确地显示网页
![](/icons/97518dou2.gif)
其次
![](/icons/97518dou.gif)
同样重要
![](/icons/97518de.gif)
是
![](/icons/97518dou.gif)
希望采用现有
![](/icons/97518de.gif)
用于HTML语法分析和显示引擎
![](/icons/97518de.gif)
开放式源代码
![](/icons/97518dou.gif)
我们不想再从零开始编写HTML引擎代码
![](/icons/97518dou.gif)
这是实现大多数小型浏览器时最常见
![](/icons/97518de.gif)
![](/icons/97518yi.gif)
个毛病
![](/icons/97518dou.gif)
![](/icons/97518yinwei.gif)
正确地显示所有
![](/icons/97518de.gif)
HTML文件需要大量
![](/icons/97518de.gif)
知识和经验
![](/icons/97518dou.gif)
尤其是现在很多
![](/icons/97518de.gif)
HTML文件仍然是手写
![](/icons/97518de.gif)
7CgfbaiducukKnY
7CgfbaiducukKnY
第三
![](/icons/97518dou.gif)
希望采用已选定
![](/icons/97518de.gif)
HTML窗口部件代码
![](/icons/97518dou.gif)
我们不想改变任何核心HTML显示引擎代码
![](/icons/97518dou.gif)
尽管它
![](/icons/97518de.gif)
源代码是开放
![](/icons/97518de.gif)
![](/icons/97518dou2.gif)
这样做将带来两大主要好处:
![](/icons/97518yi.gif)
是不用操心HTML显示引擎功能
![](/icons/97518de.gif)
升级
![](/icons/97518dou.gif)
![](/icons/97518yinwei.gif)
HTML专家已经优化了HTML分析引擎
![](/icons/97518de.gif)
代码设计;二是不会有设计缺陷被直接引入到核心显示子
![](/icons/97518chengxu.gif)
中
![](/icons/97518dou.gif)
从而可保证很高
![](/icons/97518de.gif)
代码质量
![](/icons/97518dou2.gif)
7CgfbaiducukKnY
7CgfbaiducukKnY
小型窗口部件
7CgfbaiducukKnY
7CgfbaiducukKnY
第四
![](/icons/97518dou.gif)
我们想要使用
![](/icons/97518yi.gif)
套适用于小环境
![](/icons/97518de.gif)
用户界面窗口部件
![](/icons/97518dou.gif)
为此
![](/icons/97518dou.gif)
决定利用Fast Light工具套件(FLTK)应用框架
![](/icons/97518dou2.gif)
FLTK可从www.fltk.org获得
![](/icons/97518dou.gif)
它能提供
![](/icons/97518yi.gif)
套理想
![](/icons/97518de.gif)
适用于小型应用环境
![](/icons/97518de.gif)
用户界面窗口部件
7CgfbaiducukKnY
7CgfbaiducukKnY
最后
![](/icons/97518dou.gif)
我们认为为了使这种浏览器被市场广泛接受
![](/icons/97518dou.gif)
应使它具有足够
![](/icons/97518de.gif)
灵活性
![](/icons/97518dou.gif)
即既可以运行在新型嵌入式Microwindows图形窗口环境中(www.microwindows.org)
![](/icons/97518dou.gif)
也可以运行在标准
![](/icons/97518de.gif)
X Windows系统中
![](/icons/97518dou2.gif)
此外
![](/icons/97518dou.gif)
我们希望确保这两种视窗操作系统都可以与该软件设计进行无缝集成
![](/icons/97518dou.gif)
而且不会对该浏览器
![](/icons/97518de.gif)
体系结构产生任何影响
7CgfbaiducukKnY
7CgfbaiducukKnY
第
![](/icons/97518yi.gif)
个主要
![](/icons/97518de.gif)
决定是选择源代码开放
![](/icons/97518de.gif)
HTML语法分析和显示引擎
![](/icons/97518dou2.gif)
我们从KDE桌面
![](/icons/97518de.gif)
kmf文件管理器中选择了KDE 1.0 HTML窗口部件(KDE可在www.kde.org获得)
![](/icons/97518dou.gif)
这
![](/icons/97518yi.gif)
选择引出了至少三个问题:为什么不使用KDE更新
![](/icons/97518de.gif)
v2.0 Konqueror窗口部件?Mozilla 和 Gecko 搜索引擎怎样?为什么不使用QT(它是挪威Trolltech AS公司
![](/icons/97518de.gif)
C
![](/icons/97518jiajia.gif)
跨平台GUI开发系统)?
7CgfbaiducukKnY
7CgfbaiducukKnY
对于第
![](/icons/97518yi.gif)
个问题
![](/icons/97518dou.gif)
我们是这样考虑
![](/icons/97518de.gif)
:KDE 1.0 HTML窗口部件在大多数网站上都能正确显示
![](/icons/97518dou.gif)
这
![](/icons/97518yi.gif)
点我们已经通过运行桌面kfm文件管理器得到验证
![](/icons/97518dou2.gif)
KDE窗口部件工作稳定
![](/icons/97518dou.gif)
支持全部HTML 3.2功能
![](/icons/97518dou.gif)
相对较小
![](/icons/97518dou.gif)
而且其代码可读性好
![](/icons/97518dou.gif)
易于再利用
![](/icons/97518dou2.gif)
那么为什么不使用可支持HTML 4.0和javascript 1.4
![](/icons/97518de.gif)
KDE 2.0窗口部件呢?这里至少有两个问题:首先
![](/icons/97518dou.gif)
KDE 2.0在我们设计工作开始
![](/icons/97518de.gif)
时候还不成熟
![](/icons/97518dou.gif)
缺少很多功能
![](/icons/97518dou.gif)
而且在实际运作工程中
![](/icons/97518de.gif)
表现还不够稳定
![](/icons/97518dou2.gif)
现在它已经改进了很多
![](/icons/97518dou.gif)
但仍缺乏实际验证
![](/icons/97518dou2.gif)
与此相反
![](/icons/97518dou.gif)
KDE 1.0窗口部件已经推出了
![](/icons/97518yi.gif)
年多
![](/icons/97518dou.gif)
实践证明是比较成熟
![](/icons/97518de.gif)
;第二
![](/icons/97518dou.gif)
KDE 2.0窗口部件几乎比它
![](/icons/97518de.gif)
1.0版本大四倍
![](/icons/97518dou2.gif)
我们认为对第
![](/icons/97518yi.gif)
版来说
![](/icons/97518dou.gif)
其功能与大小
![](/icons/97518de.gif)
折衷是可以接受
![](/icons/97518de.gif)
![](/icons/97518dou.gif)
尤其是由于该设计
![](/icons/97518de.gif)
可扩展性好
![](/icons/97518dou.gif)
即便在其设计定型以后仍允许添加新
![](/icons/97518de.gif)
功能
7CgfbaiducukKnY
7CgfbaiducukKnY
有段时间
![](/icons/97518dou.gif)
我们还曾考虑过Mozilla, 它是继网景浏览器之后推出
![](/icons/97518de.gif)
![](/icons/97518yi.gif)
种源代码开放浏览器
![](/icons/97518dou.gif)
但最终因反对声过多而放弃了它
![](/icons/97518dou.gif)
只
![](/icons/97518yinwei.gif)
Mozilla过于庞大了
![](/icons/97518dou2.gif)
Mozilla 版本
![](/icons/97518de.gif)
GTK+窗口部件(不包括邮件、新闻等)在不装入任何网页
![](/icons/97518de.gif)
情况下需要多达12M字节
![](/icons/97518dou.gif)
这比目前
![](/icons/97518de.gif)
ViewML浏览器要大6倍
![](/icons/97518dou2.gif)
GTK+窗口部件集合也很大
![](/icons/97518dou.gif)
与FLTK
![](/icons/97518de.gif)
100k相比
![](/icons/97518dou.gif)
它至少有2M字节
7CgfbaiducukKnY
7CgfbaiducukKnY
易置换
![](/icons/97518de.gif)
类集
7CgfbaiducukKnY
7CgfbaiducukKnY
到目前为止
![](/icons/97518dou.gif)
在考虑使用那
![](/icons/97518yi.gif)
种窗口部件时
![](/icons/97518dou.gif)
争论最多
![](/icons/97518de.gif)
是KDE 1.0窗口部件使用
![](/icons/97518de.gif)
QT窗口部件集合(QT可从www.trolltech.com 获得)
![](/icons/97518dou2.gif)
如果我们可以对最初
![](/icons/97518de.gif)
设计目标做
![](/icons/97518yi.gif)
些妥协
![](/icons/97518dou.gif)
那么QT窗口部件将由于好几种理由而成为这
![](/icons/97518yi.gif)
方案
![](/icons/97518de.gif)
![](/icons/97518yi.gif)
个合乎逻辑
![](/icons/97518de.gif)
选择
![](/icons/97518dou2.gif)
其中之
![](/icons/97518yi.gif)
是
![](/icons/97518dou.gif)
尚没有Microwindows版本
![](/icons/97518de.gif)
QT采用了
![](/icons/97518yi.gif)
种独特
![](/icons/97518de.gif)
编码风格
![](/icons/97518dou.gif)
它允许用运行在另
![](/icons/97518yi.gif)
工具套件上
![](/icons/97518de.gif)
改进版类方便地置换原有
![](/icons/97518de.gif)
类
![](/icons/97518dou.gif)
这
![](/icons/97518yi.gif)
工具套件具有Microwindows和X版本
7CgfbaiducukKnY
7CgfbaiducukKnY
这
![](/icons/97518yi.gif)
事实降低了QT API
![](/icons/97518de.gif)
总体大小
![](/icons/97518dou.gif)
![](/icons/97518yinwei.gif)
我们不再需要所有
![](/icons/97518de.gif)
类
![](/icons/97518dou2.gif)
你可得到
![](/icons/97518yi.gif)
个免费
![](/icons/97518de.gif)
QT版本作为编码参考
7CgfbaiducukKnY
7CgfbaiducukKnY
我们最终选择
![](/icons/97518de.gif)
是可同时在Microwindows和X上运行
![](/icons/97518de.gif)
唯
![](/icons/97518yi.gif)
窗口部件集合FLTK
![](/icons/97518dou.gif)
这
![](/icons/97518yi.gif)
工具套件也采用C
![](/icons/97518jiajia.gif)
编写
![](/icons/97518dou2.gif)
选择它
![](/icons/97518de.gif)
另外
![](/icons/97518yi.gif)
个好处是这
![](/icons/97518yi.gif)
工具套件在对QT API和后端FLTK进行集成时相对较简单
7CgfbaiducukKnY
7CgfbaiducukKnY
在选择了核心显示引擎之后
![](/icons/97518dou.gif)
我们创建了
![](/icons/97518yi.gif)
个分层软件体系结构
![](/icons/97518dou.gif)
这
![](/icons/97518yi.gif)
结构严格地定义了每
![](/icons/97518yi.gif)
个浏览器模块以及每
![](/icons/97518yi.gif)
模块应该完成
![](/icons/97518de.gif)
功能
![](/icons/97518dou2.gif)
为了满足不改变显示引擎编码
![](/icons/97518de.gif)
设计目标
![](/icons/97518dou.gif)
该体系结构是必需
![](/icons/97518de.gif)
![](/icons/97518dou2.gif)
我们也必须定义
![](/icons/97518yi.gif)
些新模块
![](/icons/97518dou.gif)
![](/icons/97518yi.gif)
旦开发出更小
![](/icons/97518de.gif)
模块
![](/icons/97518dou.gif)
或因采用图形化视窗系统而需要对某些模块进行更改
![](/icons/97518dou.gif)
就可以置换旧模块
![](/icons/97518dou2.gif)
我们集成
![](/icons/97518de.gif)
模块包括:浏览器应用层、万维网
![](/icons/97518de.gif)
WWWLib库、KHTML View和窗口部件模块、QT兼容层、IMLIB 图形库和FLTK应用框架
7CgfbaiducukKnY
7CgfbaiducukKnY
ViewML浏览器应用层很小
![](/icons/97518dou.gif)
并完全用C
![](/icons/97518jiajia.gif)
FLTK应用框架编写
![](/icons/97518dou.gif)
它提供了基本
![](/icons/97518de.gif)
图形用户界面布局
![](/icons/97518dou2.gif)
我们尽量将这
![](/icons/97518yi.gif)
层做得很小
![](/icons/97518dou.gif)
以便应用工程师能够很容易地为某个特定嵌入式应用环境修改ViewML浏览器
![](/icons/97518dou.gif)
而无需深入了解整个浏览器
![](/icons/97518dou2.gif)
在
![](/icons/97518yi.gif)
些嵌入式应用环境中
![](/icons/97518dou.gif)
可能根本没有用户界面
![](/icons/97518dou.gif)
只显示
![](/icons/97518yi.gif)
个全屏幕
![](/icons/97518de.gif)
浏览器页面
![](/icons/97518dou2.gif)
这
![](/icons/97518yi.gif)
层也可以处理网络和本地文件存取需求
7CgfbaiducukKnY
7CgfbaiducukKnY
我们选用了万维网协会
![](/icons/97518de.gif)
WWWLib库来执行所有
![](/icons/97518de.gif)
异步网络输入/输出和HTTP获得(HTTP get)功能
![](/icons/97518dou.gif)
![](/icons/97518yinwei.gif)
它比较容易使用
![](/icons/97518dou2.gif)
我们发现WWWLib库基本上要比实际所需要
![](/icons/97518de.gif)
大
![](/icons/97518dou.gif)
因此它可能将被改写
![](/icons/97518dou2.gif)
不过
![](/icons/97518dou.gif)
就目前而言
![](/icons/97518dou.gif)
它使我们不必在这
![](/icons/97518yi.gif)
专门领域花费太多精力就可迅速获取
![](/icons/97518chushi.gif)
版浏览器
![](/icons/97518de.gif)
功能
7CgfbaiducukKnY
7CgfbaiducukKnY
KHTML View和窗口部件模块由原始
![](/icons/97518de.gif)
未经修改
![](/icons/97518de.gif)
KDE 1.0 HTML窗口部件代码构成
![](/icons/97518dou.gif)
这
![](/icons/97518yi.gif)
未经修改
![](/icons/97518de.gif)
源代码被上层
![](/icons/97518de.gif)
用户界面应用层
![](/icons/97518diaoyong.gif)
![](/icons/97518dou.gif)
仍认为是在和下层
![](/icons/97518de.gif)
QT应用框架通信
![](/icons/97518dou2.gif)
KHTML窗口部件处理所有
![](/icons/97518de.gif)
HTML语法分析、作图和基本
![](/icons/97518de.gif)
布局操作
![](/icons/97518dou.gif)
它并不直接处理屏幕滚动或显示框架
![](/icons/97518de.gif)
操作
![](/icons/97518dou.gif)
而是把这些任务授权给KHTML View去做
![](/icons/97518dou2.gif)
KHTML View是ViewML中功能最全面
![](/icons/97518de.gif)
![](/icons/97518yi.gif)
种窗口部件
![](/icons/97518dou.gif)
它管理
![](/icons/97518yi.gif)
个或多个KHTML窗口部件
![](/icons/97518dou.gif)
并执行屏幕滚动和HTML框架显示操作
7CgfbaiducukKnY
7CgfbaiducukKnY
QT兼容性层提供未经修改
![](/icons/97518de.gif)
HTML窗口部件和FLTK应用框架(而不是QT框架)之间
![](/icons/97518de.gif)
接口
![](/icons/97518dou2.gif)
C
![](/icons/97518jiajia.gif)
QT类在这
![](/icons/97518yi.gif)
层被改写
![](/icons/97518dou.gif)
以保持相同
![](/icons/97518de.gif)
公共接口
![](/icons/97518dou.gif)
这些类包括图形窗口部件(编辑控制、按钮等)、类集及
![](/icons/97518zifu.gif)
串类、以及实现
![](/icons/97518yi.gif)
些特定QT功能
![](/icons/97518de.gif)
通用功能类
![](/icons/97518dou2.gif)
所有
![](/icons/97518de.gif)
图形类采用FLTK提供
![](/icons/97518de.gif)
功能实现
![](/icons/97518dou.gif)
这使得所有标准控制和大多数作图功能相对比较容易实现
![](/icons/97518dou.gif)
不过
![](/icons/97518dou.gif)
用于窗口部件内部通信
![](/icons/97518de.gif)
非标准QT信号机制不得不从零开始进行编码
![](/icons/97518dou2.gif)
所有
![](/icons/97518de.gif)
类集和
![](/icons/97518zifu.gif)
串类在标准C
![](/icons/97518jiajia.gif)
库中实现
![](/icons/97518dou.gif)
这些库包括:堆栈、列表、字典(哈希表)和常见
![](/icons/97518zifu.gif)
串类
![](/icons/97518dou.gif)
除了QT在其类集合中使用
![](/icons/97518de.gif)
新型自动删除机制以外
![](/icons/97518dou.gif)
这些类完全是标准
![](/icons/97518de.gif)
7CgfbaiducukKnY
7CgfbaiducukKnY
对图象而言
![](/icons/97518dou.gif)
Gnome项目中
![](/icons/97518de.gif)
IMLIB曾用于X视窗系统
![](/icons/97518dou.gif)
IMLIB库允许实现QT类型图象
![](/icons/97518de.gif)
显示功能
![](/icons/97518dou.gif)
包括自动检测图象类型、自动缩放图象、以及将图象显示在屏幕上
![](/icons/97518dou2.gif)
尽管IMLIB库也有
![](/icons/97518yi.gif)
些不足之处
![](/icons/97518dou.gif)
例如大小
![](/icons/97518dou.gif)
但最主要
![](/icons/97518de.gif)
缺点是它不适用于Microwindows
![](/icons/97518dou2.gif)
因此
![](/icons/97518dou.gif)
对于该环境
![](/icons/97518dou.gif)
我们直接将图形图象支持功能增加到Microwindows中
![](/icons/97518dou.gif)
这样就较好地解决了这
![](/icons/97518yi.gif)
问题
![](/icons/97518dou.gif)
同时使该模块仍保持较小
![](/icons/97518de.gif)
尺寸
![](/icons/97518dou.gif)
并且允许增加新
![](/icons/97518de.gif)
图像解码器
7CgfbaiducukKnY
7CgfbaiducukKnY
根据视窗系统
![](/icons/97518de.gif)
不同
![](/icons/97518dou.gif)
可以采用两个不同版本
![](/icons/97518de.gif)
FLTK应用框架
![](/icons/97518dou2.gif)
标准版本
![](/icons/97518de.gif)
FLTK包括对Win32和X
![](/icons/97518de.gif)
支持
![](/icons/97518dou2.gif)
我们和Microwindows项目开发人员
![](/icons/97518yi.gif)
起将FLTK移植到Microwindows已有
![](/icons/97518de.gif)
Nano-X API中
![](/icons/97518dou.gif)
这
![](/icons/97518yi.gif)
技术支持允许与Microwindows服务器进行客户-服务器交互
![](/icons/97518dou.gif)
就如同采用Xlib模型
![](/icons/97518yi.gif)
样
![](/icons/97518dou2.gif)
由于FLTK和Microwindows都能支持X Window系统
![](/icons/97518dou.gif)
因此它是
![](/icons/97518yi.gif)
个很不错
![](/icons/97518de.gif)
选择
7CgfbaiducukKnY
7CgfbaiducukKnY
通过直接采用带FLTK
![](/icons/97518de.gif)
X Windows系统
![](/icons/97518dou.gif)
或在X Windows系统上运行Microwindows服务器
![](/icons/97518dou.gif)
ViewML浏览器就可在Linux平台上进行调试和改进
![](/icons/97518dou2.gif)
用这种方法
![](/icons/97518dou.gif)
不管运行
![](/icons/97518de.gif)
Microwindows还是X Windows系统
![](/icons/97518dou.gif)
目标环境
![](/icons/97518de.gif)
确切特性都可以被仿真出来
![](/icons/97518dou2.gif)
Microwindows系统允许在台式机上仿真目标设备
![](/icons/97518de.gif)
准确显示特性
![](/icons/97518dou.gif)
我们也希望能够在台式机上运行与目标设备基本相同
![](/icons/97518de.gif)
代码路径
![](/icons/97518dou.gif)
这可极大地改善质量控制
7CgfbaiducukKnY
7CgfbaiducukKnY
ViewML项目已经在短时间内开发出了
![](/icons/97518yi.gif)
种高品质
![](/icons/97518de.gif)
网络浏览器
![](/icons/97518dou.gif)
它直接针对嵌入式Linux环境
![](/icons/97518dou2.gif)
通过包含源代码开放
![](/icons/97518de.gif)
核心部件
![](/icons/97518dou.gif)
我们已经能够在不占用多少RAM和ROM资源
![](/icons/97518de.gif)
情况下使用
![](/icons/97518yi.gif)
个高品质
![](/icons/97518de.gif)
显示引擎
7CgfbaiducukKnY
7CgfbaiducukKnY
ViewML浏览器
![](/icons/97518de.gif)
运行大概需要2M字节
![](/icons/97518de.gif)
RAM
![](/icons/97518dou.gif)
代码文件
![](/icons/97518de.gif)
大小大约是800k
![](/icons/97518dou2.gif)
在Microwindows系统环境下运行时
![](/icons/97518dou.gif)
对RAM
![](/icons/97518de.gif)
需求不超过2.5M字节
![](/icons/97518dou.gif)
这使它可用在大多数带图象显示功能
![](/icons/97518de.gif)
32位嵌入式Linux系统上
![](/icons/97518dou2.gif)
由于整个ViewML项目
![](/icons/97518de.gif)
源代码是开放
![](/icons/97518de.gif)
![](/icons/97518dou.gif)
因此其他开发者可以迅速理解ViewML并进
![](/icons/97518yi.gif)
步将它加以完善
7CgfbaiducukKnY