[X]关闭

为MPSOC移植tslib触摸功能

文档创建者:linux-01
浏览次数:2691
最后更新:2022-02-11
本帖最后由 linux-01 于 2023-6-7 16:19 编辑

一、tslib
tslib是一个开源的触控库,其目的是为上层软件提供稳定去抖的统一接口。

二、构建系统
在使用tslib之前,我们需要先构建一个系统,这个系统需要有以下几个特点:
  • 实现了framebuffer。(由于tslib尚未支持drm,所以需要确保dev下产生了fb0节点)
  • 可以通过配置将触控输入作为input子系统来使用。

紧接着需要准备如下的硬件设备:
  • 一套MPSOC系列的整板。
  • 1.8V CEP-GPIO子卡。
  • 7寸液晶屏以及排线。(使用LVDS)
博客演示使用了4EV04A的组合,硬件组合如下:
image.jpg

image.jpg
显示屏背部开关全部拨ON,排线接在LVDS口。

接下来则是移植所需的操作系统,首先找到教程的3-2部分的01_soc_base_4ev.rar压缩包,找到54_mpsoc_ugui文件夹,其中有三个文件夹,我们只需要zu_prj这个文件夹。将其拷贝到合适的编译用的路径。
image.jpg

接下来需要导出xsa文件,再使用Vitis生成boot的三个文件以及设备树,此处不再赘述步骤,若不会这些操作请参考3-4-1Linux入门的第八课。
拷贝一份当前板子的完整设备树来做修改,通常位于3-4-1Linux入门的第八课demo的zu_dts中。一共需要修改两处位置:
添加对触控以及显示支持的设备树,touch.dtsi会在文末的参考资料包给出。
file:///C:/Users/Linux/AppData/Local/Temp/msohtmlclip1/01/clip_image007.png image.png

修改内存范围,目的是增加cma空间。
file:///C:/Users/Linux/AppData/Local/Temp/msohtmlclip1/01/clip_image010.png image.png

接下来是将各个文件放置到提供的专用开发工具包内,若不清楚有哪些文件,应该放到哪,请仔细阅读3-4-1Linux入门的第八课。
注意:旧版开发工具包内由于缺少驱动以及各种驱动开关的设置,请下载最新的开发工具包使用,uisrc-lab-xlnx20220101链接:https://pan.baidu.com/s/136lq-tXFw5WXejoP1nSskw提取码:1111

经过编译和制卡,我们就获得了一张包含了底层驱动的系统卡。在移植之前可以先用sd卡启动看一下效果,将sd卡插入板卡,核心板模式开关切换到sd卡启动后上电。可能出现的问题和解决方法如下:
①内核启动报错,与pcie相关:检查vivado内pcie部分设置,对照3-4-1Linux入门的第八课demo的zu_prj内ip配置,很可能是root和endpoint模式的区分。
②其他原因导致内核启动卡死或部分外设异常:检查vivado内各个IO以及时钟,注意将所有IO改为CMOS并把速度改为fast。
③内核启动报错与of_i2c有关:修改设备树touch.dtsi内的"goodix,gt9xx"字段前关键词,若原来为tible需修改为compatible。
若无以上问题,且LCD屏幕显示正常,出现了/dev/input/event0节点则可以进行下一步。
image.png

三、交叉编译tslib
Tslib的开源项目地址在https://github.com/libts/tslib,打开这个网址(若打不开和GFW相关政策有关,请自行解决),找到Releases页面,我们需要其以及发布的稳定版本,截至目前实验时,最新的版本号为1.22,对应的git版本为b5d1890。
image.jpg

进入下载界面后,找到tslib-1.22.tar.gz的文件下载。
file:///C:/Users/Linux/AppData/Local/Temp/msohtmlclip1/01/clip_image017.png image.png

下载好把压缩包拷贝进虚拟机系统内,请务必使用米联客提供的虚拟机系统,如果可以自行解决环境问题可自己搭建。通常放在home/用户名/下开发,不会遇到权限问题。
image.png

使用tar zxvf tslib-1.22.tar.gz解压压缩包。输入cd tslib-1.22进入刚解压的文件夹内。接下来就是交叉编译环节:
sudo apt-get update                                                                                      更新软件源
sudo apt-get install libtool pkg-config                                                          安装所需编译用工具
./autogen.sh                                                                                                   自动配置
./configure --host=aarch64-linux-gnu --prefix=/home/uisrc/mpsoc_tslib    配置编译工具以及安装路径
make                                                                                                               编译
make install                                                                                                    将编译好的文件安装到设定位置

然后就能在/home/uisrc/mpsoc_tslib找到一个交叉编译好的tslib。
image.jpg

将上一步制作好的sd卡接入虚拟机内,进行库的拷贝。bin和etc需要拷贝到sd卡文件系统的根目录对应文件夹,include、lib和share则拷贝到sd卡文件系统的/usr下对应的文件夹。在mpsoc_tslib内打开终端,运行以下命令:
sudo cp -r ./bin/ /media/uisrc/rootfs
sudo cp -r ./etc/ /media/uisrc/rootfs
sudo cp -r ./include/ /media/uisrc/rootfs/usr/
sudo cp -r ./lib/ /media/uisrc/rootfs/usr/
sudo cp -r ./share/ /media/uisrc/rootfs/usr/

拷贝好后,进入sd卡文件系统的/etc/下,找到profile这个文件,在旁白空白处右击选择最后一个选项,在此打开终端。
file:///C:/Users/Linux/AppData/Local/Temp/msohtmlclip1/01/clip_image024.png image.jpg

通过sudo vim profile给文件添加一些变量(vim的使用方法请自行百度):
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
修改效果如下,记得退出保存:
image.jpg
退出后使用sync来同步一下磁盘,确保文件均写入硬盘内。

四、测试
将卡插入板卡,核心板启动模式开关设置为sd卡启动,上电后可以看到液晶屏上的登录界面:
image.jpg

串口登录后,输入su回车,紧接着输入密码进入root用户模式。输入命令ts_test_mt进行测试,此时液晶屏上出现测试界面:
image.jpg

界面上方有三个按钮,分别是光标模式(默认),绘图模式和退出,最多可支持5点触控:
image.png

image.jpg

附上本博客产生的各种工程文件(全部基于2020.2),4EV04A专用其他型号可参考:
tslib源码以及设备树请看下方附件。

通用资料.zip

2.48 MB, 下载次数: 90

tslib以及设备树

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则