基于高通平臺的TP調(diào)試

1、硬件原理

TP 相關(guān)的引腳有 SCL、SDA、VREG_L10、INT、RST,SCL、SDA用于I2C通訊,VREG_L10用于芯片供電,INT用于產(chǎn)生外部中斷,RST是復(fù)位引腳。

2、涉及到的知識點

I2C子系統(tǒng):(https://www.cnblogs.com/deng-tao/p/6130080.html
INPUT輸入子系統(tǒng):(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),在頂半里處理優(yōu)先級比較高的事情,要求占用中斷時間盡量的短,在處理完成后,就激活底半,有底半處理其余任務(wù)。底半的處理方式主要有soft_irq, tasklet, workqueue三種,他們在使用方式和適用情況上各有不同。soft_irq用在對底半執(zhí)行時間要求比較緊急或者非常重要的場合,主要為一些subsystem用,一般driver基本上用不上。 tasklet和work queue在普通的driver里用的相對較多,主要區(qū)別是tasklet是在中斷上下文執(zhí)行,而work queue是在process上下文,因此可以執(zhí)行可能sleep的操作。

3、功能的調(diào)試

a、工模信息的導(dǎo)入

為了方便查看 手機(jī)內(nèi)部信息,項目一般會定制工模,TP正常工作后一般下一步是導(dǎo)入工模,A306的工模通過撥號可以查看,步驟如下。

  • 在makefile下包含wind_device_info下的文件

  • 要在common.c中包含相應(yīng)的頭文件,及定義一個wind_device_info 結(jié)構(gòu)體。

  • 在來prob函數(shù)的末尾處把TP名稱和版本信息放到wind_device_info結(jié)構(gòu)體中,將就會顯示到工模中。

b、手勢功能的調(diào)試

  • 手勢的作用是為了在熄屏狀態(tài)下快速喚醒手機(jī)或應(yīng)用,流程是當(dāng)處于熄屏狀態(tài)下,在屏幕上畫相應(yīng)的手勢后,觸摸ic處理相應(yīng)的數(shù)據(jù)后產(chǎn)生中斷,驅(qū)動程序根據(jù)數(shù)據(jù)上報相應(yīng)的鍵值,然后上層根據(jù)鍵值就會打開相應(yīng)的手勢功能。

  • 中斷中如何獲取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); //主要的工作在這個環(huán)節(jié)
             himax_wake_check_func();
               ret_event = himax_parse_wake_event(hx83102_ts); //解析手勢鍵值
                input_report_key(hx83102_ts->input_dev, KEY_EVENT, 1);//上報鍵值,上層解析到鍵值會做相應(yīng)動作。
                  input_sync(hx83102_ts->input_dev);//事件結(jié)束
    

c、TP固件升級

  • 固件升級是為了當(dāng)TP中的IC固件升級后,可以在開機(jī)后自動加載目錄中更新版的固件進(jìn)行升級。
    1、讀取 TP IC 中的固件版本號。
    2、讀取代碼(*.i文件)中TP固件版本號。
    3、將上述兩個版本號比較,判斷是否進(jìn)行TP固件升級
    4、如何進(jìn)行固件升級:

       //申請更新,創(chuàng)建工作隊列, 可以把工作推后,交由一個內(nèi)核線程去執(zhí)行,因為固 
        件升級比較耗時。
         ts->himax_update_wq = create_singlethread_workqueue("HMX_update_reuqest");
      //準(zhǔn)備更新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) 
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容