Author: Simon Lee Date: 2017/04/25
开发板:FriendARM2440,Linux-2.6.32.12
作为训练,最近又重新移植了一次tslib,很久之前按照网络教程移植过了一次,结果失败了。本次开发板使用的是友善之臂的Mini2440。液晶触摸屏是天嵌的
4.3寸480*272规格的屏幕。
说说之前失败的现象,在移植完毕以后测试tslib库bin目录下的ts_calibrate,出现了Illegal Instruction。原因是网上所说的arm-linux-gcc版本用错了。
在使用友善之臂公司提供了原装内核映像ZImage_P43时,一定要注意,当时编译该内核的时候采用了arm-linux-gcc 4.4.3版本的编译器。所以在移植tslib-1.4的时候,
也请一定要注意使用arm-linux-gcc 4.4.3版本的编译器,当时没留意编译器的环境问题,结果就出错。嵌入式开发还是很多细节问题要注意,马虎不得。
如网上的教案一样,首先需要下载tslib-1.4.tar.gz源码包,解压。 然后在解压后的文件夹里面再创建一个文件夹(名字随便,这里设定为tmp)。因为等下要移植的库文件
需要复制到开发板当中去,所以为了避免PC端的库函数所属用户名与开发板的权限不一致,需要在PC机当中用root身份执行编译操作。
无法完成跨平台的移植功能。再一次强调,不同的编译器编译的zImage映像文件一定要查清楚,当时自己编译内核的时候交叉编译器的版本是什么。shell脚本如下,
运行脚本./my_configure.sh(注意运行前修改权限 chmod 777 my_configure.sh)
#!/bin/bash
./configure --host=arm-none-linux-gnueabi --cache-file=arm-linux.cache --prefix=$(pwd)/tmp
CC=/usr/local/arm/4.4.3/bin/arm-linux-gcc CXX=/usr/local/arm/4.4.3/bin/arm-linux=g++
export CC=/usr/local/arm/4.4.3/bin/arm-linux-gcc
export CXX=/usr/local/arm/4.4.3/bin/arm-linux-g++
4.执行配置完成以后,make && make install 安装程序到当前目录的tmp文件夹下
5.安装完成以后,到tmp目录下的bin文件夹下找到ts_calibrate.执行命令查看该文件的平台属性,如果属于ARM平台,说明交叉编译成功,可以用U盘或者网络挂载
ts_calibrate: ELF 32-bit LSB executable, ARM, version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.32,
not stripped
5.本人用U盘复制tmp文件夹下的4个文件夹内容到ARM开发板的/usr/local/tslib目录下存放
6.配置ARM开发板的环境变量,使用vi编辑器执行: vi /etc/profile
输入如下内容,保存并退出。
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export QWS_MOUSE_PROT0=tslib:/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CONSOLEDEVICE=none
export QWS_SIZE=480*272
export QT_QWS_FONTDIR=$QTDIR/lib/fonts
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
7.vi 编辑器修改/usr/local/tslib/etc/ts.conf内容,将
# module_raw input一行前面的符号和空格去掉,注意空格也不能留,文字顶格。
8.执行source /etc/profile
9.执行/usr/local/tslib/bin/ts_calibrate, 如果你的触摸屏出现了屏幕校正
主机环境:Red Hat Enterprise Linux6
编译器:arm-linux-gcc 4.4.3开发板:FriendARM2440,Linux-2.6.32.12
作为训练,最近又重新移植了一次tslib,很久之前按照网络教程移植过了一次,结果失败了。本次开发板使用的是友善之臂的Mini2440。液晶触摸屏是天嵌的
4.3寸480*272规格的屏幕。
说说之前失败的现象,在移植完毕以后测试tslib库bin目录下的ts_calibrate,出现了Illegal Instruction。原因是网上所说的arm-linux-gcc版本用错了。
在使用友善之臂公司提供了原装内核映像ZImage_P43时,一定要注意,当时编译该内核的时候采用了arm-linux-gcc 4.4.3版本的编译器。所以在移植tslib-1.4的时候,
也请一定要注意使用arm-linux-gcc 4.4.3版本的编译器,当时没留意编译器的环境问题,结果就出错。嵌入式开发还是很多细节问题要注意,马虎不得。
如网上的教案一样,首先需要下载tslib-1.4.tar.gz源码包,解压。 然后在解压后的文件夹里面再创建一个文件夹(名字随便,这里设定为tmp)。因为等下要移植的库文件
需要复制到开发板当中去,所以为了避免PC端的库函数所属用户名与开发板的权限不一致,需要在PC机当中用root身份执行编译操作。
1.在解压目录下执行make distclean清空旧配置文件(养成好习惯)。
无法完成跨平台的移植功能。再一次强调,不同的编译器编译的zImage映像文件一定要查清楚,当时自己编译内核的时候交叉编译器的版本是什么。shell脚本如下,
运行脚本./my_configure.sh(注意运行前修改权限 chmod 777 my_configure.sh)
#!/bin/bash
./configure --host=arm-none-linux-gnueabi --cache-file=arm-linux.cache --prefix=$(pwd)/tmp
CC=/usr/local/arm/4.4.3/bin/arm-linux-gcc CXX=/usr/local/arm/4.4.3/bin/arm-linux=g++
export CC=/usr/local/arm/4.4.3/bin/arm-linux-gcc
export CXX=/usr/local/arm/4.4.3/bin/arm-linux-g++
4.执行配置完成以后,make && make install 安装程序到当前目录的tmp文件夹下
5.安装完成以后,到tmp目录下的bin文件夹下找到ts_calibrate.执行命令查看该文件的平台属性,如果属于ARM平台,说明交叉编译成功,可以用U盘或者网络挂载
下载到开发板里运行。
ts_calibrate: ELF 32-bit LSB executable, ARM, version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.32,
not stripped
5.本人用U盘复制tmp文件夹下的4个文件夹内容到ARM开发板的/usr/local/tslib目录下存放
6.配置ARM开发板的环境变量,使用vi编辑器执行: vi /etc/profile
输入如下内容,保存并退出。
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export QWS_MOUSE_PROT0=tslib:/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CONSOLEDEVICE=none
export QWS_SIZE=480*272
export QT_QWS_FONTDIR=$QTDIR/lib/fonts
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
7.vi 编辑器修改/usr/local/tslib/etc/ts.conf内容,将
# module_raw input一行前面的符号和空格去掉,注意空格也不能留,文字顶格。
8.执行source /etc/profile
9.执行/usr/local/tslib/bin/ts_calibrate, 如果你的触摸屏出现了屏幕校正
功能,说明触摸屏库移植成功,否则就是移植不成功,请认真检查每一步。