基于ARM的收款保险箱系统设计与实现 - 图文(8)

2019-03-21 20:35

西安科技大学硕士学位论文

4.4.1 MiniGUI的功能特点

作为操作系统和应用程序之间的中间件,MiniGUI将底层操作系统及硬件平台差别隐藏起来,并对上层应用程序提供了一致的功能特性。这些功能特性如下[33]:

(1) 遵循GPL条款的自由软件,全部源代码已经用户手册、编程指南、API参考手册等相关资料均可从internet上以近乎免费的成本获得。

(2) 提供了完备的多窗口机制和消息传递机制。

(3) 提供常用的控件类,包括静态文本框、按钮、单行和多行编辑框、列表框、组合框、进度条、属性页、工具栏、拖动条、树型控件、月历控件等。

(4) 对话框和消息框支持。

(5) 其它GUI元素,包括菜单、加速键、插入符、定时器等。

(6) 界面皮肤支持。用户可以通过皮肤支持获得外观非常华丽的图形界面。 (7) 通过两种不同的内部软件结构支持低端显示设备(比如单色LCD)和高端显示设备(比如彩色显示器),后者在前者的基础上提供了更加强大的图形功能。

(8) Windows的资源文件支持,如位图、图标、光标等。

(9) 各种流行图像文件的支持,包括JPEG、GIF、PNG、TGA、BMP等等。 (10) 多字符集和多字体的支持,目前支持ISO8859-1~ISO8859-15、GB2312、GBK、GB18030、BIG5、EUC-JP、Shift-JIS、EUC-KP、UNICODE等字符集,支持等宽点阵字体、变宽点阵字体、Qt/Embedded使用的嵌入式字体QPF、TrueType以及Adobe Typel等矢量字体。

(11) 多种键盘布局的支持。MiniGUI除支持常见的美式PC键盘布局之外,还支持法语、德语等西欧语种的键盘布局。

(12) 汉字(GB2312)输入法支持,包括内码、全拼、智能拼音等。用户还可以从飞漫软件获得五笔、自然码等输入法支持。

(13) 针对嵌入式系统的特殊支持,包括一般性的I/O流操作,字节序相关函数等。 (14) 层的支持。可以使用JoinLayer将一个客户程序加入到某个已由其它客户程序创建好的层中。如果成功,则处于同一层中的客户能够同时向屏幕上进行图形输出(该功能增加在MiniGUI-Lite版本中)。

(15) 借鉴著名的跨平台游戏和多媒体函数库SDL(Simple DirectMedia Layer)的新GAL接口即NEWGAL。提供了快速和增强的位块操作,视频加速支持以及Alpha混合等功能。

(16) 增强的新GDI函数,包括光栅操作、复杂区域处理、椭圆、圆弧、多边形以及区域填充等函数。

28

4 收款保险箱系统软件平台设计 (17) 图形抽象层(GAL)以及输入抽象层(IAL)。利用GAL和IAL,MiniGUI可以在许多图形引擎上运行,并且可以非常方便地将MiniGUI移植到其它POSIX系统上,而这只需要根据我们的抽象层接口实现新的图形引擎即可。基于QVFB图形引擎,MiniGUI应用程序可以运行在X Windows上,这将大大方便应用程序的调试。

4.4.2 MiniGUI的优势

比较目前几个面向实时嵌入式Linux系统的GUI,目前比较成熟同时得到最多开发人员认可的有MicroWindows、Qt/Embedded以及MiniGUI等三个系统[34]。相比较而言,MiniGUI在以下几个方面有其独特的优势。 (1) 轻型、占用资源少

MiniGUI本身的占用空间非常小,基于Linux和MiniGUI的嵌入式系统主要存储空间计算如下:

● Linux内核:300K~500K(由系统决定) ● 文件系统:500K~2MB(由系统需求决定) ● MiniGUI支持库:300K~500K(由编译选项确定)

● MiniGUI字体、位图等资源:400K(由应用程序确定,可缩小到200K以内) ● GB2312输入法码表:200K(不是必需的,由应用程序确定) ●应用程序:1M~2M(由系统决定)

总计应该在2M~4M左右。如果不需要某些特征,系统容量还可以更少。 (2) 高性能

MicroWindows采用的传统的基于UNIX套接字的客户/服务器系统结构。在这种体系结构下,客户建立窗口、绘制等都要通过套接字传递到服务器,由服务器完成实质工作。这样,系统非常依赖于UNIX套接字通讯;而UNIX套接字的数据传递,要经过内核,然后再传递到另外一个程序。这样,大量的数据在客户/内核/服务器之间传递,从而增加了系统负荷,也占用了许多系统资源。加上MicroWindows的图形引擎代码未经任何优化,因此,MicroWindows的图形效率很低。

Qt/Embedded是C++的函数库,影响其图形效率的原因,主要是C++的臃肿和由此造成的系统资源的极度浪费。从对用户操作的响应能力、应用程序的启动速度等方面看,Qt/Embedded的速度是最慢的。

MiniGUI为提高整体性能,首先采用了独特的体系结构,其次对图形系统进行了大规模的优化。 (3) 高可靠性

29

西安科技大学硕士学位论文

从1999年MiniGUI的第一个版本发布以来,就有许多产品和项目使用MiniGUI,MiniGUI本身也不断从这些产品或者项目中获得发展动力和新的技术要求,不断提高了自身的可靠性和健壮性。 (4) 可配置

