t113-c-触摸篇

发布时间 2023-08-13 17:55:03作者: 悠闲的小莫

学一下如何添加触摸

先在menuconfig里面寻找是否有GT911

但是结果并没有找得到

那么在kernel_menuconfig中是否有呢

也没见有,但是我找到了gt9xx这个选项

估计就是这个了,那就不用添加驱动了把它选上

board.dts

设备树中也应该看一看,这中驱动硬是在iic也就是twi总线下的,果然在twi2找到了

打包

打包的时候需要注意的boot空间区域增大了,需要修改一下分区表文件

/dev下的event:

每一个event对应着一个输入的设备,至于详情需要到proc中找:

cat /proc/bus/input/devices  使用这条指令可以查看设备详情

https://www.cnblogs.com/sky-heaven/p/9214064.html

这篇文章很好地概况了event的知识和一些查看系统情况的知识,有很参考价值

查看代码

转自:https://blog.csdn.net/qq_21792169/article/details/51458855

当我们在Linux操作系统下使用input子系统时,当我们先插鼠标,在插上摄像头与先插摄像头,在插鼠标,操作系统为两个设备分配的event号不是固定的,先插上的是event0,后插上的是event1 。那么问题来了,我们写应用程序,我们怎么知道那个设备对应那个event接口,我们不可能认为指定使用那个接口,因为有时候插播顺序并不一致,下面我用代码来获取event接口。
 
使用cat /proc/bus/input/devices  
 
I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input2
U: Uniq=
H: Handlers=kbd event2 
B: EV=120013
B: KEY=4 2000000 3803078 f800d001 feffffdf ffefffff ffffffff fffffffe
B: MSC=10
B: LED=7


I: Bus=0011 Vendor=0002 Product=0005 Version=0000
N: Name="ImPS/2 Generic Wheel Mouse"
P: Phys=isa0060/serio1/input0
S: Sysfs=/devices/platform/i8042/serio1/input/input3
U: Uniq=
H: Handlers=mouse1 event3 
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=103
 
主要观察打印信息,Name项是不一样的,我们就可以从这里下手,读取到这个名字,然后在这一类中读取event的值。
#include <stdlib.h>  
#include <stdio.h>  
#include <sys/types.h>  
#include <sys/stat.h>  
#include <unistd.h>  
#include <string.h>  
 #include <sys/mman.h>  
  
//#define DBG_PRINTF(...)    
#define DBG_PRINTF printf  
  
char *command="cat /proc/bus/input/devices > log.txt" ;  
char *file_path="./log.txt";  
char  *file_buff;  
 int number;  
int find_event()  
{  
    int iFd;  
    FILE *tFp;  
    struct stat tStat;  
    char *sub_buff="Handlers=mouse1";    
    /* according  to mouse name find event number*/  
      
    char *buff;  
  
    tFp=fopen(file_path,"r+");    /* check if have log.txt file */  
    if(NULL!=tFp)  
    {  
      fclose(tFp);  
      system("rm log.txt");  
    }  
  
    system(command);  
    /* 打开文件 */  
    tFp = fopen(file_path, "r+");  
    if (tFp == NULL)  
    {  
        DBG_PRINTF("can't open %s\n", file_path);  
        return -1;  
    }  
      
    iFd = fileno(tFp);  
  
    fstat(iFd, &tStat);  
     /* mmap the file to mem */  
    file_buff = (unsigned char *)mmap(NULL , tStat.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, iFd, 0);  
    if (file_buff== (unsigned char *)-1)  
    {  
        DBG_PRINTF("mmap error!\n");  
        return -1;  
    }  
    buff=strstr(file_buff,sub_buff);/* in the mem file_buff  find sub_buff name */  
    if(NULL==buff)  
    {  
        DBG_PRINTF("can't find %s\n",sub_buff);  
        munmap(file_buff, tStat.st_size);  
        return -1;  
    }  
       number=*(buff+strlen(sub_buff)+6);/* 6== event */  
    munmap(file_buff, tStat.st_size);  
    fclose(tFp);  
    return  0;  
  
}  
  
int main(int argc, char **argv)  
{  
   find_event();  
  DBG_PRINTF("event%d\n",number-'0');  
  return 0;  
}  


遇到同样的问题我们可以采取同样的措施,先映射到内存上,再来查找。也可以直接使用fopen打开文件,然后使用fgets函数来读取到buf中,在使用strstr来查找。
 
查看CPU信息:cat /proc/cpuinfo  
  
查看内存信息:cat /proc/meminfo  
  
查看USB设备:cat /proc/bus/usb/devices  
  
查看键盘和鼠标:cat /proc/bus/input/devices  
  
查看各分区使用情况:df  
查看体系结构:busybox uname -a  
  
查看中断信息:cat /proc/interrupts 

软件触摸

那么就写一软件来测试一下触摸是否正常: