MiniGUI3.0+tslib1.4移植过程

合集下载

Helper2416开发板移植minigui3.0.12系列

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的研究与移植

嵌入式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+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错误解决方法

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移植实验

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安装操作

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移植

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()为校准情况下使用的接口。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第五步:安装 libttf 库,这个是 TrueType 字体的支持库,用来显示文字的。
只支持 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 修改成指向
相关文档
最新文档