嵌入式系统千变万化要求GUI系统可配置。通过Linux下的Automake和Autoconf接口,实现了大量的编译配置选项,通过这些选项可指定MiniGUI库中包括哪些功能而同时不包括哪些功能。大体说来,可以在如下几个方面对MiniGUI进行定制配置:

● 指定MiniGUI要运行的操作系统;

● 指定生成基于线程的MiniGUI-Threads版本还是基于进程的MiniGUI-Lite版本; ● 指定要采用老的GAL/GDI接口(低端显示设备)还是新的GAL/GDI接口(高端显示设备);

● 指定需要支持的GAL引擎和IAL引擎,以及引擎相关选项; ● 指定需要支持的字体类型; ● 指定需要支持的字符集; ● 指定需要支持的图像文件格式; ● 指定需要支持的控件类;

● 指定控件的整体风格,是三维风格还是平面风格; ● 其它。

总之,MiniGUI是一个非常适合于工业控制实时系统以及嵌入式系统的高效、可靠、可定制、小巧的图形用户界面支持系统。

4.4.3 MiniGUI图形界面的开发

1) MiniGUI在PC环境搭建

这里搭建的环境是让MiniGUI在PC机上运行,由于本系统应用程序开发时是在PC上开发的,在PC机交叉编译,把交叉编译好的可执行文件下载到板子上就可以了。

(1) 安装MiniGUI库文件

本系统使用libminigui-1.3.3.tar.gz这个包安装MiniGUI库文件。 (2) 安装qvfb

可以使用Ubuntu8.04内置的新立得软件包管理器来安装qvfb,点击显示器屏幕上方菜单栏的系统?系统管理?新立得软件包管理器,当管理器界面打开后点击搜索输入qvfb然后点击搜索,在搜索结果中选中qt3-dev-tools-embedded。然后点击应用安装完毕即可。

30

4 收款保险箱系统软件平台设计 (3) 安装MiniGUI资源文件

本系统使用minigui-res-1.3.3.tar.gz包安装MiniGUI资源文件[35]。 至此MiniGUI的PC环境搭建完毕。 2) MiniGUI交叉编译环境的搭建

MiniGUI的应用程序运行时要有动态库的支持,而最后无论是应用程序还是动态共享库都要在ARM平台上运行的,所以MiniGUI的库要利用ARM的编译器进行交叉编译。这里介绍MiniGUI交叉环境的搭建。

(1) 安装zlib库

本系统使用zlib-1.2.3.tar.gz包安装zlib库。由于zlib库的configure脚本不支持交叉编译选项,必须手动临时把gcc修改成指向我们的交叉编译器arm-linux-gcc。

(2) 安装png库

这个库是用来显示PNG图形的,MiniGUI里很多图片都是PNG的,如果没有这个库,MiniGUI将无法正常工作。本系统使用libpng-1.0.10rc1.tar.gz包安装png库。

(3) 安装jpeg库

安装jpeg库是用来显示JPG图形的,MiniGUI里有JPG图片,如果没有安装这个库,(4) 安装ttf字体支持库

最后安装libttf库,这个是TrueType字体的支持库,在嵌入式开发中还是经常会用的,最好也装上。系统中使用freetype-1.3.1.tar.gz包安装ttf字体库。

(5) 交叉编译MiniGUI

安装交叉编译MiniGUI前,首先要选择好编译器arm-linux-gcc,配置相关选项,如target目标平台选项选择arm-linux、build选项用来指明宿主机的类型这里使用i686-pc-linux-gnu、prefix选项用于指定MiniGUI函数库的安装路径等。配置好相关选项后,就可以编译和安装了,这里安装其实是给交叉编译器安装libminigui的库,为将来交叉编译含MiniGUI代码的程序做好准备。

(6) 安装MiniGUI资源文件

资源文件无需安装,只要将安装PC环境的所有MiniGUI资源文件拷贝到交叉编译环境的资源目录下即可。

至此MiniGUI交叉编译环境搭建完毕。

MiniGUI也将无法正常工作。本系统使用jpegsrc.v6b.tar.gz包安装jpeg库。

4.5 嵌入式数据库的设计与开发

在第1章绪论中,嵌入式数据库的设计方案中提出本嵌入式系统选用Berkeley DB

31

西安科技大学硕士学位论文

作为嵌入式数据库。Berkeley DB在数据存取方面非常高效。其高效性主要来自下面的两个方面[11]:

其一,使用Berkeley DB时,应用程序实际上是链接一个Berkeley DB提供的C库,这样运行时应用程序和所使用的数据库系统即C库都运行在同一个进程空间当中,而不是向远程服务器发送消息,从而消除了常见的客户端-服务器体系结构中所需要的进程间通信所导致的性能损耗。

其二,Berkeley DB提供简单的API来完成所有的数据库操作,而不是使用SQL语言,这样就减少了对结构化查询语言进行解析和处理所需的开销,提高了数据读取和查询效率。

Berkeley DB交叉编译环境的搭建,建立可以在ARM-Linux平台上运行的Berkeley DB库。本系统使用db-4.7.25.NC包安装数据库。

4.6 本章小结

本章主要介绍收款保险箱系统软件平台的设计,在介绍了收款保险箱系统软件平台的组成和软件平台的开发流程后,分别详细讲述了如何一步一步地构建嵌入式软件平台,包括Linux操作系统在9200上的移植分析、GUI图形界面的设计与开发和嵌入式数据库的设计与开发。

32


基于ARM的收款保险箱系统设计与实现 - 图文(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:议会制民主共和制与议会制君主立宪制的异同 区别

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: