移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植(在make menuconfig时的配置选项位置)

来源:互联网 发布:如何做淘宝分销商 编辑:程序博客网 时间:2024/05/17 07:53
移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植的过程记录下来:
(1)首先打一个补丁:s3c2410_touchscreen.patch,
在内核解压的根目录下 patch -Np1 -i  (接补丁的路径);
然后修改arch/arm/mach-s3c2410/mach-smdk2410.c添加如下代码:添加头文件:#include <asm/arch/ts.h>
添加结构体:static struct s3c2410_ts_mach_info smdk2410_ts_cfg __initdata = { 
        .delay = 20000, 
        .presc = 49, 
        .oversampling_shift = 2, 
};
并添加支持触摸屏平台代码的信息,这个找到一个名为*smdk2410_devices[]的结构体指针数组里添加:&s3c_device_ts,然后在smdk2410_map_io函数里添加:set_s3c2410ts_info(&smdk2410_ts_cfg); 
修改driver/input/touchscreen/Makefile,添加如下内容:
obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o
然后将驱动s3c2410_ts.c放置在driver/input/touchscreen/下面,接下来就是配置内核支持触摸屏驱动make menuconfig 配置支持触摸平驱动
  Device Drivers  ---> Input device support  --->     [*]   Touchscreens  --->  
                                                        <*>   Samsung S3C2410 touchscreen input driver                   
                                                         [*]     Samsung S3C2410 touchscreen debug messages      Device Drivers  ---> Input device support  --->     [*]   Event interface
Device Drivers  ---> Input device support  --->     [*]   touchscreem interface
                                                                                               320 h......
                                                                                               240 v......

然后make zImage。当然首先我们要支持framebuffer。
系统启动以后会在dev目录下产生event0 和 mouse0两个设备节点,它们就是触摸屏的设备节点。
关于s3c2410_touchscreen.patch和s3c2410_ts.c这个两个补丁请到这个地址去下载,如果不行,请联系我,我在发给你。
我的邮箱是:linweig@126.com
http://www.51CTO提醒您,请勿滥发广告!/files/09d713cc-dd96-11dd-9f5d-0014221b798a/

下载tslib-1.4.tar.gz,有些网上download下来的源码包有些不对,一定要找好的源码包,你可以到csdn网站下下载;
是在不行的话,我也可以发给你;我的邮箱是:linweig@126.com

第一步:解压tslib-1.4.tar.gz
 
        tar -zxvf tslib-1.4.tar.gz
第二步:进入解压过的目录
    
        cd tslib-1.4
第三步:执行tslib-1.4目录下的autogen.sh
         ./autogen.sh
第四步:执行autogen.sh脚本所生成的Makefile文件
  在执行make时,出现下列错误: 
  ts_test.o(.text 0x218): In function `main': undefined reference to `rpl_malloc' 
  在当前目录查找了rpl_malloc,发现configure里有#define malloc rpl_malloc一行。分析configure 脚本相关的代码,原来是          ac_cv_func_malloc_0_nonnull引起的,OK我们不让它检查了,产生一个cache文件arm-linux.cache,欺骗configure:
 
 请打入以下命令:
  echo "ac_cv_func_malloc_0_nonnull=yes" >$ARCH-linux.cache 
  ./configure --host=arm-softfloat-linux-gnu  --prefix=/home/noah/mytslib --cache-file=$ARCH-linux.cache
   
  --host是指你的交叉编译器的前最;例如:你的交叉编译器是arm-linux-gcc,则--host=arm-linux.如果是arm-softfloat-linux-gnu-gcc 
  则--host=arm-softfloat-linux-gnu
  --prefix 是你执行make install 的时候编译后生成的可执行文件和库文件以及配置文所安装的目录;
  configure文件下还有好多选项;你可以执行./configure -help 来进行选择其他项,不过在这里这些选项就够了。
第五步:执行make
第六步:执行make install
第七步:把指定安装目录下的mytslib的文件都copy到你所挂载的根文件下
        sudo cp -rf /home/noah/mytslib/*    /rootfs/mytslib
第八步:修改/rootfs/mytslib下的etc目录中ts.cong文件
        vi ts.conf  将第二行的#module_raw input修改成module_raw input 注意一定要顶格写否则程序执行时会发生读取ts.conf错误
第九步:启动你的开发板
        在终端上设置一下环境变量:
        export TSLIB_ROOT=/mytslib
        export TSLIB_TSDEVICE=/dev/event0
        export LD_LIBRARY_PATH=/mytslib/lib:$LD_LIBRARY_PATH
        export QWS_SIZE=320x240
        export TSLIB_FBDEVICE=/dev/fb0
        export TSLIB_PLUGINDIR=/mytslib/lib/ts
        export TSLIB_CONSOLEDEVICE=none
        export TSLIB_CONFFILE=/mytslib/etc/ts.conf
        export POINTERCAL_FILE=/etc/pointercal 
        export QWS_MOUSE_PROTO=Tslib:/dev/event0 
        export TSLIB_CALIBFILE=/etc/pointercal
        export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0"
        export TSLIB_TSEVENTTYYPE=H3600
        为了实现Tslib的正确运行,需要对如下的Tslib的环境变量进行配置:
        TSLIB_TSDEVICE  //触摸屏设备文件名。
        TSLIB_CALIBFILE  //校准的数据文件,由ts_calibrate校准程序生成。
        SLIB_CONFFILE  //配置文件名。
        TSLIB_PLUGINDIR //插件目录
        TSLIB_CONSOLEDEVICE //控制台设备文件名
        TSLIB_FBDEVICE  //设备名
QWS_DISPLAY
经过合理设置的QWS_DIS PLAY环境变量可以使QPE桌面环境在不同大小开发板上的显示更适合阅读。Sitsang开发板有一个320×240的QVGA液晶显示屏,因此设置环境变量:
QWS_DISPLAY=Transformed:Rot90: mmWidth70:mmHeight85:0
参数Transformed指定QPE显示采用qt-gfx-transformed协议,Rot90指定画面旋转90度,mmWidth70指定显示屏幕物理宽度70mm,mmHeight85指定显示屏幕物理长度85mm。
 
       以上环境变量在实际开发中的实际配置可以根据实际情况决定。而这些指定的设备节点一定要和你的开发板上
       的/dev目录下的设备节点相对应。
第十步:就可以运行/rootfs/mytslib/bin下的测试文件了
       ./ts_test

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/linweig/archive/2009/04/16/4075857.aspx
原创粉丝点击