移植准备
开发环境
PC系统:ubuntu-16.04-desktop-amd64.iso
交叉编译器:arm-Linux-gcc 4.4.3
硬件平台:mini2440开发板
文件系统镜像制作工具
mkyaffs2image-128M
镜像下载工具
MiniTools
tslib源码下载
https://github.com/libts/tslib/releases 下载 tslib-1.0.tar.gz
开始移植
开始前请先安装交叉编译工具arm-Linux-gcc 4.4.3 。
提示下面我们实践的是第一种方案:
【方案1:制作文件系统镜像+tslib移植】
可以直接移植到制作好的文件系统再打包成镜像下载到开发板。
【方案2:直接移植tslib到已有文件系统的开发板】
也可以把编译好的tslib直接移植到已经安装了文件系统的开发板。
1、解压 tslib-1.0.tar.gz ,进入解压后的路径
root@ubuntu:/opt/studyarm# tar xzf tslib-1.0.tar.gz
root@ubuntu:/opt/studyarm# cd tslib-1.0
2、配置、编译和安装tslib,安装成功后可以在/usr/tslib4arm下看到bin、lib、include等目录
root@ubuntu:/opt/studyarm# ./autogen.sh
root@ubuntu:/opt/studyarm# echo "ac_cv_func_malloc_0_nonnull=yes" > arm-linux.cache
root@ubuntu:/opt/studyarm# ./configure --host=arm-linux --prefix=/usr/tslib4arm --cache-file=arm-linux.cache
./autogen.sh执行出错(解决方法如下): ./autogen.sh: 4: ./autogen.sh: autoreconf: not found 上网查了查说是我的版本没有安装automake工具。 先后执行命令:
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool
这时候再次执行./autogen.sh就不出错了。
3、在你要制作的根文件系统usr目录下创建tslib4arm目录,将PC机/usr/tslib4arm目录下的bin、lib和etc目录复制到你要制作的根文件系统的/usr/tslib4arm目录下
cd /opt/rootfs/usr/tslib4arm/(进入你根文件系统下的/usr/tslib4arm/目录)
cp /usr/tslib4arm/bin /usr/tslib4arm/etc /usr/tslib4arm/lib ./ -dr (复制bin、lib和etc)
4、创建tslib环境变量设置脚本,命名为ts_init,放入你创建的根文件系统的sbin/目录下
注意是sbin目录,不是usr/sbin。
#!/bin/sh
export T_ROOT=/usr/tslib4arm #目录
export TSLIB_TSDEVICE=/dev/event0 #触摸屏设备文件
export TSLIB_CALIBFILE=/etc/pointercal #指定触摸屏校准文件pintercal的存放位置
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf #tslib模块配置文件
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts/ #tslib插件库目录
export TSLIB_CONSOLEDEVICE=/dev/tty
export TSLIB_FBDEVICE=/dev/fb0 #framebuffer设备文件
echo "tslib init success!"
把ts_init添加入根文件系统etc/profile文件中,以便开机时加载这些环境变量。
root@ubuntu:/opt/studyarm# cd ./rootfs
root@ubuntu:/opt/studyarm/rootfs#vim ./etc/profile
#在后面加入. ts_init,前面有个点是保证ts_init脚本中设置的变量成为全局变量。
. ts_init
5、修改你创建的根文件系统etc/目录下的ts.conf(由tslib编译自动生成的)
root@ubuntu:/opt/studyarm/rootfs# vim ./etc/ts.conf
编辑ts.conf去掉module_raw input 前面的注释,注意前面不能有空格,否则会报“Segmentation fault”错误。
6、打包镜像
将文件移植了tslib后的文件系统打包成镜像。
root@ubuntu:/opt/studyarm# mkyaffs2image-128M rootfs rootfs_tslib.img
7、下载运行
如下图所示这里只下载前面做好的文件系统,因为bootloader和Linux内核之前都已经下载到nandflash了。
8、在开发板上手动测试tslib是否移植成功
开发板连接串口终端,执行如下命令,可以看到xres = 240, yres = 320,说明移植成功了。
#cd /usr/tslib4arm/bin
#./ts_calibrate
如果执行#./ts_calibrate,出现Segmentation fault错误。
解决方法参考这篇文章:https://blog.youkuaiyun.com/u012577474/article/details/101387541
当执行#./ts_calibrate ,显示屏显示如下:
当执行#./ts_test ,显示屏显示如下:
9、设置开机自动启动校准程序
重新编辑上面的 ts_init脚本文件,在后面加入下面脚本:
if [ ! -e “${TSLIB_CALIBFILE}” ]; then
echo “start ts_calibrate!”
/usr/tslib4arm/bin/ts_calibrate
fi
重启开发板。