tslib1.4移植

下载tslib1.4后
1.cp tslib-1.4.tar.bz2 /home/gec
2.tar jxvf tslib-1.4.tar.bz2
3.sudo -s
4.cd tslib-1.4/
5../configure --host=arm-linux --prefix=/usr/local/arm ac_cv_func_malloc_0_nonnull=yes
6.make
7.make install
修改tslib安装目录下的/etc/ts.conf文件去掉# module_raw input注释。
安装后把整个文件夹下载到开发板
在开发板/etc/profile 里配置环境变量,我的如下,要按你放的位置配置
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/event0 
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts    
export TSLIB_FBDEVICE=/dev/fb0               
export TSLIB_CONSOLEDEVICE=none              
export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:/lib:/usr/lib:$LD_LIBRARY
source /etc/profile 使配置生效或重启开发板
进入/usr/local/tslib/bin 目录执行ts_calibrate校准程序,进行5点触摸校准

生成的校准文件名为pointercal,位于/etc目录下。

这些网址都是介绍tslib的移植,可以参考下。

http://blog.sina.com.cn/s/blog_406127500101dsmy.html

http://blog.chinaunix.net/uid-12461657-id-2975918.html
http://www.ttfanwen.com/info_12/fw_2537170.html
http://www.embeddedlinux.org.cn/emb-linux/system-development/201603/28-5238.html

http://mojijs.com/2016/07/217478/index.html

可能用到的资料

Linux系统如何查看版本信息
输入"uname -a ",可显示电脑以及操作系统的相关信息。
输入"cat /proc/version",说明正在运行的内核版本。
输入"cat /etc/issue", 显示的是发行版本信息。
lsb_release -a (适用于所有的linux,包括Redhat、SuSE、Debian等发行版,但是在debian下要安装lsb)

虚拟机当前内核版本安装位置
/lib/modules/`uname -r`/kernel

移植出现的错误

错误1:< selected device is not a touchscreen I understand >

查看tslib源码可知编译器的EV_VERSION要与内核的EV_VERSION一致。

修改内核include/linux/input.h的EV_VERSION使之与编译器的一致

移植经验表明修改内核的EV_VERSION较好

<1.从工程角度来看,一个项目中为了兼容不同编译特性,可能经常换编译器,而内核却很少重新解压编译
  更换编译器以后,很容易忘记掉修改input.h文件
2.从版本兼容的角度看,0x01001修改为0x01000是可以的,但是从0x01000修改为0x01001不合理
3.从跨平台角度,一个编译器可能有Linux版本和Windows版本,为了做到兼容或者跨平台编译,也不应修改编译器(出自网络某大神)>

tslib的EV_VERSION在linux/input.h里

其中有

内核 编译器  结果
EV_VERSION 0x010001 0x010000 ok
EV_VERSION 0x010000 0x010000 ok
EV_VERSION 0x010001 0x010001 no
EV_VERSION 0x010000 0x010001 no

不信的话可以自己试试。

参考下这个

http://www.cnblogs.com/lcw/p/3802624.html

错误2:< 出现界面,点十字架没反应 > < selected device is not a touchscreen I understand >触摸屏能显示,但对其操作无反应。

原因1:网络上一参考博文的环境配置,其中没有export QWS_MOUSE_PROTO=tslib:/dev/input/event1

解决:环境变量加上export QWS_MOUSE_PROTO=tslib:/dev/input/event1 ,重启板子即可。

QWS_MOUSE_PROTO该如何写

http://www.cnblogs.com/baizx/archive/2010/04/08/1707790.html

原因2:内核裁剪时没加上触摸设备(更可能的原因)

查看触摸屏的设备文件
hexdump /dev/event0
点触摸屏,有输出则证明event0是触摸设备

这是我的内核触摸驱动配置

Device Drivers --->
Input device support --->
[*] Touchscreens --->
< > S3C touchscreen driver //去除S3C 触摸屏驱动支持
<*> TSC2007 based touchscreens //添加TSC2007 驱动

具体驱动按自己的开发板lcd型号配置

其他原因参考

http://www.it165.net/embed/html/201409/2656.html

http://blog.chinaunix.net/uid-14782631-id-111870.html

tslib源码分析
http://blog.csdn.net/subfate/article/details/6361062
http://blog.csdn.net/hejinjing_tom_com/article/details/49252333
http://www.latelee.org/embedded-linux/porting-linux-tstest-code.html

http://www.ttfanwen.com/info_12/fw_2537170.html

