MiniGUI3.0在mini6410上的移植
![MiniGUI3.0在mini6410上的移植](https://img.360docs.net/imgcd/066b55nr2f4adnegw6xs-d1.webp)
![MiniGUI3.0在mini6410上的移植](https://img.360docs.net/imgcd/066b55nr2f4adnegw6xs-c2.webp)
MiniGUI3.0在mini6410上的移植
简介
MiniGUI 是一款面向嵌入式系统的高级窗口系统(Windowing System)和图形用户界面(Graphical User Interface,GUI)支持系统,由魏永明先生于1998 年底开始开发。2002 年,魏永明先生创建北京飞漫软件技术有限公司,为MiniGUI 提供商业技术支持,同时也继续提供开源版本,飞漫软件是中国地区为开源社区贡献代码最多的软件企业。最后一个采用GPL 授权的MiniGUI 版本是 1.6.10,从MiniGUI 2.0.4 开始MiniGUI 被重写并使用商业授权,从3.0.12开始,部分版本使用GPL授权。历经十余年时间,MiniGUI 已经成为性能优良、功能丰富的跨操作系统嵌入式图形用户界面支持系统,支持Linux/uClinux、eCos、uC/OS-II、VxWorks、ThreadX、Nucleus 、pSOS、OSE 等操作系统和数十种SoC芯片,已验证的硬件平台包括ARM-based SoCs、MIPS based SoCs、IA-based SoCs、PowerPC、M68K(DragonBall /ColdFire)、Intel x86 等等。
准备工作
交叉编译器
友善提供,具体安装参考mini6410的使用手册;
源码的下载
从miniGUI官网上下载,需要有新浪账号或者twitter账号。下面是我下载的版本。
[root@localhost minigui]# ls -l *.tar.gz
-rwxrw-rw-. 1 root root 1427072 Jan 16 17:30 freetype-1_3_1.tar.gz
-rw-rw-r--. 1 root root 63582 Jan 16 17:31 gvfb-1_0_0.tar.gz
-rw-rw-r--. 1 root root 602762 Jan 16 17:32 qvfb2-2_0.tar.gz
-rwxrw-rw-. 1 root root 557220 Feb 11 00:56 zlib-1.2.6.tar.gz
-rwxrw-rw-. 1 root root 1059513 Feb 11 00:55 libpng-1.5.8.tar.gz
-rwxrw-rw-. 1 root root 986681 Feb 10 23:42 jpegsrc.v8c.tar.gz
-rw-rw-r--. 1 root root 340656 Jan 16 17:33 libmg3d-1_0_2.tar.gz
-rw-rw-r--. 1 root root 1545209 Jan 16 17:34 libmgi-2_0_4.tar.gz
-rw-rw-r--. 1 root root 1116885 Jan 16 17:33 libmgp-1_2_2.tar.gz
-rw-rw-r--. 1 root root 648207 Jan 16 17:34 libmgplus-1_2_4.tar.gz
-rw-rw-r--. 1 root root 659702 Jan 16 17:33 libmgutils-1_0_4.tar.gz
-rw-rw-r--. 1 root root 3202804 Jan 17 00:29 libminigui-gpl-3_0_12.tar.gz
-rw-rw-r--. 1 root root 2608473 Jan 16 17:29 mg-samples-3_0_12.tar.gz
-rw-rw-r--. 1 root root 3449215 Jan 16 17:29 minigui-res-be-3_0_12.tar.gz
官网上有几个库的版本太低,所以需要自己去网上下载,其中jpegsrc.v8c.tar.gz、libpng-1.5.8.tar.gz和zlib-1.2.6.tar.gz都是从网上找的最近版本(png和zlib这两个soucefoge上都有,前面一个是网上搜的,所以不能保证链接长期有效,但是网上搜一下还是比较容易找到的)。其实我也是在运行例子程序的时候才发现问题的,库更新后就可以正常运行了。
简单介绍一下使用到的几个库。
freetype:FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。支持单色位图、反走样位图的渲染。FreeType库是高度模块化的程序库,虽然它是使用ANSI C开发,但是采用面向对象的思想,因此,FreeType的用户可以灵活地对它进行裁剪。
gvfb与qvfb2:这两个主要用于pc上仿真,在嵌入式平台上没用,就不做说明。
zlib:zlib是提供数据压缩用的函式库,由Jean-loup Gailly与Mark Adler所开发,初版0.9版在1995年5
月1日发表。zlib使用DEFLATE算法,最初是为libpng函式库所写的,后来普遍为许多软件所使用。libpng:这个是用来显示png图形的,MiniGUI里很多图都是png的,如果没有这个库,MiniGUI将无法正常工作。
jpeg:用于显示jpeg图像,否则程序不能正常运行。
minigui-res:minigui3.0工具栏所使用的资源集合,包括字体、图标、位图等。
libminigui:minigui3.0的核心库。
mg-samples:minigui3.0的例子程序,有一两个小游戏,可以玩玩~~
minigui可选组件:libmg3d(3D支持)、libmgi(提供输入接口)、libmgp(提供打印机接口的支持)、libmgplus (2D矢量图支持和图像加速)、libmgutils(提供一些常用对话框的模板),可以根据自己的需要使用,在跑例子程序的时候使用到了libmgplus,所以就临时编了它的lib。
交叉编译图像库
先将代码解压到你所放置代码的位置,然后再进行如下步骤来编译安装图像库。我的安装目录是:/usr/local/minigui,可以根据自己的习惯和喜好安装在其他目录,通过prefix参数来配置安装目录。
编译zlib库
编译与配置脚本:
[root@localhost] CC=arm-linux-gcc \
CXX=arm-linux-g++ \
LD=arm-linux-ld \
AS=arm-linux-as \
AR=arm-linux-ar \
./configure --prefix=/usr/local/minigui \
--shared
#配置完成后
[root@localhost] make
[root@localhost] make install
编译png库
[root@localhost] CC=arm-linux-gcc \
CXX=arm-linux-g++ \
LD=arm-linux-ld \
AS=arm-linux-as \
AR=arm-linux-ar \
./configure --prefix=/usr/local/minigui \
--build=i386-linux \
--host=arm-linux \
--target=arm-linux
[root@localhost] make
[root@localhost] make install
编译Jpeg库
[root@localhost] CC=arm-linux-gcc \
CXX=arm-linux-g++ \
LD=arm-linux-ld \
AS=arm-linux-as \
AR=arm-linux-ar \
./configure --prefix=/usr/local/minigui \
--host=arm-linux \
--target=arm-linux \
--enable-shared
[root@localhost] make
[root@localhost] make install
编译freetype库
自动配置还有问题,也没有尝试高版本的freetype能不能使用,暂时就先这样,好像例子代码里面并没有使用它。后面再尝试高版本的freetype。
[root@localhost] cd freetype-1.3.1/
[root@localhost] ./configure --host=arm-linux --enable-static --prefix=/usr/local/minigui
[root@localhost] vim config.cache
# 修改如下行
ac_cv_path_LD=${ac_cv_path_LD=arm-linux-gnu-ld}
ac_cv_prog_CC=${ac_cv_prog_CC=arm-linux-gnu-gcc}
ac_cv_prog_CPP=${ac_cv_prog_CPP='arm-linux-gnu-gcc -E'}
#重新配置
[root@localhost] ./configure --host=arm-linux --enable-static --prefix=/usr/local/minigui
# 修改Makefile文件,以跳过编译test目录。
# 去掉“all:”后的变量“tttest”
# 注释掉“install:”下的第二行:“cd $(FTTESTDIR); $(MAKE) –f$(MAKEFILE) install”
[root@localhost] make
[root@localhost] make install
安装minigui资源库
[root@localhost] CC=arm-linux-gcc \
CXX=arm-linux-g++ \
LD=arm-linux-ld \
AS=arm-linux-as \
AR=arm-linux-ar \
./configure --prefix=/usr/local/minigui
[root@localhost] make
[root@localhost] make install
编译minigui核心库
配置脚本:
[root@localhost] CC=arm-linux-gcc \
CXX=arm-linux-g++ \
LD=arm-linux-ld \
CFLAGS="-I/usr/local/minigui/include
-I/opt/arm/toolschain/4.5.1/arm-none-linux-gnueabi/include " \
CPPFLAGS="-g -I/usr/local/minigui/include -I/opt/arm/toolschain/4.5.1/arm-none-linux-gnueabi/include " \
CXXFLAGS="-g -I/usr/local/minigui/include -I/opt/arm/toolschain/4.5.1/arm-none-linux-gnueabi/include " \
./configure --prefix=/usr/local/minigui \
--target=arm-linux \
--build=i386-linux \
--with-osname=linux \
--with-style=classic \
--with-targetname=fbcon \
--enable-autoial \
--enable-rbf16 \
--disable-vbfsupport
[root@localhost] make
[root@localhost] make install
遇到错误:pcxvfb.c:490:13: error: impossible constraint in ‘asm’,因为使用了错误的头文件,解决方法如下:mv select.h select.h.bak
cp /opt/arm/toolschain/4.5.1/arm-none-linux-gnueabi/include/bits/select.h ./
rm select.h
mv select.h.bak select.h
编译minigui例子程序
例子程序也不是一帆风顺的,从配置到最后编译都会有问题。具体配置脚本如下:
[root@localhost] CC=arm-linux-gcc \
CXX=arm-linux-g++ \
LD=arm-linux-ld \
CFLAGS="-I/usr/local/minigui/include
-I/opt/arm/toolschain/4.5.1/arm-none-linux-gnueabi/include " \
CPPFLAGS="-g -I/usr/local/minigui/include -I/opt/arm/toolschain/4.5.1/arm-none-linux-gnueabi/include " \
CXXFLAGS="-g -I/usr/local/minigui/include -I/opt/arm/toolschain/4.5.1/arm-none-linux-gnueabi/include " \
./configure --prefix=/usr/local/minigui \
--build=i386-linux \
--host=arm-linux \
--target=arm-linux
在配置阶段或遇到环境变量的问题,但是在配置了环境变量后还是出现错误,就直接在configure文件中添加了变量,这样才通过配置。修改如下:
vim configure
# 在$as_echo_n "checking for MINIGUI... " >&6; }后添加如下变量:
MINIGUI_CFLAGS = /usr/local/minigui/include
MINIGUI_LIBS = /usr/local/minigui/lib
然后开始make,又出现如下错误:no such file: File format not recognized collect2: ld returned 1 exit status。经过网上查资料后发现是生成的Makefile有问题,需要逐个修改Makefile。修改每个Makefile钟的如下行:LIBS = lminigui_ths
LDFLAGS = L/usr/local/minigui/li
b
这样就可以通过编译并生成可执行文件了。
部署图像库
其实这个工作很简单,主要有两个步骤,一个修改minigui的配置文件,另一个是拷贝库文件到文件系统就可以了。配置文件在minigui的wiki上也有较详细的介绍,可以参考:《MiniGUI V3.0 的运行》
修改配置文件:
$ vim /usr/local/minigui/etc/MiniGUI.cfg
# 修改如下参数
# GAL engine and default options
gal_engine=fbcon
# IAL engine
ial_engine=console
mdev=/dev/input/mice
mtype=IMPS2
# 根据实际的显示大小填
[fbcon]
defaultmode=480x272-16bpp
拷贝库到文件系统:
$ cp /usr/local/minigui/* /myrootfs/usr/local
拷贝你的例子程序就可以在开发板上运行了~~
参考文档和链接
minigui的wiki
MiniGUI-1.6.10 MiniGUI-1.6.10在mini2440上的移植(网络文档)
miniGUI官网
标签:6410, linux, miniGUI
6 条评论
yang_chenxi
2012/06/09 11:51 上午
你好!
我按照你的步骤,但是例子程序一直都编译不过。我跳过这一步,自己写了一个程序。但是一直报错如下:[\root]#./usr/hello
KERNEL>InitGUI: Initialization of GDI failure!
KERNEL>InitGUI: Init failure, please check your MiniGUI configuration or resource.
请问你遇到过这个问题吗?如果能解决希望你能把解决方法发到我邮箱里。
谢谢!
回复
gaoliang
2012/06/11 10:10 下午
看你的这个命令貌似是执行命令,报出的错误应该是配置文件错误,你查看一下你MiniGUI.cfg,对比一下试一下。如果没有搞定可以邮件我。
回复
demoxie
2012/06/11 6:20 下午
请教SG壁虎:
minigui的例程在我的arm板上报错:Inconsistency detected by ld.so: dl-deps.c: 622: _dl_map_object_deps: Assertion `nlist > 1′ failed!
我用的是ubuntu 10.04.3, 需要交叉编译到2.6.37的系统上,用的是arm-none-linux-gnueabi-gcc。
当把liminigui, minigui-res, mg-samples编译好了后.
–prefix=多是/home/xgh/work/minigui/
然后把这个目录下的内容cp到arm板子上的/usr/local/minigui下,
然后把mg-samples/src下编译好的例程cp到arm板的系统上,运行该例程:报::
Inconsistency detected by ld.so: dl-deps.c: 622: _dl_map_object_deps: Assertion `nlist > 1′ failed!
请问会是什么问题吗?
我编一个简单的hello.c(只有printf)。只用arm-none-linux-gnueabi-gcc hello.c -o hello,生成的可执行文件能在arm板上运行。
一旦加上-lminigui_ths, ljpeg, lpng, -lpthread, -ldl -lml… 就会上面同样的错误
回复
gaoliang
2012/06/11 10:15 下午
应该是你开发班上的ld.so和你执行编译minigui的库是不一样的,你可以试着把你编译器下面的拷贝到arm 板上。可能是arm板上和编译使用的库不同造成的。
回复
alai
2012/08/03 4:56 下午
请问遇到错误:pcxvfb.c:490:13: error: impossible constraint in ‘asm’ 这个错误,解决方法那几个操作是在那个目录下操作的??
回复
alai
2012/08/07 3:19 下午
怎么我在Hi3515开发板上运行minigui3.0的例子,运行大概10秒就黑掉的??
回复
系统测试报告记录模板(绝对实用)
系统测试报告记录模板(绝对实用)
————————————————————————————————作者:————————————————————————————————日期:
XXX项目软件测试报告 编制: 审核: 批准:
文档变更记录 版本编号修订日期修订内容修订人备注
目录 1概述 (6) 2测试概要 (6) 2.1进度回顾 6 2.2测试环境 7 2.2.1软硬件环境 7 2.2.2网络拓扑 8 3测试结论 (8) 3.1测试记录 8 3.2缺陷修改记录 8 3.3功能性 8 3.4易用性 9 3.5可靠性 9 3.6兼容性 9 3.7安全性 9 4缺陷分析 (10) 4.1缺陷收敛趋势 10 4.2缺陷统计分析 11 5遗留问题分析 (12) 5.1遗留问题统计 12
1概述 说明项目测试整体情况,经过等。 2测试概要 XX后台管理系统测试从2007年7月2日开始到2007年8月10日结束,共持续39天,测试功能点174个,执行2385个测试用例,平均每个功能点执行测试用例13.7个,测试共发现427个bug,其中严重级别的bug68个,无效bug44个,平均每个测试功能点2.2个bug。 XX总共发布11个测试版本,其中B1—B5为计划内迭代开发版本(针对项目计划的基线标识),B6-B8为回归测试版本。计划内测试版本,B1—B4测试进度依照项目计划时间准时完成测试并提交报告,其中B4版本推迟一天发布版本,测试通过增加一个人日,准时完成测试。B5版本推迟发布2天,测试增加2个人日,准时完成测试。 B6-B11为计划外回归测试版本,测试增加5个工作人日的资源,准时完成测试。 XX测试通过Bugzilla缺陷管理工具进行缺陷跟踪管理,B1—B4测试阶段都有详细的bug分析表和阶段测试报告。 2.1 进度回顾 版本名称测试起始时间测试结束时间测试人员测试地点
系统检测(调试)记录GD3010257
fli'liWi Mil ll>. Iri n. li.. 1.1 齡 l|" 4 HP4 MMr iQnXtl-M7.- ^rtllrWL^ 丄轉FJrfMi 3- 1 f 44J4W4 U-M -tt-411 MS. T4 rfeMH^B- ■?,吧WbEUFNItlt 厦l£ f. 用尺黑WW ■匝?f |.轉Wt V-il, HiaHifl4i|lH ninHivflli ? ii iHmtiwwi#-* S ? UlA 3JJ 1^. LUt?< J Lff^C4- mi^YTliFF^ nn 通风与空调节能 系统检测(调试记录 注:i.本表为通用表,适用于各种类的系统检测(调试记录(包括联动测试记 录。2.应用本表时,表名中的横线应规范地填写系统 (子系统的准确名称。 ? N I UK ffr.H- ■ J 'I -* ■'石il 耳■” IN 1. | i t ■何 峠■變/Kb < Munh _ .1 i □iWi ■ VJiBi mtaidtrfJrt ?:L ? HiMirief >W■ Hi kUpM-Wii 14i ? nirBBhh*.-! jtKU.itu.H'M-tt.x * 匚着孑 JL W >l as -.liiii ........... .. . ... \7 Wi wIM IMMiti4il. W-址* EW i-k .mt >i4414 M, -4V t v < i M i nm 1 1 10 lt*KMj g ] J ■ ■七心?* 肃&?*宅itf ■ ■lint Mil ID ft U If -t 1 - H! ■ P ,■■ i fl*1 L wi m i tsi a 4 1^4 Mil', ?hl 一、系统调试及检测 7.1 系统调试、运行方案 系统调试是否顺利,对于整个系统是否正常运行起着决定性的作用。显然调试在整个工程中是一个非常重要的环节。 7.1.1 准备工作及调试条件 在系统调试必须具备以下条件: 设备机房必须有良好的照明和正确的电源; 当涉及与其他有关厂家机电设备接口时,厂家必须有人配合; 中心机房必须装修完整,清扫干净,并且有充足的照明和电源; 系统调试工具到位。 7.1.2 调试时间 考虑本工程项目施工工期情况,我司在设备安装时即进行相应设备的现场单体调试,利用平行施工的方法来保证工期。 7.1.3 系统调试的实施步骤 单体设备调试: 线缆测试完毕,可进行单体设备如传感器、控制器等的通电、编码、性能调试等。调试时,要观察设备受电情况、表针指示等,对运转不正常的设备应立即断电检查。调试通过,做好调试记录,作为能开始系统调试的必备条件,部分可作为主要设备中间验收交付的依据。 系统集成调试: 在各单体设备调试完成的基础上,才能实现系统集成调试。系统集成阶段,系统均已开通运行,故必须明确系统的功能和相应的接口界面(包括技术数据接口、设备材料供应界面、操作使用界面等),明确工程公司、设备供应商的职责,工程接口界面今可能标准化、模块化、规范化。调试步骤为:中央监控设备-现场控制器-分区域端接好的终端设备-程序演示-开通。系统集成调试应按设计要求和计划进度逐项进行,做好调试记录,作为系统可以投入试运行的依据。 调试结果: 调试过程中所有技术参数和运行数据都分布分项记录归档,并提交业主。 7.2 系统检验测试 BA系统的检测工作首先要根据工程设计文件和合同技术文件全面了解整个系统的功能和性能指标。被检测系统的业主与工程承包商需提供的主要文件有系统选型论证、系统规模容量、控制工艺说明、系统功能说明及性能指标、BA系统结构图、系统控制原理图、BA系统设备布置与布线图、与BA系统监控相关的动力配电箱电气原理图、现场设备安装图、DDC站与中央管理工作站\操作员站的监控过程程序流程图、中央监控室设备布置图、BA系统供货合同及工程合同、BA系统施工质量检查记录、相关的工程设计变更单、BA系统运行记录。在此基础上,根据BA系统的验收标准,制定出一套合理的BA系统检测方案。 检测一般分为三个层次:中央监控站、子系统(DDC站)与现场设备(传感器、受送器、执行机构等)来进行功能检测。 7.2.1 中央监控站的检测 中央管理工作站是否具有对所有监控点进行监视的功能,是否对部分控制点具有远程遥控功能。中央管理工作站是否采用汉化图形界面。以便于操作人员工作。中央管理工作站是否能实时记录各种运行状态信息、故障报警信息、各种统计数据,发生报警时有关系统的画面或数据能自动调出显示。中央管理工作站存储的历史数据时间是否大于三个月。检测的项目如下: 在中央监控站上观察现场状态的变化,中央监控站屏幕上的状态数据是否不断被刷新及其响应时间; 通过中央监控站控制下属系统模拟输出量或数字输出量,观察现场执行机构或对象是否动作正确、有效及动作响应返回中央监控站的时间; 人为在DDC站的输入侧制造故障时,观察在中央监控站屏幕是否有报警故障数据登陆,并发出声响提示及其响应时间; 人为制造中央监控站失电,重新恢复送电后,中央监控站能否自动恢复全部监控管理功能; 检测中央监控站是否对进行操作的人员赋予操作权限,以确保BA系统的安全。BA系统调试和检测