Helper2416开发板移植minigui3.0.12系列

2019-08-03 14:59

Helper2416开发板移植minigui3.0.12之一:让PC运行minigui

笔者最近有时间学习嵌入式linux,于是熟悉了一下基本操作之后,选定了移植minigui作为一个练习。看了看官网说明,移植过程挺简单的,但整整三天之后,开发板首次显示出minigui版的helloworld。

第一阶段:PC运行minigui

这个工作是一定要做的,因为minigui同其他GUI程序开发类似,都是先在PC上编程、调试、模拟,成型之后再交叉编译灌入嵌入式设备。Helper2416开发板随机所带的虚拟机fedora12已经安装好了交叉编译链、zlib库,png库,jpeg库等,使移植工作大为简化。此文也不涉及到这几个库的移植,相关方法在手册4.6节有详述,网上文章也未提及移植这几个库出什么问题。 一. 搞定qvfb

qvfb是QT的一个附属程序,可以单独运行,跟minigui本身没什么联系,只是minigui可以拿它当作在PC上运行时的模拟屏幕。qvfb大致有以下几个获取方式。

1. minigui官网有一个qvfb2-2.0.tar.gz程序包,编译这个包需要Qt3的库。Qt3的库可以从QT官网下载编译。

2.Helper2416开发板随机提供了qtopia和Qt4的源码。按手册4.6节编译完qtopia之后,.../qtopia-2.2.0/qt2/bin/qvfb便是qvfb的可执行文件。

将此文件拷入PATH路径,然后用$lddqvfb命令查看一下所依赖的库,在.../qtopia-2.2.0/qt2/lib目录中找到相应的库,拷入/lib目录。

此时命令行直接输入$qvfb即可看到窗口界面。

3.对于Qt4,按手册4.7节编译完之后并不会自动生成qvfb可执行文件,需要单独进行编译。网上的参考步骤是:

(1).复制…/qt-everywhere-opensource-src-4.7.2/tools/shared/deviceskin.h,deviceskin.cpp两个文件 到…/qt-everywhere-opensource-src-4.7.2/tools/qvfb目录下

(2). 在qvfb文件夹下手动生成qvfb工程,即$qmake-project,生成qvfb.pro (3). $qmake,生成Makefile

(4). 手动修改Makefile 中 LIBS 选项: 末尾添加 -lXtst (5). $make即可得到可执行文件qvfb

按照这个步骤可以编译得到qvfb,但笔者实测发现Qt4编译出来的qvfb运行minigui程序时鼠标不正常,而qtopia的qvfb鼠标正常。

二. 安装资源包 minigui-res-be-3.0.12 解压 $tar zxf minigui-res-be-3.0.12.tar.gz 切入 $cd minigui-res-be-3.0.12 安装 $sudo make install

默认安装到/usr/local/share/minigui/res目录,包括bmp, cursor, font, icon四个东东 这是最轻松愉快的一项。

三. 编译核心库 libminigui-gpl-3.0.12

由于Helper2416开发板随机所带的虚拟机已经安装好了交叉编译链、zlib库,png库,jpeg库等,因此编译这几个库的步骤可以省略。即使需要编译,资料也很多。 解压 $tar xzvf libminigui-gpl-3.0.12.tar.gz 切入 $cd libminigui-gpl-3.0.12

配置 $./configure --enable-videoqvfb--enable-qvfbial

因为3.0.12版本默认不打开qvfb图像和输入引擎,如不加这两项,后面运行示例时,

会出现NEWGAL: Does not find matchedengine: qvfb 错误。 笔者在这上面耽误了好一阵时间。 编译 $make

出现./runme.sh: No such file ordirectory,不用管。 安装 $sudo make install

默认安装到/usr/local/目录: /usr/local/etc 运行时配置文件 /usr/local/lib 库文件

/usr/local/include/minigui 头文件 刷新库

在库文件搜索路径配置文件/etc/ld.so.conf里添加/usr/local/lib这一项; $sudo /sbin/ldconfig 命令刷新系统共享库搜索缓存。

四. 编译libmgplus-1.2.4

按字面意思libmgplus应该是minigui一个附加的库,缺少此库后续的示例程序包无法一次性全部编译,只能到时候需要哪个就单独编译哪个。而且奇怪的是官网并没有提供这个库的下载,csdn上有。 解压 $tar zxf libmgplus-1.2.4.tar.gz 切入$cd libmgplus-1.2.4

设置 $exportPKG_CONFIG_PATH=/usr/local/lib/pkgconfig

