fl2440之触摸屏移植

板子:s3c2440,
内核:linux-3.0.54,
交叉编译器:buildroot-2012.08,
屏幕尺寸:4.3
前面我们进行了LCD驱动移植,现在我们来移植触摸屏

触摸屏离不开AD转换,由我们产生的x,y方向的模拟信号进入到AD转换器,然后再出发相应的中断进行处理,在中断处理程序中上报数据。过多的原理这里不赘述,直接进入移植:

首先还是得修改文件:

添加头文件:
添加ADC和TS:

添加上面对应的结构体信息:

接下来修改下一个文件:
vim drivers/input/touchscreen/s3c2410_ts.c





这个的内核配置一般都配置好了,因此现在可以直接编译。并将编译以后的内核烧进开发板。

内核打印:

还有我们的event0设备文件:

我们的触摸屏已经移植成功,现在我们也可以写一个小程序测试测试:
#include <stdio.h>

#include <linux/input.h>
static int event0_fd = -1;
struct input_event ev0[64];

static int handle_event0()
{
    int button = 0, realx=0, realy=0, i, rd;
    rd = read(event0_fd, ev0, sizeof(struct input_event)* 64);
    if(rd < sizeof(struct input_event)) return 0;
    for(i=0;i<rd/sizeof(struct input_event); i++)
    {
        if(EV_ABS == ev0[i].type)
        {
            if(ev0[i].code == 0) {
                realx = ev0[i].value;
            } else if(ev0[i].code == 1) {
                realy = ev0[i].value;
            }
        }
        printf("event(%d):type:%d; code:%3d; value:%3d; realx:%3d; realy:%3d\n",i,ev0[i].type,ev0[i].
code,ev0[i].value,realx,realy);
   }
    return 1;
}

int main(void)
{
    int done = 1;
    event0_fd = open("/dev/event0",02);
    if(event0_fd <0) {
        printf("open input device error\n");
        return -1;
    }
    while (done)
    {
        printf("begin handle_event0...\n");
        done = handle_event0();
        printf("end handle_event0...\n");
    }
    if(event0_fd > 0)
    {
        close(event0_fd);
        event0_fd = -1;
    }
    return 0;
}

经交叉编译器编译以后烧进开发板,执行后触摸屏幕,看屏幕现象。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值