嵌入式快速入门学习笔记-触摸屏驱动移植

创建input目录

由于某些原因导致/dev目录下没有Input目录的解决方法,当然如果存在的话,可直接跳过

cd /rootfs/etc
vi mdev.conf

在mdev.conf文件中输入
event.*	0:0	0660	@(mkdir -p input&&mv $MDEV input)
mice	0:0	0660	@(mkdir -p input&&mv $MDEV input)
mouse.*	0:0	0660	@(mkdir -p input&&mv $MDEV input)

移植gslx680驱动

1)将驱动源码(gslX680.c gslX680.h gsl_point_id )复制到/kernel/derivers/input/touchscreen
2)/kernel/derivers/input/touchscreen/Makefile文件添加

obj-$(CONFIG_TOUCHSCREEN_GSLX680)   +=gslX680.0 gsl_point_id

3)/kernel/derivers/input/touchscreen/Kconfig文件添加

config TOUCHSCREEN_GSLX680
	tristate "9tripod GSL1680 Touch Panel Controller"
	depends on I2C
	help
		This enables support for FocalTech over I2C based touchscreens.

4)重新编译

make distclean //删除
make x210ii_qt_defconfig
make menuconfig //查看Device Drivers->Input device support->Touchscreens->9tripod GSL1680 Touch Panel Controller是否选中
make -j4

5)测试

//1.查看内核是否已成功安装
cat /proc/bus/input/devices
//2.打印测试(滑动屏幕出现乱码)
cat /dev/input/event2

移植tslib

准备工作:
将内核源代码里的kernel/include/linux/input.h中的
#define EV_VERSION 0x010001
改为:
#define EV_VERSION 0x010000
使其与编译器的EV_VERSION (arm-2009q3/arm-none-linux-gnueabi/libc/usr/include/linux/input.h)相同

1)解压tslib压缩包
2)配置

cd tslib

./autogen.sh

./configure --host=arm-none-linux-gnueabi 
	--prefix=$(pwd)/tmp 
	CC=(编译器绝对路径/arm-none-linux-gnueabi-gcc)
	ac_cv_func_malloc_0_nonnull=yes

make

make install
成功后会在安装目录生成include lib etc bin四个文件夹

file /bin/ts_test 查看是否为编译器正确编译
若出现下面内容,说明编译正确
ts_test: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.27, with debug_info, not stripped

将四个文件夹的内容复制到根文件系统相应相对应文件夹中

说明:
	--host:交叉编译器的前缀
	ac_cv_func_malloc_0_nonnull=yes 一定要有

3)修改/etc/ts.conf

module_raw input (去掉前面的# 和空格使其顶格,其他的保持不变)

4)环境变量/etc/profile

#指定触摸设备(自身机器的event)
export TSLIB_TSDEVICE=/dev/input/event2
#指定触摸校准文件存放位置
export TSLIB_CALIBFILE=/etc/pointercal
#指定tslib配置文件的位置
export TSLIB_CONFFILE=/etc/ts.conf
#指定触摸屏插件文件的位置
export TSLIB_PLUGINDIR=/lib/ts
#设定控制台设为none
export TSLIB
_CONSOLEDEVICE=none
#指定帧缓冲设备
export TSLIB_FBDEVICE=/dev/fb0

5)运行测试

source /etc/profile 声明环境
./ts_calibrate

6)问题
运行./ts_calibrate 出现 permission denied的错误,目前没有找到原因,望大佬们指点
补:发现跟自己使用busybox生成的根文件系统有关,换例程的根文件系统就没有问题。同时根文件系统中的bin文件夹中的sh->busybox。但是例程中的sh->bash。不知道是否有关系。最后还是换成里例程中的根文件系统得以解决。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值