MiniGUI3.0+tslib1.4移植过程
Helper2416开发板移植minigui3.0.12系列
Helper2416开发板移植minigui3.0.12之一:让PC运行minigui笔者最近有时间学习嵌入式linux,于是熟悉了一下基本操作之后,选定了移植minigui作为一个练习。
看了看官网说明,移植过程挺简单的,但整整三天之后,开发板首次显示出minigui版的helloworld。
第一阶段:PC运行minigui这个工作是一定要做的,因为minigui同其他GUI程序开发类似,都是先在PC上编程、调试、模拟,成型之后再交叉编译灌入嵌入式设备。
Helper2416开发板随机所带的虚拟机fedora12已经安装好了交叉编译链、zlib库,png库,jpeg库等,使移植工作大为简化。
此文也不涉及到这几个库的移植,相关方法在手册4.6节有详述,网上文章也未提及移植这几个库出什么问题。
一. 搞定qvfbqvfb是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鼠标正常。
嵌入式Linux环境下MiniGUI的研究与移植
嵌入式Linux环境下MiniGUI的研究与移植近年来随着设备与市场需求的广泛结合,手机、PDA等产品的应用对可视化操作界面的简洁和便利提出了更高的要求,这都需要一个稳定牢靠的高性能GUI系统来提供支持。
图形用户界面(Graphic User Interface,简称GUI)的广泛流行是当今计算机技术的重要成就之一,它极大地便利了非专业用户的用法,人们可以通过窗口、菜单便利地举行操作。
嵌入式系统对GUI的基本要求包括有轻型、占用资源少、高性能、高牢靠性以及可配置等。
MiniGUI是目前比较常用的几种GUI系统之一,与其他的GUI相比,MiniGUI最显著的特点就是轻型、占用资源少,而且在这几年的进展里,MiniGUI已经十分成熟和稳定了,在许多产品和项目中都已得到了实际应用。
1 MiniGUI的特点和体系结构1. 1 MiniGUI的特点MiniGUI是由原清华高校老师魏永明主持开发的轻量级图形系统,是一种面对嵌入式或实时系统的图形用户界面支持系统。
它遵循GPL公约,是基于SVGALib及Thread库的多窗口GUI支持系统。
能跨多种操作系统,主要运行于linux及一切具有POSIX线程支持的POSIX兼容系统,包括一般嵌入式Linux、eCos、uC/OS-II、等系统,是国内最早的自由软件之一。
MiniGUI的主要特点有:(1) 遵循GPL条款的纯自由软件;(2) 提供了完备的多窗口机制;(3) 多字符集和多字体支持,目前支持ISO8859-1、GB2312及Big5等字符集,并且支持各种光栅字体和TrueType、Type1等矢量字体;(4) 全拼和五笔等汉字输入法支持;(5) BMP、GIF、JPEG及PCX等常见图像文件的支持;(6) Windows的资源文件支持,如位图、图标、光标、插入符、定时器及加速键等;(7) 可移植性好。
1.2 MiniGUI的体系结构1.2.1 多线程的分层设计从整体结构上看,MiniGUI是分层设计的,结构1所示。
tslib+Mnigui移植到2440总结
}
tslib与minigui中对于压力参数的规定刚好相反,tslib规定samp[0].pressure> 0是按下,samp[0].pressure == 0是手松开而事实是相反的
{
..................................................................
..................................................................
修改的代码
/* Read until we get a touch. */
*x = samp[middle].x;
else
*x = (samp[middle-1].x + samp[middle].x) / 2;
////////////////////////////////////////////////////////////////////////////
do {
if (ts_read_raw(ts, &samp[0], 1) < 0) {
perror("ts_read");
close_framebuffer();
exit(1);
}
} while (samp[0].pressure > 0);
do {
if (ts_read_raw(ts, &samp[0], 1) < 0) {
以上两点是我修改的地方,在各位达人的帖子中还看到了其他的一些修改,我开始也照搬用了,反而出错
MiniGui-Tslib错误解决方法
移植了新内核版本2.6.38,然后想重新做个qt文件系统,我利用busybox制作一个基本文件系统,烧写到开发板上,然后就想先试试tslib触摸屏校准是否好用,刚开始使用的是tslib1.14这个版本,编译后下载到文件系统上,设置好环境变量,运行ts_calibrate ,然后就出来了一句话:“selected device is not a touchscreen I understand”,点击触摸屏无反应,赶紧查看原因,1、查看内核启动信息,有如下内容:mousedev: PS/2 mouse device common for all micesamsung-ts s3c2410-ts: driver attached, registering input deviceinput: S3C24XX TouchScreen as /devices/virtual/input/input02.cd dev/input,ls,显示有event0 mice mouse0,再ls -lcrw------- 1 0 0 13, 64 Jan 1 00:00 event0crw------- 1 0 0 13, 63 Jan 1 00:00 micecrw------- 1 0 0 13, 32 Jan 1 00:00 mouse03.然后cat /proc/bus/input/devicesI: Bus=0019 Vendor=dead Product=beef Version=0102N: Name="S3C24XX TouchScreen"P: Phys=S: Sysfs=/devices/virtual/input/input0U: Uniq=H: Handlers=mouse0 event0B: PROP=0B: EV=bB: KEY=400 0 0 0 0 0 0 0 0 0 0B: ABS=34.cat /dev/input/event0,点击触摸屏,显示乱码。
1_MiniGUI移植实验
广州致远电子有限公司
MagicARM2410教学实验开发平台
4.实验预习要求
必须先做<< 实验指导>> 必须先做 <<… 实验指导>> 第 5 、6 章的实验 ,在 RedHat <<… >>第 章的实验, 操作系统上建立交叉编译环境, Linux 9.0操作系统上建立交叉编译环境,掌握交叉编译 和下载Linux应用程序到MagicARM2410上并运行 Linux应用程序到MagicARM2410上并运行; 和下载Linux应用程序到MagicARM2410上并运行; <<… 仔 细 阅 读 <<… 实 验 指 导 >> 第 1 章 的 内 容 , 了 解 MagicARM2410 实验箱的硬件结构, 2410实验箱的硬件结构 MagicARM2410 实验箱的硬件结构 , 注意彩色液晶屏驱动 电路; 电路; 阅读MiniGUI的文档<<MiniGUI用户手册>> MiniGUI的文档<<MiniGUI用户手册>>、 阅读MiniGUI的文档<<MiniGUI用户手册>>、<<MiniGUI 编程指南>> 了解MiniGUI的基本特点和应用配置选项, >>, MiniGUI的基本特点和应用配置选项 编程指南>>,了解MiniGUI的基本特点和应用配置选项, 以及应用程序的编写。 以及应用程序的编写。
广州致远电子有限公司
MagicARM2410教学实验开发平台
2.实验设备
硬件: 硬件: PC机 PC机 1台 MagicARM2410教学实验开发平台 MagicARM2410教学实验开发平台 1台 USB鼠标 USB鼠标 1个 USB键盘 USB键盘 1个 软件: 软件: 9.0操作系统 安装有Autoconf 操作系统( Autoconf和 RedHat Linux 9.0操作系统(安装有Autoconf和 Automake工具 工具) Automake工具) 嵌入式Linux Linux开发环境 嵌入式Linux开发环境 MiniGUILinux)软件 MiniGUI-STR(for Linux)软件
QT-Linux安装操作
移植tslib到mini24401、解压tslib1.4.2、编译过程:a、./autogen.shb、echo ac_cv_func_malloc_0_nonnull=yes>arm-linux.cachec、./configure --host=arm-linux --prefix=/root/Desktop/mini2440/tslibinstall--cache-file=arm-linux.cache --enable-inputapi=nod、makee、make install安装到/root/Desktop/mini2440/tslibinstall,拷贝到开发板时也要同样的目录!!!!!f、把install的东西拷贝到开发板上。
3、设置环境变量(可以加入到/etc/profile里面)export TSLIB_ROOT=/root/Desktop/mini2440/tslibinstallexport TSLIB_TSDEVICE=/dev/input/event0 #(你的开发板dev下的触摸屏设备节点文件)export TSLIB_CALIBFILE=/etc/pointercalexport TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.confexport TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/tsexport TSLIB_CONSOLEDEVICE=noneexport TSLIB_FBDEVICE=/dev/fb0export LD_LIBRARY_PA TH=$LD_LIBRARY_PA TH:$TSLIB_ROOT/lib4、修改ts.conf文件,应该在$TSLIB_ROOT/etc/ts.conf把module_raw input的#去掉。
默认是全部关闭的,导致后来会出现"No raw modules loaded",5、现在可以运行tslibinstall/bin下的可执行文件了。
tslib移植
fl2440触摸屏移植步骤逐步实现触摸屏校正程序虚拟机vmware 8.0Linux ubuntu 11.04tslib1.4 可以到这里下载:/detail/tongsean/4672488 首先要更新libtool工具包在ubuntu中端输入apt-get install libtool autoconf automake 更新自己的软件包。
以下是具体的实验移植步骤(全在解压出来的tslib目录下进行)第一步:./autogen.sh第二部:makir tslib./configure --prefix=/arm/tslib/tslib --host=arm-linux --target=arm-linuxmake出现错误:s_test.c:(.text+0x1e4): undefined reference to `rpl_malloc'解决办法:vi config.h注释掉#define malloc rpl_mallocmake install 此时在tslib/tslib目录下即可看到四个文件夹:bin include lib etc以下是在已经只做好的根文件系统下进行1.将上述已经只做好的tslib/tslib拷贝到根文件系统的usr/local/下2.进入到根文件系统的/usr/local/tslib/etc下vi ts.conf将#module_raw input 前面的#删除,并使module_raw input顶格,保存该文件3. 将根文件系统/usr/local/tslib/bin/ts_calibrate拷贝到/usr/bin下,#cp usr/local/tslib/bin/ts_calibrate usr/bin# chmod 777 usr/bin/ts_calibrate3.在根文件系统的etc/profile中添加如下内容:export TSLIB_ROOT=/usr/local/tslibexport TSLIB_TSDEVICE=/dev/event0export TSLIB_CALIBFILE=/etc/pointercalexport TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.confexport TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/tsexport TSLIB_CONSOLEDEVICE=noneexport TSLIB_FBDEVICE=/dev/fb0export LD_LIBRARY_PATH=/lib:$TSLIB_ROOT/libexport QWS_SIZE=320*240export QWS_MOUSE_PROTO=Tslib:/dev/event0export QWS_DISPLAY="LinuxFb:mmWidth35:mmHeight45:0"ts_calibrate&至此将只做好的根文件系统移植到开发板上,就会看到开发板的屏幕上会有屏幕校正的十字架。
触摸屏校正总结
移植tslib-1.4所遇到的问题分析与总结(elephant半原创)一:移植环境1:主机环境:Ret Hat Enterprise 52: 交叉工具链:arm-linux-gcc-4.3.23: 开发平台:友善之臂mini2440+统宝3.5寸屏4:所需的软件资源:tslib-1.4.tar.gz qt-x11-opensource-src-4.5.3.tar.gz qt-embedded-opensource-src-4.5.3.tar.gz (QT的移植是参考网上找到一篇较好的移植手册,但是此手册的作者不知道是无心之失还是咋的,给的资料有所保留。
不过思路比较清晰以及解析的比较详细,还是非常值得参考的)参照的文章链接地址为:/view/242c91f24693daef5ef73d82.html二:交叉编译tslib-1.4在移植好触摸屏的驱动后(在移植内核的时候完成),一般都要移植一个tslib来配合,在用户层对触摸屏的数据进行滤波和矫正,同时也可以给应用程序一个统一的接口,很多GUI都支持tslib的接口。
我移植到开发板的QT版本是QT4,所以用tslib-1.4进行触摸屏校正,因为QT4只是支持tslib-1.4(目前最新版),QT2支持的是tslib-1.3版本,所以在移植过程中先要看清楚自己移植的是什么版本。
简单描述tslib校正触摸屏原理:Tslib是触摸屏驱动和应用层之间的适配层,它从触摸屏驱动处获得原始的设备坐标数据,通过一系列的去噪、去抖、坐标变换等操作,来去除噪声并将原始的设备坐标转换为相应的屏幕坐标。
通过tslib/src/tslib.h文件可以看出,在tslib中为应用层提供了2个主要的接口ts_open(),ts_close();ts_read()和ts_read_raw(),其中ts_read()为正常情况下的接口,ts_read_raw()为校准情况下使用的接口。
MiniGui安装和移植
MiniGui安装和移植一MiniGui的安装首先从MiniGui官网上下载安装文件。
一共需要下载三个压缩文件:libminigui-1.6.10.tar.gz、minigui-res-1.6.10.tar.gz、mg-samples-1.6.10.tar.gz。
安装步骤如下:一:解压缩安装包。
# tar xzvf libminigui-1.6.10.tar.gz二:运行配置程序。
# cd libminigui-str-1.6.10#./configure –disable-jpgsupport –disable-pngsupport三:编译MiniGui源代码# make四:安装MiniGui函数库# su –c “make install”五:查看安装好的库文件MiniGui的动态库文件和静态库文件都被安装到了/usr/local/lib目录下:#ls –l /usr/local/lib而MiniGui相关的头文件则被安装到了/usr/local/include/minigui/目录下Ls –l /usr/local/include/minigui运行时需要配置文件在/usr/local/etc/目录下Ls –l /usr/local/etc这样便完成了MiniGui函数库libminigui-1.6.10.tar.gz的安装接下安装资源包资源包minigui-res-1.6.10.tar.gz并不需要编译,直接安装即可。
解压缩文件#tar xzvf minigui-res-1.6.10.tar.ga打开minigui-res-1.6.10文件#cd minigui-res-1.6.10安装函数库# su –c ”make install”默认情况下,这些资源文件被安装在/usr/local/lib/minigui/res目录下# la /usr/local/lib/minigui/res解压示例代码包# tar mg-samples-1.6.10.tar.gz 打开mg-samples-1.6.10文件# cd mg-samples-1.6.10#./configure编译#make成功编译完成后,就可以在mg-samples-1.6.10/src目录下看到一些被编译好的可执行程序。
tslib库的移植(1)
将config.h.in里的#undef malloc屏蔽掉
Hale Waihona Puke 5.编译make6.安装
make install
7.拷贝相关文件到根文件系统
cdtmp
cp*/opt/rootfs
cd/opt/rootfs/lib//进入根文件系统的lib目录,注意:搞清楚自己的根文件系统在哪里
cd /opt/rootfs
vietc/profile
在其中添加如下代码
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/lib/ts
sudo apt-get install libtool
cd tslib
./autogen.sh
mkdir tmp
echo "ac_cv_func_mallo_0_nonnull=yes">arm-unknown-linux-gnueabi.cache
./configure --host=arm-unknown-linux-gnueabi --prefix=$(pwd)/tmp --cache-file=arm-unknown-linux-gnueabi.cache
export TSLIB_CONSOLEDEVICE=/dev/tty
export TSLIB_FBDEVICE=/dev/fb0
9.执行source ,让profile文件生效
sourceetc/profile
移植触摸屏校正Tslib1.4
移植触摸屏校正Tslib1.4开发板:友善之臂mini2440-128M主机: VMware 7.1 + Fedora 9开发版内核:Linux 2.6.32.2交叉编译器:arm-linux-gcc-4.3.2Qt:qt-everywhere-opensource-src-4.6.3.tar.gz*************************************************************** *****移植触摸屏校正Tslib1.41,解压下载的tslib1.4,我的是在/tmp下tar xzvf tslib-1.4.tar.gz2.进入生成的目录/tmp/tslib,执行脚本文件./autogen.sh3,/tmp/tslib下执行configure./configure --prefix=/opt/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes经过一段时间编译,如果无错误,执行make install,安装后,tslib已经安装到/opt/tslib目录下4,修改/opt/tslib/etc/ts.conf去掉第二行的#,并同时删除空格,如果不去掉,测试时会出现段错误(Segmentation fault)module_raw有许多种,这里只使用input(即Linux的input子系统,设备文件名称为/dev/input/event0),其它的注释掉。
后面的几个module还没有深入了解,它们使用的库就在tslib/lib/ts中,最后三个模块的字面意思是“方差(滤波)”、“去抖动(去噪)”、“线性(坐标变换)”,对这些东西不了解,不发表意见。
5,在/nfs/rootfs/下创建软件目录/nfs/rootfs目录下执行:mkdir opt将/opt/下的tslib拷贝到/nfs/roots/opt下cp /opt/* /nfs/rootfs/opt6,修改开发板的环境变量,vi /mnt/profileexport TSLIB_ROOT=/opt/tslibexport TSLIB_TSDEVICE=/dev/input/event0(触摸屏设备节点文件)exportLD_LIBRARY_PATH=$TSLIB_ROOT/lib:$LD_LIBRARY_PATH export TSLIB_FBDEVICE=/dev/fb0(framebuffer设备文件)export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts(tslib插件库目录)export TSLIB_CONSOLEDEVICE=none(tslib运行需要的控制台,这里是LCD屏幕,设定的控制台设备为none,默认为/dev/tty) export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf(tslib模块配置文件)export POINTERCAL_FILE=/etc/pointercal(告诉QTOPIA,pointercal文件在哪里)export TSLIB_CALIBFILE=/etc/pointercal(指定触摸屏校准文件pintercal的存放位置)export QWS_MOUSE_PROTO=TSLIB:/dev/input/event0(鼠标与触摸屏共存)7,进入/nfs/rootfs/opt/tslib/下进行第一次校正./ts_calibrate 比如:xres = 240, yres = 320Took 14 samples...Top left : X = 276 Y = 795Took 12 samples...Top right : X = 736 Y = 796Took 11 samples...Bot right : X = 735 Y = 248Took 7 samples...Bot left : X = 274 Y = 247Took 7 samples...Center : X = 505 Y = 524-33.156189 0.304019 -0.000832369.119629 0.000871 -0.401456Calibration constants: -2172924 19924 -54 24190624 57 -26 309 65536执行后屏幕上,依次出现5个点,依次点击进行校准,校准完毕后,在/etc下会产生pointercal文件,供其他用户使用,ts_calibrate 是一个应用程序,在屏幕上画几个按钮,将用户点击后从ts驱动获得的数据和屏上的坐标通过一套算法来获得校准的数据写到一个校准文件里./ts_print 将屏幕坐标打印出来,比如:1796351007.320859: 156 116 500 按下1796351007.355145: 156 116 0 抬起./ts_print_raw 将屏幕坐标的原始数据打印出来,比如:1796350964.530867: 216 865 1 按下1796350989.946831: 0 0 0 抬起./ts_test 检测一下校正的结果,屏幕上出现两个按钮,分别为,Drag时,光标随着手指移动,另一个Draw是在屏幕上画画屏幕最上方会出现二个按钮,分别为“Drag”、“Draw”,默认是第一个,因此,用触摸笔点击任何一处,十字光标便会到那里。
miniGUI移植
MiniGUI 1.3.3 移植详解作者:大漠孤狼 E-Mail:yuqiang0107@最近移植了 MiniGUI 1.3.3 到一个开发板上,中间遇到许多问题,在论坛上发问题,结果也没多少人回我,就算偶尔有回的,基本上回答也没有什么用,网上找不到一个完整的移植文章,所以就决定把自己这次移植摸出来的一些方法写出来,给像我一样的小菜鸟做个参考吧。
本文不教你怎么写驱动,只是教怎么样在最短的时候在你的PC机上搭建起开发环境,同时在你的板子上跑起MiniGUI 来,这样你就可以在PC 上开发好程序,调试完毕,然后交叉编译一下,直接Copy到板子上就可以了。
首先,你需要下载的MiniGUI 的包:/download/libminigui-1.3.3.tar.gz/download/minigui-res-1.3.3.tar.gz这两个包的下载需要你在 上注册过才可以下载,免费注册的,自己去下吧/downloads/minigui13/mde-1.3.0.tar.gz图形界面程序/downloads/minigui13/mg-samples-1.3.0.tar.gz一些小例子好,首先就下载这几个包吧,后面还有需要下载的包,后面再说1.PC环境的搭建首先你需要一个 Linux 环境,我安装的是 RedHat 9.0 安装时记着选 everything ,这样可以避免到时候编译少了东西。
这里搭建的环境是让 MiniGUI 在你的 PC 上可以跑起来,这样以后你开发程序就可以只在 PC 上开发,调试好,最后交叉编译一下放到板子上就行了。
后面会讲怎么为板子编译MiniGUI ,耐心的看吧:)首先建立自己的开发目录[Root]# mkdir /opt[Root]# cd /opt[Root]# mkdir st2410 //这个是我的板子,[Root]# chmod 777 st2410 //给一般用户操作权限[user]# cd /opt/st2410 //进到目录中去,在这个目录下工作,用普通用户来工作把 libminigui-1.3.3.tar.gz 解开[user]# tar zxf libminigui-1.3.3.tar.gz[user]# tar zxf minigui-res-1.3.3.tar.gz编译 libminigui ,这个是 minigui 运行所必需的库文件,必须编译成功[user]# cd libminigui-1.3.3[user]# ./configure //最简单的编译方式,让它自己去配置,这里采用缺省的Thread 模式而不是Lite模式,因为这种方式在 PC 机上使用最方便,后面移到板子上再改成 Lite 模式即可注意屏幕上的输出,特别是下面几条checking for FrameBuffer console support... yeschecking for pthread library... yeschecking for TT_FreeType_Version in -lttf... yeschecking for T1_InitLib in -lt1... nochecking for jpeg_std_error in -ljpeg... yeschecking for png_check_sig in -lpng... yes其中–lttf –lpng 必须是 yes ,不然后面你的程序肯定会有问题,如果这里不是 yes 的话,肯定是你的 Redhat 9 安装不对,告诉过你安装时选 everything ,你选了吗???其中 ttf 库是对 TrueType 字体的支持,png 库是对 png 图形的支持,MiniGui 里都需要这两个,在后面为板子交叉编译的时候也需要这两个,不然你的程序跑不起来,切记切记。
MiniGUI的移植
在AT91SAM9261EK上移植MiniGUI当前流行的图形用户界面有MiniGUI、ucGUI、QT/Embedded等,ucGUI需要付费才能使用,QT/Embedded占用资源多,内存消耗大。
MiniGUI是遵循GPL条款发布的自由软件,目标是为基于Linux的实时嵌入式系统提供一个轻量级的图形用户界面支持系统,与其他GUI比,MiniGUI的特点是轻型、占用资源少。
交叉编译工具:arm-linux-gcc-4.3.2宿主机:fedora7 ——linuxLinux kernel: 2.6.21开发平台:A T91SAM9261EK一、准备相关资源Libminigui-1.6.10.tar.gz MiniGUI函数库源代码Miniguires-1.6.10.tar.gz MiniGUI所使用的资源,包括基本字体、图标、位图等。
Mg-samples-str-1.6.10.tar.gz MiniGUI的演示程序。
Mde-1.6.10.tar.gz MiniGUI 图像界面应用程序二、建立相关目录、解压缩文件⑴mkdir /mtemp/minigui 存放源文件⑵展开各个文件:tar –xvzf libminigui-1.6.10.tar.gztar –xvzf miniguires-1.6.10.tar.gztar –xvzf mg-samples-str-1.6.10.tar.gztar –xvzf mde-1.6.10.tar.gz在/mtemp/minigui/下面会生成四个对应的文件。
三、交叉编译MiniGUi在宿主机上建立/usr/local/minigui用于存放编译安装生成的库文件⑴libminigui的编译安装cd libminigui-1.6.10运行配置脚本文件:./configure –prefix=/usr/local/minigui –build=i386-linux –target=arm-linux –host=arm-linux执行完后生成Makefile文件,然后依次执行make make install命令,如果没有错误出现,那么成功,MiniGUI的函数库和头文件以及配置文件等资源被安装在/usr/local/minigui下面。
嵌入式Linux环境下MiniGUI的移植
移植 性好 。
总
2 M1 G 移 植 n U 1 I的
第
二
在P C机 上 建立 my ii i目录 ,将开 发所 需 的 四 m ng u 五 源 代码 包 拷 贝 到该 目录 下 ,在 该 目录 中 建立 nsot fro
期
MDR C PT 0l o OE O UE26 N M R0_ 0
G1 U 支持 系 统 ,让 Mii UI 以应 用在 Widw E nG 可 n o sC 可 以应 用 的任何 场合 。
Mii I 有 以下 特点 : nGU 具
u / S I、 x rsp O 、 he d 等 操 作 系 统 以 及 CO —IV Wok 、S S T raX Wi3 n 2平 台 上 运 行 ;已 验 证 的 硬 件 平 台 包 括 Itr ne
界面支 持 系统 ,9 9年初 遵循 GP 19 L条款 发 布第 一 个 版本以来 , 已广 泛应用 于手持 信息 终端 、 顶盒 、 机 工业
控制系 统及 工业 仪 表 、 携式 多 媒体 播放 器 、 便 查询 终 端 等产 品和领 域 。 目前 , nGU 已成 为跨 操 作 系统 Mii I 的图形用 户界面 支持 系统 , 在 Ln xu Ln x e o 、 可 iu /C i 、C s u
1 M{ G 述 n U 1 I概
由北 京 飞漫 软件技 术 有线 公 司开 发 的 M nGU . ii I
Mii I 目标 是保 持 现 有小 巧 的 特点 . Ln x控 nGU 的 在 iu 制 台上 提供 一个 小 的窗 口系统 支持 .小 ” Mii I “ 是 nGU
x 6 A M( R /RM9s gA 8 、 R A M7A /t RM& cl)Pw rC、 mn S ae、o eP
编译安装tslib1.4
编译安装tslib1.4编译安装tslib1.4安装编译过程需用到的程序# apt-get install autoconf(或autoconf2.13)# apt-get install automake# apt-get install libtool将tslib1.4解压到/home下#./autogen.sh#./configure --prefix=/home/zhangle1231/duancp/mytslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes#make#make install-strip //生成瘦身应用程序和库注意:/home/zhangle1231/duancp/mytslib/为tslib1.4安装的目录在装QtEmbedded-4.5.2-arm版本时需要用到此目录打包mytslib# tar czvf mytslib.tar.gz tslib下载到开发板上/usr/local目录解压tar xzvf mytslib.tar.gz设置环境变量,校准触摸屏。
修改开发板上:/etc/profile文件#!/bin/shexport QTDIR=/usrexport QPEDIR=/usrexport LD_LIBRARY_PATH=/usr/libexport TSLIB_ROOT=/usr/local/mytslibexport TSLIB_TSEVENTTYPE=H3600export TSLIB_TSDEVICE=/dev/touchscreen/0rawexport TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf /注意检查ts.conf 参数是否设置正确export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/tsexport TSLIB_CALIBFILE=/etc/pointercal /在执行校准程序calibrate后才会生成此文件export TSLIB_FBDEVICE=/dev/fb/0exportQWS_MOUSE_PROTO="Tslib:/dev/touchscreen/0raw"export QWS_KEYBOARD="USB:/dev/tty" /假如提示找不到KEYBOARD则需要这条export TSLIB_CONSOLEDEVICE=noneexport QT_QWS_FONTDIR=/usr/lib/fonts /否则提示在/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib/fonts找不到字体export QWS_SIZE=320x240ln -s /dev/fb/0 /dev/fb0 /需做连接否则找不到设备注意:触摸屏的前提是你的触摸屏驱动已经写好,并加载进了内核.你可以测试有没有加载触摸屏驱动,cat /dev/touchscreen/0raw) ,点击触摸屏,看终端有无显示,若有则表明正确。
基于ARM-Linux的MiniGUI的仿真与移植
基于ARM-Linux的MiniGUI的仿真与移植近几年,随着嵌入式系统的日益发展和32位嵌入式处理器以及图形显示设备的广泛应用,目标产品对GUI(图形用户界面)的需求越来越多。
由于嵌入式系统一般实时性要求很高,所以嵌入式系统下的GUI需要具有轻量级型、占用资源少、高性能等特点。
此外,嵌入式系统往往是一种定制设备,它对GUI的需求各不相同,因此,GUI必须也可以定制。
而MiniGUI是一个非常适合实时嵌入式产品的高效、可靠、可定制、小巧灵活的图形用户界面支持系统,被广泛的应用于高端科技产品中。
利用MiniGUI开发出良好的人机交互界面已成为嵌入式开发中的迫切需求。
本文实现了在ARM-Linux环境下进行基于QVFB的MiniGUI的模拟开发、调试,通过在PC机上的仿真模拟,将应用程序完成之后,利用交叉编译工具编译产生在目标机上运行的代码,然后把MiniGUI和可执行应用程序移植到S3C2410目标板上,这样既节省了开发时间,又提高了开发效率和质量。
1 MiniGUI的特点和体系结构MiniGUI项目的最初目标是为基于Linux的实时嵌入式操作系统提供一个轻量级的图像用户界面支持系统。
作为操作系统和应用程序之间的中间件,MiniGUI将底层操作系统与硬件平台之间的差别隐藏起来,并对上层应用程序提供了一致的功能特性。
1.1MiniGUI的特点(1)占用资源少:MiniGUI本身占用的空间非常小,整个MiniGUI系统占用空间在2~4MB,在某些系统上,MiniGUI系统本身所占用的空间可进一步缩小到1MB以内。
(2)高性能、高可靠性:MiniGUI良好的体系结构及优化的图形接口,可确保最快的图形绘制速度。
(3)可定制配置:和Linux内核类似,MiniGUI也具有大量的编译配置选项,通过这些选项可指定MiniGUI库中包括哪些用户所需要的功能。
(4)跨操作系统支持:MiniGUI支持Linux/uClinux、eCos、uC/OS-II、VxWorks等嵌入式操作系统。
tslib-1.4交叉编译详细笔记
tslib-1.4交叉编译详细笔记tslib-1.4交叉编译详细笔记[嵌入式]发布时间:2009-09-17 01:48:50tslib-1.4交叉编译详细笔记注:在此之前,请确保你的触摸屏驱动已经移植完成。
1、环境介绍(1)、主机:虚拟机下fedora9(2)、硬件平台:mini2440(3)、交叉编译器:arm-linux-gcc-4.3.2(4)、触摸屏适配层源码:tslib-1.4.tar.gz我的根文件系统在在主机上的路径是/opt/rootfs ,tslib-1.4.tar.gz 解压到/opt/Qt目录下,解压后多了tslib目录。
2、交叉编译tslib-1.4编译和安装后在主机的/usr/local/tslib目录下看到编译好的程序和库。
注:如果你的触摸屏驱动支持ioctl操作,在./configure时不用“--enable-inputapi=no”,不支持就要添上,如果不添加无法运行程序,会有“ts_open:Inappropriate ioctol for device“、“ts_open: No such file or directory”这样的错误。
2、配置并加入到根文件系统(1)、修改tslib/etc目录下的ts.conf文件,将module_raw input 前面的注释去掉。
(2)、cp –rfd /usr/local/tslib/* /opt/rootfs/usr/local(3)、在根文件系统的etc/profile文件中加入运行tslib的环境变量我将配置好的根文件系统下载到开发板后,曾多次出现“ts_open: No such file or directory”、“./ts_test: error while loading shared libraries: libts-0.0.so.0: cannot open shared object file: No such file or directory”等错误,究其原因都是配置不仔细造成的,可以在终端使用env来查看tslib的环境变量的配置情况,然后配置好环境变量等。
tslib移植(触摸屏驱动)说明文档
移植问题二:tslib1.4编译过程./autogen.shecho "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache# 设置目标机型,缓冲,安装路径./configure --host=arm-linux --cache-file=arm-linux.cache --prefix=/opt/tslib make# 如果目标路径没有权限,需要加 sudomake install可能遇到的错误In file included from /usr/include/fcntl.h:252:0,from /usr/include/sys/fcntl.h:1,from ts_calibrate.c:20:In function ‘open’,inlined from ‘main’ at ts_calibrate.c:227:11:/usr/include/bits/fcntl2.h:51:24: error: call to ‘__open_missing_mode’ declare d with attribute error: open with O_CREAT in second argument needs 3 arguments In function ‘open’,inlined from ‘main’ at ts_calibrate.c:229:11:/usr/include/bits/fcntl2.h:51:24: error: call to ‘__open_missing_mode’ declare d with attribute error: open with O_CREAT in second argument needs 3 arguments make[2]: *** [ts_calibrate.o] Error 1make[2]: Leaving directory `/home/ouyang/Downloads/tslib/tests'make[1]: *** [all-recursive] Error 1make[1]: Leaving directory `/home/ouyang/Downloads/tslib'make: *** [all] Error 2gcc 新版本编译器对语法检查严格,在源文件 ./tests/ts_calibrate.c 中// 源文件// if ((calfile = getenv("TSLIB_CALIBFILE")) != NULL) {// cal_fd = open (calfile, O_CREAT | O_RDWR);// } else {// cal_fd = open ("/etc/pointercal", O_CREAT | O_RDWR);// }// 需要更改成如下形式if ((calfile = getenv("TSLIB_CALIBFILE")) != NULL) {cal_fd = open (calfile, O_CREAT | O_RDWR, 0777);} else {cal_fd = open ("/etc/pointercal", O_CREAT | O_RDWR, 0777);}保存后重新编译即可/zhandoushi1982/article/details/5149086教你如何用WORD文档(2012-06-27 192246)转载▼标签:杂谈1. 问:WORD 里边怎样设置每页不同的页眉?如何使不同的章节显示的页眉不同?答:分节,每节可以设置不同的页眉。
tslib1.4移植(个人小结)
Tslib1.4移植(参照TX2440A的tslib移植)一、说明●tslib版本:tslib-1.4●交叉编译器版本:arm-linux-gcc 4.1.2●操作系统平台:Linux Red Hat 9.0●开发板平台:arm TX2440A二、移植1、学习光盘/源码包中tslib1.4源码包,解压,进入tslib目录,执行#tar xzvf tslib1.4.gz#./autogen.sh出现错误:possible undefined macro: AS_HELP_STRING可能是因为系统自带的autoconf工具里面没有定义这个宏,查看一下autoconf的版本#autoconf –V是2.57版的,在学习光盘/liunx工具平台有2.64版,复制解压,进入autoconf目录,执行#tar xzvf autoconf.gz#./configure又出现错误:no acceptable m4 could be found in $PATH原因是安装autoconf工具,需要GNU的m4工具,但是系统里没有这个工具,所以还要从网上下载,在/gnu/m4/找到m4-1.14.13.tar.bz2,下载完后,或者在学习光盘/linux工具平台中有,解压后进入m4-1.14.13目录,执行#./configure#make#make install安装完成后,再进入autoconf目录,执行#./configure#make#make install新安装的autoconf工具就把/usr/bin下的可执行程序覆盖了,然后执行#source /etc/profile使环境变量生效,再查看autoconf版本,确保是2.64版。
2、进入tslib目录,执行#./configure --prefix=/usr/local/tslib --host=arm-linux --target=arm-linux--enable-inputapi=no#make这时会出现一个错误:ts_test.o(.text 0x218): In function `main': undefined reference to `rpl_malloc'查看一下源码,发现是ac_cv_func_malloc_0_nonnull引起了,那我们需要建一个cache文件,来欺骗configure,让它不检查这一项,执行#echo "ac_cv_func_malloc_0_nonnull=yes" > mytslib.cache再执行#./configure --prefix=/usr/local/tslib --host=arm-linux --target=arm-linux--enable-inputapi=no --cache-file=mytslib.cache#make#make install这一步很重要。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
只支持 1.3.1 版本的 ttf 库:
注意:MiniGUI 的文档说只支持 1.3.1 版本的 ttf 库,不要把版本弄错了
[root@localhost jpeg-6b]# cd /root/cross/
[root@localhost cross]# tar zxvf freetype-1.3.1.tar.gz
注意:这里配置指向/usr/local/arm/arm-2008q3-linux/arm-none-linux-gnueabi 目录,会自动安 装在/usr/local/arm/arm-2008q3-linux/arm-none-linux-gnueabi / [include,lib] 目录下。
./configure CC=arm-none-linux-gnueabi-gcc --build=i686-pc-linux --target=arm-linux
--host=arm-linux
prefix=/usr/local/arm/arm-2008q3-linux/arm-none-linux-gnueabi
第四步:安装 jpeg 库
[root@localhost libpng-1.2.18]# cd /root/cross/
[root@localhost cross]# tar zxvf jpegsrc.v6b.tar.gz
[root@localhost cross]# cd jpeg-6b/
[root@localhost jpeg-6b]#
[include,lib] ,假如 include 中没有 zlib.h 之类的头文件,lib 中没有 libz.so.1.2.3 等
注意:记着把刚才改过的 gcc 再改回去,不然后面会出错的!!!!!(一定记得改)
[root@localhost zlib-1.2.3]# cd /usr/bin/
[root@localhost bin]# mv gcc_back gcc
[root@localhost cross]# cd freetype-1.3.1
[root@localhost freetype-1.3.1]# mkdir -p /root/cross/libttf/extend
[root@localhost freetype-1.3.1]# cp ./lib/* ./lib/arch/ansi/* /root/cross/libttf/
[root@localhost bin]# mv ld ld_back
[root@localhost bin]#
ln -s /usr/local/arm/arm-2008q3-linux/bin/arm-none-linux-gnueabi-ld ./ld
修改完成后回到 /root/cross/zlib-1.2.3 目录下:
c.配置:
[root@localhost ]#./configure --prefix=/usr/local/minigui
d.编译:
[root@localhost ]#make
e.安装:
[root@localhost ]#make install
注意:在/usr/local/ 目录下生成一个 minigui 目录,切记后面一定要将此处的资源包拷过去
[root@localhost cross]# tar xjvf libpng-1.2.18.tar.bz2
[root@localhost libpng-1.2.18]# cd libpng-1.2.18
[root@localhost libpng-1.2.18]#
./configure CC=arm-none-linux-gnueabi-gcc --build=i686-pc-linux --target=arm-linux
[root@localhost bin]# cd /root/cross/zlib-1.2.3
[root@localhost zlib-1.2.3]#
./configure --prefix= /usr/local/arm/arm-2008q3-linux/arm-none-linux-gnueabi --shared
我们的交叉编译器 arm-none-linux-gnueabi-gcc
[root@localhost cross]# cd /usr/bin/
[root@localhost bin]# mv gcc gcc_back
[root@localhost bin]#
ln -s /usr/local/arm/arm-2008q3-linux/bin/arm-none-linux-gnueabi-gcc ./gcc
[root@localhost jpeg-6b]# make install 安装结束后,查看下/usr/local/arm/arm-2008q3-linux/arm-none-linux-gnueabi /目录下的
lib 文 件 夹 里 是 否 有 libjpeg.so , libjpeg.so.62.0.0 等 文 件 和 include 文 件 夹 里 是 否 有 jpeglib.h 文件
mv:是否覆盖“gcc”? y
[root@localhost bin]# mv ld_back ld
mv:是否覆盖“ld”? y
第三步:安装 png 库,这个是用来显示 png 图形的,MiniGUI 里很多图都是 png 的, 如果没有这个库,你的 MiniGUI 将无法正常工作。
[root@localhost bin]# cd /root/cross/
--enable-shared 注意:在 make 之前,需从前面 libpng-1.2.18 的源码目录中把 libtool 拷贝过来,放在 jpeg-6b
目录下,否则会出错。
[root@localhost jpeg-6b]# cp ../libpng-1.2.18/libtool . [root@localhost jpeg-6b]# make 注意:在 make install 之前需创建一个目录,否则 make install 的时候会报错。 [root@localhost jpeg-6b]# mkdir -p /usr/local/arm/arm-2008q3-linux/arm-none-linux-gnueabi /man/man1
/lib
安装库完成。
第六步:编译安ห้องสมุดไป่ตู้ miniGUI 资源包 minigui-res-1.6.10
A.解压:
[root@localhost ]# tar zxvf minigui-res-be-3.0.12.tar.gz [root@localhost ]# cd minigui-res-be-3.0.12
硬件平台:ASM9260 开发板
Linux 内核:linux-2.6
作者:孙怀亚
qq:413983254
交叉编译器:arm-none-linux-gnueabi-gcc
MiniGUI 交叉编译过程--------------------------------------------------------在开始之前,先准备好交叉编译过程中所需要的几个库文件: 1. jpegsrc.v6b.tar.gz 2. libpng-1.2.18.tar.bz2 3. tslib-1.4.tar.gz 4. libminigui-gpl-3.0.12.tar.gz 5. minigui-res-be-3.0.12.tar.gz 6. zlib-1.2.3.tar.gz 7. freetype-1.3.1.tar.Gz 8. mg-samples-3.0.12.tar.gz 如果下面配置或命令有错,一般是由于拷贝制作 word 文档时,软件自动首字母变成大 写或自动加空格的原因,切记要改回来!!!!! 第一步:首先建立新目录
[root@localhost zlib-1.2.3]# make
[root@localhost zlib-1.2.3]# make install 安 装 完 后 检 查 一 下 目 录 /usr/local/arm/arm-2008q3-linux/arm-none-linux-gnueabi /
cp: 略过目录 “./lib/arch” cp: 略过目录 “./lib/extend”
[root@localhost freetype-1.3.1]# cp ./lib/extend/* /root/cross/libttf/extend/
[root@localhost freetype-1.3.1]# cd ../libttf/
/include/freetype1/freetype
[root@localhost
libttf]#cp
*.h
extend/*.h
/usr/local/arm/arm-2008q3-linux/arm-none-linux-gnueabi /include/freetype1/freetype
[root@localhost libttf]# cp libttf.so /usr/local/arm/arm-2008q3-linux/arm-none-linux-gnueabi
[root@localhost /]# mkdir -p /root/cross 将开头所述的文件全部拷贝至 /root/cross 目录下 第二步:安装 zlib 库,这个是后面的库的编译基础。
[root@localhost cross]# tar zxvf zlib-1.2.3.tar.gz
由于 zlib 库的 configure 脚本不支持交叉编译选项,只好自己手动临时把 gcc 修改成指向