让编译器通过环境变量PKG_CONFIG_PATH找到前面安装的libminigui库,否则下面的配置通不过。

配置 $./configure 编译 $make

安装 $sudo make install

默认安装到/usr/loca/目录: /usr/local/lib 库文件

/usr/local/include/mgplus 头文件

五. 编译示例程序 mg-samples-3.0.12 解压 $tar zxf mg-samples-3.0.12.tar.gz 切入 $cd mg-samples-3.0.12

设置 $export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

让编译器通过环境变量PKG_CONFIG_PATH找到前面安装的libminigui和libmgplus库,否则下面的配置通不过。 配置 $./configure 编译 $make

成功则在src/目录下可以看到编译好的示例程序。

六. 运行示例程序

1. 修改minigui运行时配置文件:/usr/local/etc/MiniGUI.cfg,指定图形和输入引擎。 [system] gal_engine=qvfb ial_engine=qvfb 只需改这两行即可。

2. 启动qvfb,并通过菜单设置分辨率为800x600。启动时默认的分辨率太小,运行示例时会报错。 $qvfb & (qvfb也可以为其他名字) 3. 进入../mg-samples-3.0.12/src目录运行程序。 $./helloworld

万年长青的helloworld出现在你的眼前。

至此,minigui3.0.12到运行于PC的就告一段落了。 未完待续--->第二阶段:移植minigui到Helper2416开发板

Helper2416开发板移植minigui3.0.12之二:移植到开发板

第二阶段:移植minigui到Helper2416开发板

让开发板运行minigui要稍微麻烦一些,主要是配置时不能仅仅./configure就搞定,参考文章也不一定说得全对,可能需要自己阅读configure文件的配置选项,再加以实测。

此文假定开发板的根目录挂载到/myrootfs目录,minigui相应就安装到/myrootfs/usr/local目录。 /myrootfs由Helper2416开发板随机所带root-qtopia.tar.xz文件解压,改改名即可。

一. 安装资源包 minigui-res-be-3.0.12 解压 $tar zxf minigui-res-be-3.0.12.tar.gz 切入 $cd minigui-res-be-3.0.12

配置 $./configure --prefix=/myrootfs/usr/local 安装 $sudo make install

除了配置一下前缀,跟安装到PC上没有区别,仍然最轻松愉快的一项。

二. 编译核心库 libminigui-gpl-3.0.12 解压 $tar xzvf libminigui-gpl-3.0.12.tar.gz 切入 $cd libminigui-gpl-3.0.12

配置 书写配置脚本 cfg_libminigui_hlpr2416 (见下) $source ./cfg_libminigui_hlpr2416

书写一个配置脚本的好处显而易见:免得每次都敲一大堆字母,日后也可作为参考。 编译 $make

安装 $sudo make install

###### cfg_libminigui_hlpr2416 开始###### #!/bin/bash

rm config.cache config.status -f

TOOL_CHAINS_PATH=\INSTALL_PATH=\

export CC=${TOOL_CHAINS_PATH}/arm-linux-gcc

export RANLIB=${TOOL_CHAINS_PATH}/arm-linux-ranlib #compile need ./configure --prefix=${INSTALL_PATH} \\ --build=i386-linux \\ --host=arm-linux \\ --disable-pcxvfb \\ --disable-videoqvfb \\ --disable-screensaver \\

--enable-tslibial \\ --disable-pngsupport #选项说明

#--build=i386-linux 编译者 #--host=arm-linux 运行者

#--disable-pcxvfb 必须禁止,否则无法通过编译 #--disable-videoqvfb 禁止qvfb,此类选项可以选择禁止 #--disable-screensaver 禁止屏幕保护 #--enable-tslibial 使用触摸屏必须使能

#--disable-pngsupport 如果禁止png支持,则minigui.pc里Libs无-lpng项;jpeg类似 ###### cfg_libminigui_hlpr2416 结束######

三. 编译 libmgplus-1.2.4

跟在PC上一样,缺少此库后续的示例程序包无法一次性全部编译。 解压 $tar xzvf libmgplus-1_2_4.tar.gz 切入 $cd libmgplus-1_2_4

配置 书写配置脚本 cfg_libmgplus_hlpr2416 $source ./cfg_libmgplus_hlpr2416 编译 $make

安装 $sudo make install

###### cfg_libmgplus_hlpr2416 开始###### #!/bin/bash

rm config.cache config.status -f

TOOL_CHAINS_PATH=\INSTALL_PATH=\

