1. 环境准备与依赖库安装
在开始LVGL和tslib的整合之前,我们需要先准备好开发环境。我使用的是正点原子IMX6U开发板(阿尔法),运行嵌入式Linux系统。首先确保你的系统已经安装了必要的编译工具和依赖库。
安装交叉编译工具链: 如果你的开发板需要交叉编译,确保已经安装合适的工具链。比如对于ARM架构,可以使用gcc-arm-linux-gnueabihf:
sudo apt-get install gcc-arm-linux-gnueabihf
tslib的编译与安装: tslib是一个专门为嵌入式Linux设计的触摸屏支持库,它能够处理原始触摸数据并将其标准化。首先下载tslib源码(推荐1.11或更高版本):
git clone https://github.com/libts/tslib.git
cd tslib
./autogen.sh
./configure --host=arm-linux --prefix=/usr/local/tslib
make
make install
安装完成后,将tslib库文件拷贝到目标板的文件系统中,并设置环境变量。在目标板的/etc/profile文件中添加:
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_FBDEVICE=/dev/fb0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
LVGL源码准备: 下载LVGL源码(V8版本)并解压:
wget https://github.com/lvgl/lvgl/archive/refs/tags/v8.2.0.tar.gz
tar -xzvf v8.2.0.tar.gz
现在,我们的基础环境已经准备就绪。接下来进入具体的代码整合阶段。
2. 修改LVGL驱动以支持tslib
LVGL默认的输入设备驱动并不直接支持tslib,我们需要修改evdev.c文件来适配tslib。这个文件位于lv_drivers/indev/目录下。以下是具体的修改步骤。
首先包含tslib头文件: 在evdev.c文件的开头添加tslib的头文件包含:
#include <tslib.h>
声明tslib相关变量: 我们需要声明tslib的设备句柄和采样结构体:
struct tsdev *ts;
struct ts_sample samp;
修改初始化函数evdev_init: 原来的evdev_init函数打开的是Linux的输入设备节点,现在要改为使用tslib的初始化方式:
void evdev_init(void)
{
ts = ts_setup(NULL, O_RDONLY | O_NONBLOCK);
if (!ts) {
perror("ts_setup");
exit(1);
}
evdev_root_x = 0;
evdev_root_y = 0;
evdev_button = LV_INDEV_S


2万+

被折叠的 条评论
为什么被折叠?



