本文来自:
http://blog.chinaunix.net/uid-23093301-id-86395.html
MiniGUI的移植
● MiniGUI图形支持库的组成
本课题选用MiniGUI的版本为libMiniGUI-1.6.10 。
编译完成后生成三个库:它们分别是libMiniGUI、libmgext以及libvcongui。
1) libMiniGUI 为MiniGUI的核心库,提供标准控件。
2) libmgext 是MiniGUI 的扩展库,提供“文件打开”、“颜 {MOD}选择”等高级对话框等;
3) libvcongui 支持虚拟控制台窗口的函数库。
● 移植资源文件
本课题选用MiniGUI的版本为MiniGUI-res-1.6.10
资源文件包括基本字体、图标、位图和鼠标光标。
● MiniGUI所依赖函数库
MiniGUI需要交叉编译其依赖的以下函数库:
1) zlib库,zlib是提供数据压缩用的函式库,zlib使用DEFLATE算法。
2) png库,png 图片支持库。
3) jpeg库,jpeg 图片支持库
4) ttf库,TrueType 字体的支持库
编译libMiniGUI,需要添加必须的交叉编译选项。
./configure
--prefix=/root/MiniGUI/arm/target
--host=arm-linux
--target=arm-linux
--build=i386-linux
--with-osname=linux
--with-style=classic
--with-targetname=fbcon
--enable-autoial
--enable-rbf16
--disable-vbfsupport
CC=arm-linux-gcc
# make
# make install
● 复制MiniGUI相关文件到嵌入式系统根文件系统
主要是将MiniGUI库文件、资源文件、和MiniGUI所依赖的函数库复制到指定的嵌入式系统根文件系统目录。
● 复制和修改MiniGUI的配置文件
MiniGUI
的配置文件为MiniGUI.cfg ,一般将其此文件放置到/etc目录下。需要根据我们的开发板进行修改,主要是设置图形设备引擎、输入设备及图形设备大小和显示位数。需要修改的字段如下:
1) gal_engine=fbcon 设置图形引擎为帧缓冲控制台
fbcon
2)ial_engine=cosole 设置输入引擎为控制台
3)mdev=dummy 不需要鼠标输入
4)Defaultmode选项用于设置显示器分辨率,由于本课题选用的是3.5 寸液晶LCD,故设置为:Defaultmode=320x240-16bpp。
3.1.2 基于MiniGUI的显示模块实现
MiniGUI
的显示模块初始化一个
320*240的窗口,然后创建一个环形缓冲区,当缓冲区有数据时,MiniGUI立即将其显示,如果缓冲区无视频数据,则MiniGUI模块阻塞在条件变量上,当有图像数据到达时,条件变量被激活,MiniGUI立即将视频图像显示到
LCD上。
MiniGUI显示模块程序流程图所示: