将tslib-1.4移植到Mini2440开发板

Author: Simon Lee Date: 2017/04/25

主机环境: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清空旧配置文件(养成好习惯)。


2.执行"ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache,作用是防止编译过程中出现错误"undefined reference to rpl_malloc"


3.我本人写了一个shell脚本,作为编译前的自动化配置流程,主要功能就是配置交叉编译器,一定要确保使用正确的arm-linux-编译器来编译程序,否则
无法完成跨平台的移植功能。再一次强调,不同的编译器编译的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盘或者网络挂载

下载到开发板里运行。


[student@localhost bin]$ file ts_calibrate 
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, 如果你的触摸屏出现了屏幕校正

功能,说明触摸屏库移植成功,否则就是移植不成功,请认真检查每一步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值