Qt5.6移植

下载Qt5.6源码:https://download.qt.io/archive/qt/5.6/5.6.0/single/   下载qt-everywhere-opensource-src-5.6.0.tar.gz
1.tar zxvf qt-everywhere-opensource-src-5.6.0.tar.gz
2.cd
qt-everywhere-opensource-src-5.6.0
3.指定开发板架构和交叉编译器/---+/
#
# qmake configuration for building with arm-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

QT_QPA_DEFAULT_PLATFORM =linuxfb                 #指定Qt运行平台 EGLFS, LinuxFB, KMS, DirectFB, Wayland                      
QMAKE_CFLAGS_RELEASE    += -O2 -march=armv7-a #O2为优化选项,march只处理器架构,s5pv210的架构是armv7
QMAKE_CXXFLAGS_RELEASE  += -O2 -march=armv7-a

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

QMAKE_INCDIR +=/usr/local/tslib/include #连接的tslib库位置
QMAKE_LIBDIR +=/usr/local/tslib/lib

# modifications to g++.conf
QMAKE_CC                = arm-si-linux-gnueabi-gcc #交叉编译器的名称(以下部分全换成自己的交叉编译器)
QMAKE_CXX               = arm-si-linux-gnueabi-g++
QMAKE_LINK              = arm-si-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = arm-si-linux-gnueabi-g++

# modifications to linux.conf
QMAKE_AR                = arm-si-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = arm-si-linux-gnueabi-objcopy
QMAKE_NM                = arm-si-linux-gnueabi-nm -P
QMAKE_STRIP             = arm-si-linux-gnueabi-strip
load(qt_config)


4.根据需求配置Qt

./mkqt.sh
这是我的配置脚本
  1. -L /usr/local/tslib/lib

 Qt配置选项解释
  Qt4(解释更详细)
  http://www.360doc.com/content/10/0225/22/79031_16834764.shtml#
  Qt5(与以上网址对比看)
  http://www.cnblogs.com/chenfulin5/p/5798764.html
5.make  -j4 (4线程编译,长时间等待囧)
6.make install 
错误分析:
配置时遇到的错误
  错误1:
configuration
Warning:Disabling
pkg
-configsincePKG_CONFIG_LIBDIRis
not

set
.
Warning:Disabling
pkg
-configsincePKG_CONFIG_SYSROOT_DIRis
not

set
.
 
Couldnotdeterminethetargetarchitecture!
Turnonverbose
messaging
(-v)toseethefinal
report.

原因:没有指定自己交叉编译器
输入:arm-linux-gcc -v查看自己的交叉编译器名称
mkspecslinuxarmgnueabig+qmake.conf修改#
modifications to g++.conf内容以下交叉编译器


  

  错误2:
  Project ERROR: Unknown module(s) in QT: quick         (quick说明已跳过该步骤,影响不大嘛)
  make[4]: *** [sub-textureandlight-make_first] 错误 3
  make[4]:正在离开目录 `/home/sice/sources/qt/qt-everywhere-opensource-src-5.6.0/qtcanvas3d/examples/canvas3d/canvas3d'
  make[3]: *** [sub-canvas3d-make_first] 错误 2
  make[3]:正在离开目录 `/home/sice/sources/qt/qt-everywhere-opensource-src-5.6.0/qtcanvas3d/examples/canvas3d'
  make[2]: *** [sub-canvas3d-make_first] 错误 2
  make[2]:正在离开目录 `/home/sice/sources/qt/qt-everywhere-opensource-src-5.6.0/qtcanvas3d/examples'
  make[1]: *** [sub-examples-make_first] 错误 2
  make[1]:正在离开目录 `/home/sice/sources/qt/qt-everywhere-opensource-src-5.6.0/qtcanvas3d'
  make: *** [module-qtcanvas3d-make_first] 错误 2
  make: *** 正在等待未完成的任务....
  原因:由于配置时加了-no-opengl影响了该例子的生成,对编译Qt影响不大不用管
  解决:找出s5pv210提供的opengl库和头文件,配置时加上-opengl并设置相应路径后编译通过
  
  安装时遇到的错误
  Project ERROR: Unknown module(s) in QT: quick      (已跳过该步)
  make[4]: *** [sub-textureandlight-install_subtargets] 错误 3
  make[4]:正在离开目录 `/home/sice/sources/qt/qt-everywhere-opensource-src-5.6.0/qtcanvas3d/examples/canvas3d/canvas3d'
  make[3]: *** [sub-canvas3d-install_subtargets] 错误 2
  make[3]:正在离开目录 `/home/sice/sources/qt/qt-everywhere-opensource-src-5.6.0/qtcanvas3d/examples/canvas3d'
  make[2]: *** [sub-canvas3d-install_subtargets] 错误 2
  make[2]:正在离开目录 `/home/sice/sources/qt/qt-everywhere-opensource-src-5.6.0/qtcanvas3d/examples'
  make[1]: *** [sub-examples-install_subtargets] 错误 2
  make[1]:正在离开目录 `/home/sice/sources/qt/qt-everywhere-opensource-src-5.6.0/qtcanvas3d'
  make: *** [module-qtcanvas3d-install_subtargets] 错误 2
  原因:与上面对应,编译不通过,安装时也出错,不过影响不大,只是不嫩生成该例子而已

