------------------------------------------------------------------------------------------------------------------------------

交叉编译器:arm-linux-gcc-4.5.4

Linux内核版本:Linux-3.0

主机操作系统:Centos 6.5

开发板:FL2440

------------------------------------------------------------------------------------------------------------------------------

参考博客:

http://www.qtcn.org/bbs/read.php?tid=10373

http://blog.csdn.net/huangan_xixi/article/details/49430807

所需源码:

tslib-1.4.gz.bz2  http://vdisk.weibo.com/s/AcUHxOERV2k0

Qt,Qt/E,Qtopia Core,Qtopia的区别:

Qt泛指Qt的所有桌面版本,比如Qt/X11,Qt Windows,Qt Mac等。由于Qt最早是在Linux中随着KDE流行开来的,因此通常很多人说的Qt都指用于Linux/Unix的Qt/X11。

Qt/E(Qt/Embedded)是用于嵌入式Linux系统的Qt版本。Qt/E去掉了X Lib的依赖而直接工作于Frame Buffer上,因而效率更高,但它并不是Qt的子集,而应该是超集,部分机制(如QCOP等)不能用于Qt/X11中。

Qtopia是一个构建于Qt/E之上的类似桌面系统的应用环境。相比之下,Qt/E是基础类库。

Qtopia Core:就是原来的Qt/E,大概从Qt 4开始改名,把Qtopia Core并到Qtopia的产品线中去了。但实际上Qtopia Core就相当于原来的Qt/E,仍然作为基础类库。

一、编译内核使其支持触摸屏

Linux-3.0已经有了触摸屏的驱动,只需要修改内核代码为其添加触摸屏的支持就可以了。只需修改一下使其支持s3c2440就可以了。

1、修改内核源代码:

(1)#vim arch/arm/mach-s3c2440/mach-smdk2440.c

添加头文件:

#include <plat/ts.h>

找个合适的位置添加以下结构体:

static struct s3c2410_ts_mach_info smdk2440_ts_cfg __initdata = {

.delay = 10000,
        .presc = 49,
        .oversampling_shift = 2,
};

修改结构体:

static struct platform_device *smdk2440_devices[] __initdata = {

&s3c_device_ohci,
     &s3c_device_lcd,
     &s3c_device_wdt,
     &s3c_device_i2c0,
     &s3c_device_iis,
     &s3c_device_dm9000,
     &s3c_device_adc,    
     &s3c_device_ts,    
};

static void __init smdk2440_machine_init(void)
 {
     s3c24xx_fb_set_platdata(&smdk2440_fb_info);
     s3c24xx_ts_set_platdata(&smdk2440_ts_cfg);    /* add toucg screen info by */
     s3c_i2c0_set_platdata(NULL);
     platform_add_devices(smdk2440_devices, ARRAY_SIZE(smdk2440_devices));
     smdk_machine_init();
}

(2)#vim  drivers/input/touchscreen/s3c2410_ts.c

添加代码:

input_report_key(ts.input, BTN_TOUCH, 1);
input_report_abs(ts.input, ABS_PRESSURE, 1);
input_sync(ts.input);

input_report_key(ts.input, BTN_TOUCH, 0);
input_report_abs(ts.input, ABS_PRESSURE, 0);
input_sync(ts.input);

ts.input = input_dev;
ts.input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS)   //将这句删除
ts.input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS) | BIT(EV_SYN);   //添加这句
ts.input->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
input_set_abs_params(ts.input,
ABS_X, 0, 0x3FF, 0, 0);
input_set_abs_params(ts.input, ABS_Y, 0, 0x3FF, 0, 0);
input_set_abs_params(ts.input, ABS_PRESSURE, 0, 1, 0, 0); /*add */
 
2、修改make menuconfig
#make menuconfig
Device Drivers  --->
  Input device support  ---> 
    [*]   Touchscreens  ---> 
      <*>   Samsung S3C2410/generic touchscreen input driver
 
3、重新编译内核并烧录到开发板上面,查看是否修改成功:

~ >: ls dev/event0
dev/event0

在dev/目录下有event0说明移植成功。

二、移植tslib库到开发板上
 
大概步骤:编译tslib生成bin,etc,include,lib等文件打包放到自己的开发板上面-->修改开发板上面的环境变量到生成的库函数
 
下载tslib-1.4.gz.bz2并解压缩,进入到tslib目录下
 
执行./autogen.sh命令生成.configure文件
 
若出现autoreconf:command not found 这个问题,则需要下载automake:
#yum install -y automake
 
还有其他情况可能需要下载libtool:
#yum install -y libtool
 
执行./configure命令
#./configure --prefix=(你自己的安装目录) --host=arm-linux ac_cv_func_malloc_0_nonnull=yes  CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc
#make
#make install
 
进入到自己的安装目录,将目录下的bin,etc,include,lib四个文件打包放到自己的开发板上面,我的放在/apps/etc/qt/下。
 
下面是在自己的开发板上面做的:
 
修改环境变量:
#vi /etc/profile

# /etc/profile: system-wide .profile file for the Bourne shells.
export TSLIB_ROOT=/apps/tslib   (解压出四个文件夹所在的目录)
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf (tslib模块配置文件)
export TSLIB_CALIBFILE=$TSLIB_ROOT/etc/pointercal (告诉QTOPIA,pointercal文件在哪里)
export TSLIB_TSDEVICE=/dev/input/event0 (触摸屏设备节点文件)
export TSLIB_CONSOLEDEVICE=none(tslib运行需要的控制台,这里是LCD屏幕,设定的控制台设备为none,默认为/dev/tty)
export TSLIB_FBDEVICE=/dev/fb0 (framebuffer设备文件)
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts(tslib插件库目录)

