美文网首页
基于高通平台的TP调试

基于高通平台的TP调试

作者: Be_a_young_man | 来源:发表于2018-08-31 21:24 被阅读0次

    1、硬件原理

    TP 相关的引脚有 SCL、SDA、VREG_L10、INT、RST,SCL、SDA用于I2C通讯,VREG_L10用于芯片供电,INT用于产生外部中断,RST是复位引脚。

    2、涉及到的知识点

    I2C子系统:(https://www.cnblogs.com/deng-tao/p/6130080.html
    INPUT输入子系统:(https://www.cnblogs.com/deng-tao/p/6094049.html
    工作队列:(http://bgutech.blog.163.com/blog/static/18261124320116181119889/
    中断:(http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=21977330&id=3755609

    在linux里,中断处理分为顶半(top half),底半(bottom half),在顶半里处理优先级比较高的事情,要求占用中断时间尽量的短,在处理完成后,就激活底半,有底半处理其余任务。底半的处理方式主要有soft_irq, tasklet, workqueue三种,他们在使用方式和适用情况上各有不同。soft_irq用在对底半执行时间要求比较紧急或者非常重要的场合,主要为一些subsystem用,一般driver基本上用不上。 tasklet和work queue在普通的driver里用的相对较多,主要区别是tasklet是在中断上下文执行,而work queue是在process上下文,因此可以执行可能sleep的操作。

    3、功能的调试

    a、工模信息的导入

    为了方便查看 手机内部信息,项目一般会定制工模,TP正常工作后一般下一步是导入工模,A306的工模通过拨号可以查看,步骤如下。

    • 在makefile下包含wind_device_info下的文件

    • 要在common.c中包含相应的头文件,及定义一个wind_device_info 结构体。

    • 在来prob函数的末尾处把TP名称和版本信息放到wind_device_info结构体中,将就会显示到工模中。

    b、手势功能的调试

    • 手势的作用是为了在熄屏状态下快速唤醒手机或应用,流程是当处于熄屏状态下,在屏幕上画相应的手势后,触摸ic处理相应的数据后产生中断,驱动程序根据数据上报相应的键值,然后上层根据键值就会打开相应的手势功能。

    • 中断中如何获取TP捕捉到的手势信息

       键值的上报:
       hx83102_ts_register_interrupt(ts->client);
         himax_int_register_trigger(client);
          request_threaded_irq(client->irq, NULL, himax_ts_thread,...);
            himax_ts_thread(int irq, void *ptr)
             himax_ts_isr_func((struct hx_83102_ts_data *)ptr);
              hx83102_ts_work(ts); //主要的工作在这个环节
               himax_wake_check_func();
                 ret_event = himax_parse_wake_event(hx83102_ts); //解析手势键值
                  input_report_key(hx83102_ts->input_dev, KEY_EVENT, 1);//上报键值,上层解析到键值会做相应动作。
                    input_sync(hx83102_ts->input_dev);//事件结束
      

    c、TP固件升级

    • 固件升级是为了当TP中的IC固件升级后,可以在开机后自动加载目录中更新版的固件进行升级。
      1、读取 TP IC 中的固件版本号。
      2、读取代码(*.i文件)中TP固件版本号。
      3、将上述两个版本号比较,判断是否进行TP固件升级
      4、如何进行固件升级:

         //申请更新,创建工作队列, 可以把工作推后,交由一个内核线程去执行,因为固 
          件升级比较耗时。
           ts->himax_update_wq = create_singlethread_workqueue("HMX_update_reuqest");
        //准备更新TP的固件
         INIT_DELAYED_WORK(&ts->work_update, himax_update_register);
            himax_update_register();
             i_update_FW();
             fts_ctpm_fw_upgrade_with_sys_fs_32k(private_ts->client,\
              ImageBuffer,fullFileLength,false);
                i2c_himax_write(client, HX_CMD_TSSLPOUT,&cmd[0], 0, 
      DEFAULT_RETRY_CNT) 
      

    相关文章

      网友评论

          本文标题:基于高通平台的TP调试

          本文链接:https://www.haomeiwen.com/subject/lluewftx.html