7.安装完后把Qt所在文件夹下的lib、plugins文件夹打包下载到开发板,配置环境变量

  vi /etc/profile
  添加             (!具体配置要按你所放的目录位置)
  我的配置如下
  export QTEDIR=/usr/local/Qt5.6 
  export QT_QPA_GENERIC_PLUGINS=tslib:$TSLIB_TSDEVICE                                   
  export QT_QPA_FONTDIR=$QTEDIR/lib/fonts                                               
  export QT_QPA_PLATFORM_PLUGIN_PATH=$QTEDIR/plugins                                    
  export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
  export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:/lib:/usr/lib:$QTDIR/lib:$QTEDIR/lib:$LD_LIBRAR
  export LD_PRELOAD=/lib/preloadable_libiconv.so    
         
  source /etc/profile 使配置生效

8.运行example里的程序测试Qt是否移植成功

  出错
 QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed
 QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed
 This application failed to start because it could not find or load the Qt platform plugin "linuxfb".
 Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, xcb.
 解析:这里包含2个错误
 错误1:
  QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed
  QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed
  原因:配置时没有设置-no-iconv或-iconv。iconv是一个计算机程序以及一套应用程序编程接口的名称。它的作用是在多种国际编码格式之间进   行文本内码的转换。这对跨语言
 Qt开发人员来说是很有用的   
  解决办法:网上下载libiconv,交叉编译 ,编译好后将 ./preload/preloadable_libiconv.so
拷贝到板子的 /lib 下面,设置环境变    量 export    LD_PRELOAD=/lib/preloadable_libiconv.so
 错误2:
    This application failed to start because it could not find or load the Qt platform plugin "linuxfb".
    Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, xcb.

原因1:qmake.conf中QT_QPA_DEFAULT_PLATFORM
=linuxfb没有设置为linuxfb。

 
解决:设置为linuxfb后重新编译
   
   原因2:
   环境变量重叠  LD_LIBRARY_PATH写了2个
  解决:把LD_LIBRARY_PATH合成一个,既包括tslib也包括Qt
  export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:/lib:/usr/lib:$QTDIR/lib:$QTEDIR/lib:$LD_LIBRAR 
  
  再次运行example里的程序,成功!       
  example里的fluidlauncher程序,点击图片还能开启新线程进入到另一个程序界面。

