0x00 环境说明:

所使用的开发板为锐尔威视的插针版A33_Vstar

触摸屏驱动IC为GT911

接线参照开发板的TP线路

0x01 修改系统配置文件:

笔者所使用的A33开发板的系统配置文件路径问:

/root/a33_linux/dragonboard/tools/pack/chips/sun8iw5p1/configs/vstar/sys_config.fex

在配置文件中搜索 [twi0] 以及 [twi_para] 确保IIC0是开启的:

然后搜索 [ctp_para] ,修改TP配置:(注意屏幕分辨率按实际屏幕设置)

[ctp_para]
ctp_used            = 1
ctp_name            = "gt9xx_ts"
ctp_twi_id          = 0
ctp_twi_addr        = 0x5d
ctp_screen_max_x    = 480
ctp_screen_max_y    = 854
ctp_revert_x_flag   = 0
ctp_revert_y_flag   = 0
ctp_exchange_x_y_flag = 0

ctp_int_port        = port:PB05<0><0><default><default>
ctp_wakeup          = port:PH01<1><default><default><1>
ctp_power_ldo       = "axp22_eldo1"
ctp_power_ldo_vol   = 3000
ctp_power_io        =

0x02 修改初始化脚本:

初始化脚本路径为:

/root/a33_linux/dragonboard/buildroot/target/dragonboard/extra/autorun.sh

在文件中找到安装TP驱动的位置,将:

insmod "$tp_module_path"

修改为:

insmod /system/vendor/modules/gt9xx_ts.ko

找到 tslib config:

将其中的 ft5x_ts 修改为 gt9xx_ts :

修改完毕之后保存退出

0x03 修改驱动代码:

驱动代码路径为:

/root/a33_linux/dragonboard/linux-3.4/drivers/input/touchscreen/gt9xx/

修改 gt9xx_ts.h :

修改相关配置选项:

//***************************PART1:ON/OFF define*******************************
#define GTP_CUSTOM_CFG        1
#define GTP_DRIVER_SEND_CFG   1
#define GTP_HAVE_TOUCH_KEY    0
#define GTP_POWER_CTRL_SLEEP  0
#define GTP_AUTO_UPDATE       0
#define GTP_CHANGE_X2Y        0
#define GTP_ESD_PROTECT       0
#define GTP_CREATE_WR_NODE    0
#define GTP_ICS_SLOT_REPORT   0

#define GTP_HEADER_FW_UPDATE  0    
#define GTP_SLIDING_WAKEUP    0

//TP的调试输出控制(调试完毕之后建议关闭)

#define GTP_DEBUG_ON          1
#define GTP_DEBUG_ARRAY_ON    1
#define GTP_DEBUG_FUNC_ON     1

修改寄存器配置:(数据一般由屏厂直接给出)

#define CTP_CFG_GROUP1 {\
     0x00,0xE0,0x01,0x56,0x03,0x0A,0x05,0x00,0x01,0x08,0x28,\
     0x05,0x50,0x32,0x03,0x05,0x00,0x00,0x00,0x00,0x00,0x00,\
     0x00,0x00,0x00,0x00,0x00,0x87,0x28,0x09,0x17,0x15,0x31,\
     0x0D,0x00,0x00,0x02,0x9B,0x03,0x25,0x00,0x00,0x00,0x00,\
     0x00,0x03,0x64,0x32,0x00,0x00,0x00,0x0F,0x36,0x94,0xC5,\
     0x02,0x07,0x00,0x00,0x04,0x9B,0x11,0x00,0x7B,0x16,0x00,\
     0x64,0x1C,0x00,0x50,0x25,0x00,0x42,0x2F,0x00,0x42,0x00,\
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
     0x00,0x00,0x12,0x10,0x0E,0x0C,0x0A,0x08,0x06,0x04,0x02,\
     0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,\
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x26,\
     0x24,0x22,0x21,0x20,0x1F,0x1E,0x1D,0x00,0x02,0x04,0x06,\
     0x08,0x0A,0x0C,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\
     0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6C,0x01}

只用CTP_CFG_GROUP1,其他组全部清空

修改分辨率设置:(按实际情况调整)

//STEP_3(optional):Custom set some config by themself,if need.
#if GTP_CUSTOM_CFG
   #define GTP_MAX_WIDTH    480
   #define GTP_MAX_HEIGHT   854
   #define GTP_INT_TRIGGER  1    //0:Rising 1:Falling
#else
   #define GTP_MAX_HEIGHT   4096
   #define GTP_MAX_WIDTH    4096
   #define GTP_INT_TRIGGER  1
#endif

修改 gt9xx.c :

参考《GT911编程指南》,修改初始化代码:

void gtp_io_init(int ms)
{      
//    ctp_wakeup(0, 0);
//    msleep(ms);
//
//    gtp_set_int_value(0);
//    msleep(2);
//
//    ctp_wakeup(1, 0);
//    msleep(6);

ctp_wakeup(0, 0);
     gtp_set_int_value(0);
     msleep(1);
     ctp_wakeup(1, 0);
     msleep(6);
     gtp_set_int_value(0);
     msleep(50);
            
#if GTP_ESD_PROTECT
      //   gtp_init_ext_watchdog(client);
#endif      
}

保存修改之后重新编译系统

0x04 重新编译系统:

切换到系统源码顶层目录:

cd  ~/a33_linux/dragonboard

重新编译系统:

./clean.sh

./build.sh  config

cd  linux-3.4/

cp  a33_vstar_defconfig  .config

cd  ..

./build.sh

./build.sh  pack

最终打包生成的系统镜像路径为:

~/a33_linux/dragonboard/tools/pack/sun8iw5p1_dragonboard_vstar.img

0x05 验证:

将打包生成的系统镜像烧录至板子,上电启动之后进入触摸屏校准:

点击屏幕,串口打印坐标数据:

全志A33驱动GT911触摸屏的更多相关文章

  1. 全志A33 linux led驱动编程(附实测参考代码)

    开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 QQ:641395230 开发平台 * 芯灵思Sinl ...

  2. 全志A33 lichee 开发板 Linux中断编程原理说明

    开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 QQ:641395230 本节实验目标实现按键触发中断 ...

  3. 全志A33 lichee怎样编译镜像

    对于全志A33 lichee编译镜像文件需要先搭建好交叉编译环境,这个搭建环境可以看之前的文档 "SINA33开发板怎样创建编译环境" 开发平台 * 芯灵思SinlinxA33开发 ...

  4. 全志A33平台编译linux(分色排版)V1.1

    全志A33平台编译linux 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间:2017/12/13 10:41 版本:V1.1 (一)解压缩lichee备用 ...

  5. 全志A33平台编译linux(分色排版)sina33

    全志A33平台编译linux 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间:2017/12/12 17:36 版本:V1.0 Xshell 5 (Buil ...

  6. 全志A33移植LCD驱动(ILI9806E)

    0x00 环境说明: 所使用的开发板为锐尔威视的插针版A33_Vstar 屏幕是买的第三方的KD050FWFPA011-C009A,其中LCD驱动IC为ILI9806E,所使用的接口为RGB666 0 ...

  7. Linux驱动之触摸屏程序编写

    本篇博客分以下几部分讲解 1.介绍电阻式触摸屏的原理 2.介绍触摸屏驱动的框架(输入子系统) 3.介绍程序用到的结构体 4.介绍程序用到的函数 5.编写程序 6.测试程序 1.介绍电阻式触摸屏的原理 ...

  8. 【Linux高级驱动】触摸屏驱动的移植

    触摸屏驱动的移植 流程 注意:看框架图 1.添加input.c组件 Device Drivers  ---> Input device support  --->  Generic inp ...

  9. linux驱动之触摸屏驱动程序

    触摸屏归纳为输入子系统,这里主要是针对电阻屏,其使用过程如下 :当用触摸笔按下时,产生中断.在中断处理函数处理函数中启动ADC转换x,y坐标.ADC结束,产生ADC中断,在ADC中断处理函数里上报(i ...

随机推荐

  1. 五分钟快速掌握RPC原理及实现

    随着公司规模的不断扩大,以及业务量的激增,单体应用逐步演化为服务/微服务的架构模式, 服务之间的调用大多采用rpc的方式调用,或者消息队列的方式进行解耦.几乎每个大厂都会创建自己的rpc框架,或者基于 ...

  2. beta冲刺5/7

    目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:beta冲刺(5/7) 团队部分 后敬甲(组长) 过去两天完成了哪些任务 ppt制作中 数据集标注 接下来的计划 制作p ...

  3. [转]Windows 安装Kafka

    来源:https://www.cnblogs.com/liuyuhua/p/5329926.html https://www.cnblogs.com/xinlingyoulan/p/6054361.h ...

  4. Linux-vi编辑器简单使用(保证存活)

    vi编辑器基本模式 命令行模式(command mode) 光标移动.复制粘贴.删除 插入模式(insert mode) 文字输入 底行模式(last line mode) 保存.退出 模式转换 co ...

  5. ListView 上拉加载更多

    ListView 上拉加载更多 首先来个效果图 界面布局 <?xml version="1.0" encoding="utf-8"?> <Re ...

  6. Python中re的match、search、findall、finditer区别

    原文地址: http://blog.csdn.net/djskl/article/details/44357389 这四个方法是从某个字符串中寻找特定子串或判断某个字符串是否符合某个模式的常用方法. ...

  7. java 解析富文本处理 img 标签

    很多项目都需要到富文本来添加内容,就好比新闻啊,旅游景点之类的,都需要使用富文本去添加数据,然而怎么我这边就发现了两个问题 1)怎样将富文本的图片的 src 获取出来? 2)后台上传的时候用的是相对路 ...

  8. Android应用程序MVC框架实例分析

    问题提出:如何优雅地分离出应用程序的状态.用户交互和数据表现?如何通过框架体现工程的高性能.高灵活性.高响应性? MVC定义:model.view.controller三者的有机组合,分别表示:模型. ...

  9. XVII Open Cup named after E.V. Pankratiev. XXI Ural Championship

    A. Apple 按题意模拟即可. #include<stdio.h> #include<iostream> #include<string.h> #include ...

  10. __x__(27)0907第四天__ float 浮动

     float 浮动 块元素脱离文档流,水平排列. 浮动元素 会尽量往左上(left),或者右上(right)浮动,直到遇到 块元素 或者 其他浮动元素. 可选值: none;   默认值,不脱离文档流 ...