export LD_LIBRARY_PATH=/lib:/usr/lib:/apps/tslib/lib(设置你tslib下lib的路径,让系统能够找到)

#source /etc/profile  使能环境变量

#vi /apps/etc/qt/etc/ts.conf  将#module_raw input 前面的#号给删了,不然后面执行校检程序的时候不能校检会出现以下错误:

No raw modules loaded.
ts_config: No such file or directory

#./apps/etc/qt/bin/ts_calibrate

若没有错误则屏幕上面会依次出现四个校验点,手指点中校验即可。若出现错误则参考一下链接:

http://blog.csdn.net/xiaoyangger/article/details/5369961

到此开发板就已经支持触屏了。

FL2440 Linux-3.0内核触摸屏的支持的更多相关文章

  1. 《Linux设备驱动开发具体解释(第3版)》(即《Linux设备驱动开发具体解释:基于最新的Linux 4.0内核》)网购链接

    <Linux设备驱动开发具体解释:基于最新的Linux 4.0内核> china-pub   spm=a1z10.3-b.w4011-10017777404.30.kvceXB&i ...

  2. Centos LInux 7.0 内核3.1 升级简化流程

    Centos LInux 7.0 内核3.1 升级建华流程 1)#导入ELRepo软件仓库的公共秘钥rpm --import https://www.elrepo.org/RPM-GPG-KEY-el ...

  3. 《Linux设备驱动开发详解(第3版)》(即《Linux设备驱动开发详解:基于最新的Linux 4.0内核》)--宋宝华

    http://blog.csdn.net/21cnbao/article/details/45322629

  4. linux-3.0内核移植到fl2440开发板(以s3c2410为模板)

    1.新建kernel文件夹,用于存放内核文件 [weishusheng@localhost ~]$ mkdir kernel 2.进入kernel,上传压并解压压缩文件 [weishusheng@lo ...

  5. linux-3.0内核移植到fl2440开发板(以MINI2440为模板)

    我们的fl2440开发板使用的是s3c2440的芯片,与MINI2440十分相似,因此需要改动的地方不多,移植也比较容易. 1.[weishusheng@localhost kernel]$ sudo ...

  6. [转贴]Linux内核LTS长期支持版生命周期

    Linux内核LTS长期支持版生命周期 https://blog.51cto.com/dangzhiqiang/1894026 搞不懂长期支持版本的特点和区别. 党志强关注0人评论4371人阅读201 ...

  7. [转帖]Linux内核为大规模支持100Gb/s网卡准备好了吗?并没有

    Linux内核为大规模支持100Gb/s网卡准备好了吗?并没有 之前用 千兆的机器 下载速度 一般只能到 50MB 左右 没法更高 万兆的话 可能也就是 200MB左右的速度 很难更高 不知道后续的服 ...

  8. Linux下编译内核配置选项简介

    Code maturity level options代码成熟度选项 Prompt for development and/or incomplete code/drivers 显示尚在开发中或尚未完 ...

  9. Kali Linux 2.0配置并安装常用的工具

    Kali Linux 前身是著名渗透测试系统BackTrack ,是一个基于 Debian 的 Linux 发行版,包含很多安全和取证方面的相关工具. Kali Linux 2.0是基于Debian ...

随机推荐

  1. 【Mysql优化】MySQL Profiling 的使用

    要想优化一条 Query,我们就需要清楚的知道这条 Query 的性能瓶颈到底在哪里,是消耗的 CPU计算太多,还是需要的的 IO 操作太多?要想能够清楚的了解这些信息,在 MySQL 5.0 和 M ...

  2. JVM指令的使用深入详解

    原文地址:https://www.jb51.net/article/155293.htm 一.未归类系列A 此系列暂未归类. 指令码    助记符                            ...

  3. Windows下搭建本地SVN服务器【转】

    转自:http://www.linuxidc.com/Linux/2015-01/111563.htm 本文介绍Windows下搭建本地SVN服务器的方法,网上资料比较少也比较旧,大都介绍的是旧版本S ...

  4. 【转】java中的集合和数组

    转载自:http://www.cnblogs.com/summers/p/4094260.html 数组Array和集合的区别: (1)数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型 ...

  5. [ Openstack ] Openstack-Mitaka 高可用之 memcache

    目录 Openstack-Mitaka 高可用之 概述    Openstack-Mitaka 高可用之 环境初始化    Openstack-Mitaka 高可用之 Mariadb-Galera集群 ...

  6. Selenium2+python自动化48-登录方法(参数化)【转载】

    前言 登录这个场景在写用例的时候经常会有,我们可以把登录封装成一个方法,然后把账号和密码参数化,这样以后用的登录的时候,只需调用这个方法就行了 一.登录方法 1.把输入账号.输入密码.点击登录按钮三个 ...

  7. PHP常用到的功能函数

    1.PHP加密解密 PHP加密和解密函数可以用来加密一些有用的字符串存放在数据库里,并且通过可逆解密字符串,该函数使用了base64和MD5加密和解密. 复制代码代码如下: function encr ...

  8. unity制作简单血条

    学习Unity已经10天了,也没发现有什么长进,真的急.昨天仿着官方Demo做了个射击游戏轮廓,其中需要给每个怪做一个血条. 搜了一些,挺复杂的,用NGUI或者UGUI,外加很长的代码...不过还是找 ...

  9. vs2012将项目同步到github

    http://www.cnblogs.com/SmallZL/p/3637613.html 大神作品,亲测可用

  10. Cocos2dx-Lua UIScrollView 和 UITableView 对比

    为什么写这个 上面这个问题的答案也是我写这篇文章的初衷,在最近给游戏添加一些列表的时候,对比着应用了一下他们两个,在它们两个之间的优劣势之间进行取舍,就有了这个问题的答案. 按照我一个iOS开发而言, ...