移植tslib和Qt5.6到三星s5pv210开发板的更多相关文章

  1. 【团购活动】接口最全最好用的S5PV210开发板Sate210-F 开发板开始团购活动了,一起学习linux!

    接口最全最好用的S5PV210开发板Sate210-F 开发板开始团购活动了,一起学习linux!http://bbs.eeworld.com.cn/forum.php?mod=viewthread& ...

  2. S5PV210开发板 VGA测试【转】

    本文转载自:http://www.cnblogs.com/endlessli/archive/2011/07/07/2099865.html 不断努力 不断努力 S5PV210开发板 VGA测试 WY ...

  3. MPlayer在ARM上的移植(S5PV210开发板)

    MPlayer 1.0已经把大部分解码库都自带了,如ffmpeg,但是自带的音频库在S5PV210下效果非常不好.换成使用libmad效果不错.因此MPlayer 在ARM-Linux的最简单的移植只 ...

  4. 移植linux4.14内核到四核Exynos4412开发板

    最近法师收到了很多留言,其中有一部分问法师什么时候更新,还有一大部分问法师我是买迅为的IMX6UL精英版好呢还是买4412精英版好呢,因为我们这俩个都不贵.法师的建议的是入手4412!为什么呢? 第一 ...

  5. QT5.4.1在ARM开发板上不能显示汉字

    在linux下正常的程序,移植到ARM上,中文不能显示.网上好多介绍,一头雾水.查看其中话题是关于中文显示的(http://www.qtcn.org/bbs/simple/?t55852.html). ...

  6. 九鼎S5PV210开发板的SD卡启动、uboot tftp升级内核镜像

    Note: 我的S5PV210板子的磁盘是emmc版本,不是nandflash版本. 1. SD卡内烧录uboot镜像,然后作为启动盘来启动emmc中的内核镜像和根文件系统. 只要破坏emmc内的ub ...

  7. Gt9xx芯片,在规格书+Linux驱动的基础上,移植为USB裸机经验。直接用开发板,不去碰硬件的坑。

    1,用内核代码和规格书来印证数据格式: //命令3字节,IC地址 u8 end_cmd[] = {GTP_READ_COOR_ADDR >> , GTP_READ_COOR_ADDR &a ...

  8. (一)S5PV210开发板常用易忘操作记录

    一.调试串口 2.SD卡槽 (三)启动方式选择 蜂鸣器下面的白色2针插座(图中红色线圈出来的那个)为选择USB/SD卡启动的开关.默认情况下为SD卡启动,如果需要USB启动则使用短路帽(若没有短路帽, ...

  9. S5PV210开发板刷机(SD卡uboot、串口+USB-OTG刷机方法)

    一.介绍 九鼎的S5PV210开发板,在出厂前已经默认刷了Android4.0系统.如果需要刷其它的系统或者是由于系统问题无法启动时,就需要对板子刷机. 其实,刷机是对210开发板的一个基础学习,目的 ...

随机推荐

  1. 解决CentOS7关闭/开启防火墙出现Unit iptables.service failed to load: No such file or directory.

    CentOS7中执行 service iptables start/stop 会报错Failed to start iptables.service: Unit iptables.service fa ...

  2. php源码审计

    转:http://www.jb51.net/article/31898.htm 针对PHP的网站主要存在下面几种攻击方式: 1.命令注入(Command Injection) 2.eval注入(Eva ...

  3. 洛谷P1503 鬼子进村 [平衡树,STL]

    题目传送门 鬼子进村 题目背景 小卡正在新家的客厅中看电视.电视里正在播放放了千八百次依旧重播的<亮剑>,剧中李云龙带领的独立团在一个县城遇到了一个鬼子小队,于是独立团与鬼子展开游击战. ...

  4. 如何制作RTS游戏的寻路系统?

    Q1:我们在做一个RTS游戏,开始用的是Unity自带的NavMesh的寻路,但发现这个并不适合RTS多人寻路,因为总会出现阻挡和闪跳的问题.看Asset Store上的A* path插件评论说在碰撞 ...

  5. TCP/IP——链路层简记

    在TCP/IP协议族中链路层的主要目的有三个: 1,为IP模块发送和接受IP数据报. 2,为ARP模块发送ARP请求和接受ARP应答. 3,为RARP模块发送RARP请求和接受RARP应答. 链路层包 ...

  6. Unity 游戏开发技巧集锦之制作一个望远镜与查看器摄像机

    Unity 游戏开发技巧集锦之制作一个望远镜与查看器摄像机 Unity中制作一个望远镜 本节制作的望远镜,在鼠标左键按下时,看到的视图会变大:当不再按下的时候,会慢慢缩小成原来的视图.游戏中时常出现的 ...

  7. RxSwift 系列(六)

    前言 本篇文章将要学习RxSwift中数学和集合操作符,在RxSwift中包括了: toArray reduce concat toArray 将一个Observable序列转化为一个数组,并转换为一 ...

  8. Opencv学习笔记1:安装opencv和VS2015并进行环境配置

    用了Opencv一段时间了,简单记录一下opencv在vs2015下的配置. 第一部分:OpenCV3.2.0的下载 OpenCV官方下载地址: https://opencv.org/releases ...

  9. CodeForces - 1009E Intercity Travelling

    题面在这里! 可以发现全是求和,直接拆开算贡献就好了 #include<bits/stdc++.h> #define ll long long using namespace std; c ...

  10. bzoj 3685: 普通van Emde Boas树

    3685: 普通van Emde Boas树 Description 设计数据结构支持:1 x  若x不存在,插入x2 x  若x存在,删除x3    输出当前最小值,若不存在输出-14    输出当 ...