IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> X210学习--QT移植 -> 正文阅读

[系统运维]X210学习--QT移植

移植前准备工作

1、ubuntu 搭建好开发环境 (NFS、tftp\)
2、开发板x210(里面烧好uboot程序,内核镜像通过tftp下载)
3、内核镜像(能正常启动,挂载NFS,配置好触摸屏和显示屏驱动)

检查环境配置

正常启动开发板并进入系统rootfs目录下,检查驱动是否安装配置好。

cat /proc/bus/input/devices

出现

I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="s3c-button"
P: Phys=s3c-button/input0
S: Sysfs=/devices/virtual/input/input0
U: Uniq=
H: Handlers=kbd event0 
B: EV=3
B: KEY=101680 0 10000 40000000
I: Bus=0013 Vendor=dead Product=beef Version=0101
N: Name="S5P TouchScreen"
P: Phys=input(ts)
S: Sysfs=/devices/virtual/input/input1
U: Uniq=
H: Handlers=mouse0 event1 
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=1000003

I: Bus=0018 Vendor=0000 Product=0000 Version=0000
N: Name="gslX680"
P: Phys=
S: Sysfs=/devices/platform/s3c2440-i2c.1/i2c-1/1-0040/input/input2
U: Uniq=
H: Handlers=mouse1 event2 
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=1000003

其中N: Name=“gslX680” 就是我的ts设备,可知gslX680对应的设备文件是event2。

通过 cat /dev/input/event2 ,然后点击触摸屏,console上会打印字符(乱码),说明触摸功能OK。
通过写APP测试,把之前写好的触摸程序拷贝到当前目录下执行,查看是否有打印输出也可测试。

tslib 移植

tslib是QT依赖的一个库(本来使用用来做触摸屏校准功能用的),故需要进行移植。

1、下载好 tslib-1.4.tar.gz 安装包。
2、cp到ubuntu的目录下(我的是~/x210/QT5.x_Porting/),然后解压tar -xvf tslib-1.4.tar.gz
3、配置

cd tslib
./autogen.sh
echo "ac_cv_func_malloc_0_nonnull=yes">arm-linux.cache 
mkdir /opt/tslib  #安装目录
./configure --prefix=/opt/tslib --host=arm-linux --cache-file=arm-linux.cache

注:如果报错,./autogen.sh: 4: autoreconf: not found,是因为系统中没有安装autoconf工具
解决方法:先让ubuntu能上网,然后执行:sudo apt-get install autoconf automake libtool
4、编译、安装

make
sudo make install

5、部署
把安装好的tslib的相关文件cp到开发板系统中,主要包括以下这些文件:
(1)动态库文件so
(2)配置文件
(3)bin文件
可以直接把ubuntu中的生成的/opt/tslib/目录整个拷贝到开发板rootfs目录下或某个目录下,然后清除一些不必要的文件(include目录,lib下的.la静态库)即可。

6、定义tslib运行需要的环境变量

export TSLIB_TSDEVICE=/dev/input/event2
export TSLIB_CALIBFILE=/tslib/etc/pointercal #主要这里tslib的目录名称应该与实际的名称保持一致
export TSLIB_CONFFILE=/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/tslib/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/tslib/lib
export TS_INFO_FILE=/sys/class/input/input2/uevent

把上面的这些语句添加到rootfs下的/etc/profile 中。然后重启才能执行生效。

7、运行和测试
重启后,进入/tslib/bin/下执行./ts_calibrate
报错:

No raw modules loaded.
ts_config: No such file or directory

解决:在/tslib/etc/ts.conf中打开module raw input这行的注释就行了。

再次执行。报错:selected device is not a touchscreen I understand
郁闷~

分析思路:通过打印的这个信息进行查找定位(在ubuntu下用grep -rl "关键字"查找),发现是问题大概是EV_VERSION这个宏的问题。
在这里插入图片描述
在网上找了一下解决方法,一个是修改内核中的宏,二是修改编译链中的宏。因为修改内核比较麻烦,故修改了编译链中的宏。
在这里插入图片描述
修改后,重新配置tslib库,按上面配置移植步骤,把修改生成后的tslib拷贝到开发板并做好修改。

再次执行/tslib/bin/下的

./ts_calibrate

成功!

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-11-28 11:39:26  更:2021-11-28 11:40:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:30:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码