您的位置:首页 > 其它

fl2440之触摸屏移植

2017-04-19 14:35 176 查看
板子: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;
}


经交叉编译器编译以后烧进开发板,执行后触摸屏幕,看屏幕现象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息