export PKG_CONFIG_PATH=\export CC=${TOOL_CHAINS_PATH}/arm-linux-gcc

export CXX=${TOOL_CHAINS_PATH}/arm-linux-g++ #compile need export RANLIB=${TOOL_CHAINS_PATH}/arm-linux-ranlib #compile need export CXXFLAGS=\./configure --prefix=${INSTALL_PATH} \\ --build=i386-linux \\ --host=arm-linux

###### cfg_libmgplus_hlpr2416 结束######

四. 编译 tslib-1.4

虽然Helper2416开发板已经自带tslib库,但安装位置跟默认不一致,因此重新编译安装一下,避免后续编译示例程序包的时候到处去寻找,编译也并不麻烦。 解压 $tar xzvf tslib-1.4.tar.gz 切入 $cd tslib-1.4

配置 书写配置脚本 cfg_tslib_hlpr2416 $source ./cfg_tslib_hlpr2416 编译 $make

安装 $sudo make install

###### cfg_tslib_hlpr2416 开始###### #!/bin/bash

rm config.cache config.status -f

TOOL_CHAINS_PATH=\INSTALL_PATH=\

export CC=${TOOL_CHAINS_PATH}/arm-linux-gcc ./configure --prefix=${INSTALL_PATH} \\ --build=i386-linux \\ --host=arm-linux \\

###### cfg_tslib_hlpr2416 结束######

五. 编译示例程序包 mg-samples-3.0.12 解压 $tar xzvf mg-samples-3.0.12.tar.gz 切入 $cd mg-samples-3.0.12

配置 书写配置脚本 cfg_mg-samples_hlpr2416 $source ./cfg_mg-samples_hlpr2416 编译 $make

成功则在src/目录下可以看到编译好的示例程序。 ###### cfg_mg-samples_hlpr2416 开始###### #!/bin/bash

rm config.cache config.status -f

TOOL_CHAINS_PATH=\INSTALL_PATH=\

export PKG_CONFIG_PATH=\export CC=${TOOL_CHAINS_PATH}/arm-linux-gcc

export CFLAGS=\export LIBS=\./configure \\

--build=i386-linux \\ --host=arm-linux \\ #export CFLAGS

# 虽然指定了 PKG_CONFIG_PATH ,但貌似并没把Cflags提取出来,这里依然要指定 # 否则找不到 minigui/common.h #export LIBS=\

# 虽然指定了 PKG_CONFIG_PATH ,但貌似并没有把Libs提取出来,依然要指定选项 # 否则无法链接tslib

###### cfg_mg-samples_hlpr2416 结束######

六. 在开发板运行minigui

1. 由于tslib重新编译安装过,因此要将/myrootfs/usr/local/etc/ts.conf文件的第2行 #module_raw input 前的#去掉

2. 修改运行时配置文件 /myrootfs/usr/local/etc/MiniGUI.cfg [system]

gal_engine=pc_xvfb --> gal_engine=fbcon

ial_engine=pc_xvfb --> ial_engine=tslib [fbcon]

defaultmode=1024x768-16bpp --> defaultmode=480x272-16bpp 此行必须与实际屏对应,否则运行时出错。 只需修改这3行。

3. 修改 /myrootfs/etc/init.d/rcS,禁止qtopia自动运行

4. 参照 /myrootfs/bin/qtopia 脚本编写一个触摸屏配置脚本cfg_ts,拷贝到 /myrootfs 目录 5. 启动开发板,根目录挂载到宿主机 /myrootfs 目录 开发板执行触摸屏配置脚本 #source /cfg_cs

5. 将 mg-samples-3.0.12/src 目录的可执行程序拷入开发板即可执行; 也可以通过nfs挂载/src目录并执行。 ###### cfg_ts 开始###### #!/bin/sh # tsconfig begin unset TS_INFO_FILE if [ -c /dev/input/event0 ]; then INPUT_PATH=/dev/input else

INPUT_PATH=/dev fi

export TSLIB_TSDEVICE=$INPUT_PATH/event1 export TSLIB_CONFFILE=/usr/local/etc/ts.conf export TSLIB_PLUGINDIR=/usr/local/lib/ts export TSLIB_CALIBFILE=/etc/pointercal export TSLIB_TSEVENTTYPE=H3600 export TSLIB_FBDEVICE=/dev/fb0 # tsconfig end

export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib/ts:$LD_LIBRARY_PATH ###### cfg_ts 结束######


Helper2416开发板移植minigui3.0.12系列.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:大企业科和国际税收类试题

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

马上注册会员

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