




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
調(diào)試信息的使用方 查看驅(qū)動是否加載成 I2C通信是否成 是否有中 讀取數(shù)據(jù)分 CTP使用配 sys_config.fex配 驅(qū)動的加 IDC文 gslX680使用說 gt系列驅(qū)動介 增加新tp參數(shù)的步 增加新tp參數(shù)的例 ft5x系列使用說 ft5x02系列使用說 ft5x06系列使用說 性能測 可靠性測 現(xiàn)象分 用與測試作簡要的講解,為達到能快速移植驅(qū)動與使用CTP的目的。徑以及模塊的相關(guān)配置。第三章主要講解CTP中平臺相關(guān)接口以及硬件資源的申請。第四章對驅(qū)動移植中為適應(yīng)平臺需要修改的地方進行說明。第五章主要講解CTP的調(diào)CTPCTPCTPCTPINPUTCTPINPUT應(yīng)符合相關(guān)通信接口的設(shè)計規(guī)范。目前使用的CTP均為使用i2c通信接口。1CTPI2CLinuxInput子系統(tǒng)中CTPDriver提供對硬件各寄存器的讀寫訪問和將底層硬件對用戶輸入訪問的響應(yīng)轉(zhuǎn)CTPDriver的編程接口,對上又提供了事件處理層的編程接口;而事件處理層(inputCTPHOST的連接主要有6pinVCCGNDINTSerialSerial2ctp、CTP配置文件sys_config.fex中關(guān)于CTP的配置項如下: = = = = = = = = =port:PB13<1><default><default><1>I2C設(shè)備地址(7位地址 touchpanel、ctp
=== ctp_list_parasw_device.cctps的名稱后面寫1表示添加到自動檢測掃描列表,寫0表示剔除自動檢測掃描列表。makeARmakeARCH=armDeviceDeviceDrivers\Inputdevicesupport\Touchscreensctp是編譯為模塊、編譯進內(nèi)核、不編譯。為了便于配置以及更換設(shè)備,ctp3DeviceDrivers4Inputdevicesupport5sw_touchscreens6gslX680設(shè)設(shè) 輸腳 化始7ctpinputsys_config.fex文件中的配置信息,申請使用的驅(qū)動中(CTPdriver)根據(jù)第四章中驅(qū)動的移植進行相關(guān)函數(shù)的修改即可完成驅(qū)動的CTP驅(qū)動初始化的接口以及關(guān)鍵數(shù)據(jù)結(jié)構(gòu),在第四章中將詳細介紹CTP驅(qū)動移植的步驟。驅(qū)動的移植中主要需要關(guān)注點為如何獲取sys_config.fex中的配置信息,中斷的申請,detect函數(shù),suspendresumeft5x系列驅(qū)動移植過程為例進staticstaticinlinevoidinput_report_abs(structinput_dev*dev,unsignedintcode,intvaluestaticstaticinlinevoidinput_sync(structinput_dev*dev、、、I2C核心的i2c_add_driver()函數(shù)添加i2c_driver使用到的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)為 、#include#include<linux/init-這個頭文件中包含使用的structctp_config_infosysconfig.fex的相可查閱文檔“A20平臺input初始化文檔.doc”用的wakeup引腳,irq引腳等。數(shù)據(jù)結(jié)構(gòu)的定義如下:structstructctpconfigenuminput_sensor_type ctp_used;//是否使用ctp,當該變量為0時,則結(jié)束初始化過程 revert_x_flag;//X軸反轉(zhuǎn)標志 revert_y_flag;//Y軸反轉(zhuǎn)標志 #ifdefmodule_para_name存取sys_config.fexIRQGPIO引腳號,從config_info XYXXYY軸反置時使用,用于數(shù)據(jù)X,Ysw_gpio_irq_request的返回i2c_driverChipIDdetect函數(shù)中使用硬件檢測I2CKconfigMakefileKconfigMakefile文件,使得能configconfigSWTOUCHSCREENFT5X defaultmdependsonINPUT&&I2Cft5xtouchscreenobj-$(CONFIGobj-$(CONFIGSWTOUCHSCREENFT5Xft5x_ts-objs:=ft5x02_config.oini.o+=ft5x為一個KO文件,注意格式的寫法。KconfigconfigSW_TOUCHSCREEN_FT5X_TSMakefileCONFIG_后SW_TOUCHSCREEN_FT5X_TS名稱必須相同。一般情況下以模組的名稱命名,便makemakeARCH=arm進入目錄DeviceDrivers\Inputdevicesupport\Touchscreens目錄下查看是否存在添加I2C地址以固定的形式存在于設(shè)備驅(qū)動中。存放設(shè)備地址的數(shù)組必須以I2C_CLIENT_END標致結(jié)束。如下所示staticconstunsignedshortnormal_i2c[2]= detectIC的chipID號或者是檢測I2CchipIDI2C通信不成功時,將返回失敗,staticstaticintctpdetect(structi2cclient*client,structi2cboardinfo{structstructi2cadapter*adapter=client-intret=0,i=if(!i2ccheckfunctionality(adapter,I2CFUNCSMBUSBYTEDATA))return-ENODEV;if(twiid==adapter-ret=i2csmbusreadbytedata(client,0xA3);if(ret==-70){ret=i2csmbusreadbyte}dprintk(DEBUGINIT,"addr:0x%x,chipidvalue:0x%x\n",client->addr,ret);while(chipidvalue[i++]){if(ret==chipidvalue[i-strlcpy(info->type,CTPNAME,I2CNAMEchipid=return}}printk("%s:I2Cconnectionmightbesomethingwrong!\n", return-ENODEV;return-}}I2CgslX680.cctp_detect函數(shù)為例,i2c_test函數(shù)存放在init-input.c中。如下:staticstaticintctp_detect(structi2c_client*client,structi2c_board_info{{structi2cadapter*adapter=client->adapter;intret;if(!i2ccheckfunctionality(adapter,I2CFUNCSMBUSBYTEreturn-if(twiid==adapter-dprintk(DEBUGINIT,"%s:addr=%x\n",ret=i2ctest(client);printk("%s:I2Cconnectionmightbesomethingwrong\n", return-ENODEV;strlcpy(info->type,CTPNAME,I2CNAMEreturn}return-}}staticstaticintctpdetect(structi2cclient*client,structi2cboardinfo{structi2cadapter*adapter=client->adapter;if(twiid==adapter->nr){dprintk(DEBUGINIT,"%s:addr= strlcpy(info->type,CTP_NAME,returnreturnreturn-}}staticstaticintctpgetsystem{twiid=configinfo.twiscreenmaxx=configinfo.screenmaxx;screenmaxy=configinfo.screenmaxy;revertxflag=configinfo.revertxflag;revertyflag=configinfo.revertyflag;exchangexyflag=configinfo.exchangexyflag;if((twiid==0)||(screenmaxx==0)||(screenmaxy0)){printk("%s:readconfigerror!\n", func);return0;}return}u32sw_gpio_irq_request(u32gpio,enumgpio_eint_trigtypepeint_handlehandle,void功能:gpio中斷 gpio編號. 觸發(fā)類型Handle:中斷回調(diào)函數(shù).gpio中斷觸發(fā)時回調(diào) handle的參數(shù).必須為全局,或者在堆中,不能為棧中的局部變量.返回值:成功返回句柄,失敗返回0.linuxrequest_irq,并傳入IRQF_SHAREDu32sw_gpio_irq_free(u32handle)功能:gpio中斷.sw_gpio_irq_request對應(yīng) 返回值:成功返回0,失敗返回錯誤行號....gpio中斷句柄.sw_gpio_irq_request返回的句柄gpio的訪問權(quán).}}{{}superstandbySuspendearlysuspendsuspend,resumelateresumeresume。EarlysuspendlateresumeCONFIG_HAS_EARLYSUSPEND使用;suspendresumei2c_driver結(jié)構(gòu)體中。以上四個函數(shù)的接口的關(guān)系要處理好,否則可能導(dǎo)致無法喚醒等意外情況發(fā)生。在suspend與earlysuspend函數(shù)earlysusupendlaterresumeearlysuspend函數(shù)中,做了停lateresume函數(shù)中就需要做相對應(yīng)的恢復(fù)工作。Suspendresume函數(shù)當sys_config.fex中standby_mode1時表示支持superstandbysuperstandbyAVCCDRAM_VCC電源以外的所有電源;這樣的操作有可能改變模塊superstandbysuspendresume函數(shù)需要做相應(yīng)的superstandbysuperstandby時,機器喚醒之后會出現(xiàn)觸摸失效的、包含頭文件、判斷standby類型,并進行相應(yīng)處理;內(nèi)核導(dǎo)出了兩個符號:standby_type,standby_level以利于各模塊:根據(jù)目標區(qū)分normalstandby和superstandby。根據(jù)掉standby_type:NORMAL_STANDBY,SUPER_STANDBY;standby_level: normastandbysuperstandby進行區(qū)分。在掉電的情況下,有的設(shè)備需要重新寫配置參數(shù)的,需要進行相應(yīng)的區(qū)分,以保證能快速的喚醒,且在休眠設(shè)備掉電后,重新喚醒時,設(shè)備也能正常穩(wěn)定的使用。snd。如下所示:staticstatic initft5xts{))){//printk("%s:ctpfetchsysconfigparareturn}}elseif(0!=ret)printk("%s:ctpops.initplatformresourceerr. }}if(configinfo.ctpused==printk("***ctpusedsetto0printk("***ifusectp,pleaseputthesysconfig.fexctpusedsetto1.\n");return0;}if(!ctpgetsystemprintk("%s:readconfig return}ctpwakeup(configinfo.wakeupnumber,0,10);ft5xtsdriver.detect=ctpdetect;ret=i2cadddriver(&ft5xts}staticstatic exitft5xts{printk("==ft5xtsexit==\n");i2cdeldriver(&ft5xtsdriver);classdestroy(i2cdevclass);unregisterchrdev(I2CMAJOR,"awi2cinputfreeplatformresource(&(configinfo.input}probeinit函數(shù)中申請的資源,要依照申請的順序進行釋i2c_set_clientdata(client,NULL);函數(shù)。否則驅(qū)動自己I2CgsensorI2C通訊不成ctp_wakeupinit-input.cctpwakeup引腳的輸出電intintctp_wakeup(u32gpio,intstatus,intgpio:wakeup引腳的gpio編號,存在于structctp_config_info結(jié)構(gòu)體的變量wakeup_number置為ms后,在將其設(shè)置為“-ms”。ctp_wakeup(config_info.wakeup_numberctp_wakeup(config_info.wakeup_number0,10);//將wakeup引腳輸出低10ms之后輸出高。ctp_wakeup(config_info.wakeup_number1,20);//將wakeup引腳輸出高20ms之后輸出低。ctp_wakeup(config_info.wakeup_number,0,0);//將wakeup引腳輸出低。ctp_wakeup(config_info.wakeup_number,1,0);//將wakeup引腳輸出高。3Init如下所示,默認情況下,將DEBUG_INIT的打印信息打開:情況。因此設(shè)備驅(qū)動中的init,probe函數(shù)中的打印信息還是使用printk進行輸出。不但加快了模塊的加載時間,同時還能按照上電時序進行相對應(yīng)的操作,何樂而不為以下以gslX680.c中的優(yōu)化進行相關(guān)的說明。隊列的定義如下所示:}}}(1)adbshell界面,使用命令:adbshell#號后面的為命令,然后鍵入回鍵即可。echo命令中,“>完成??梢酝ㄟ^adb工具進行查看,一些簡單的adb的命令如下所示:adbadb 登錄設(shè)備的adbpushxx.ko 將觸摸驅(qū)動通過adb工具pushcd/system/vendor/modules進入KO文件目錄 *.ko查看機器中已經(jīng)有了那些驅(qū)動lsmod查看系統(tǒng)中已經(jīng)加載了那些模塊rmmod**卸載驅(qū)動(注:不用加后綴)insmod**.ko加載驅(qū)動getevent查看系統(tǒng)中已經(jīng)注冊了那些input(查看不能正常加載的原因,一般情況下驅(qū)動加載不成功的原因有:一是讀取的sys_config1.fex文件中的配置信息與加載的驅(qū)動不匹配,二是probe函數(shù)遇到某些錯誤沒能正確的完成probe的時候返回,三是驅(qū)動與所使用的固件不匹配。detectchipID值,以及檢測通信是否成功的方式,STARTSTART Sendout
I2C(2)、sys_config1.fex中的中斷引腳與驅(qū)動中的中斷引腳是否匹配。將讀取到的數(shù)據(jù)包都打印出來,根據(jù)觸摸IC的正確性,如果讀取的數(shù)據(jù)包不正確,首先檢查驅(qū)動中設(shè)置的中斷觸發(fā)條件與觸摸CTPwakeup引腳號、設(shè)備地址、CTPtp的默認值為0。ctp_name的妙用:ctp_nametptp參數(shù),目前使用的為gslX系列以及gt82x系列。原值為1則將其設(shè)置為0。原值為1則將其設(shè)置為0。xyctp_exchange_x_y_flag01;若ctp_exchange_x_y_flag原值為1則將其設(shè)置為0。#insmodtpinsmod/system/vendor/modules#insmodtpinsmod/system/vendor/modules/ft5x_ts若使用自動檢測功能時,不需要增加該語句,只需要在該文件中增加:/vendor/modules/sw_device.ko自動檢測驅(qū)動,同時sysconfig.fex文件中需要增加“sunxi-ts”,“gt818_ts”,“gt811”,“gt9xx”,“sw-ts”,“zet622x”時,使用的idctp.idcidc文件放置的目錄為:system/usr/idcwing_xx.mk拷貝PRODUCT_COPY_FILESPRODUCT_COPY_FILES+=.kladbshellgetevent命令得到的設(shè)備名稱與以上的不符合,則需要增加該名稱idcgeteventctp_name,如下:idcctp_name.idcwing_xx.mk拷貝語句如gslX680驅(qū)動兼容gsl1680,gsl2680,gsl3680。為了區(qū)分下載的參數(shù),在sys_config.fexctp_name進行區(qū)別,目前,gslX680系列sysconfig.fex中的參數(shù)如下所示:[ctppara]ctp[ctppara]ctpusedctptwiidctpctpscreenmax=====tpgsl1680.h、驅(qū)動中的增加相關(guān)的頭文件以及gslx680_fw_grp數(shù)組中增加相對應(yīng)的描述信息#include#include"gsl1680.h" #include"gsl1680#include#include"gsl1680.h" #include"gsl16801.h" #include"gsl16802.h" #include"gsl2680.h" #include"gsl3680.h" #include"gsl16803.h" structgslX680fwarray{unsignedintconststructfwdata}gslx680fwgrp[]={"gsl1680{"gsl1680ARRAYSIZE(GSL1680GSL1680ARRAYSIZE(GSL1680FW1),GSL1680FWARRAYSIZE(GSL1680FW2),GSL1680FW2},ARRAYSIZE(GSL2680 GSL2680ARRAYSIZE(GSL3680 GSL3680[ctppara]ctp[ctppara]ctpusedctptwiidctpctpscreenmax==="gsl1680==gt系列的產(chǎn)品在驅(qū)動端初始化時需要根據(jù)具體的tp屏下載相應(yīng)的參數(shù)之后才可以正gt系列的驅(qū)動包括(gt811,gt82x,gt9xx)tp面板,多種分辨率,目前擇。如果驅(qū)動中沒有找到相對應(yīng)的匹配名字,將使用第0組參數(shù)。gt9xx對應(yīng)的頭文件:lichee\linux-以及數(shù)據(jù)數(shù)組名稱等信息。xxx_cfg_grp中的xxx分別為gt82x,gt9xx,gt811。名稱,即xxx_cfg_grp中定義的名稱。ctp_get_system_configsysconfig.fexctp_name,通過獲得的名稱查找gt82x_cfg_grp中是否有相匹配的名稱。goodix_init_panel函數(shù)中通過找到的index下載相對應(yīng)的參數(shù),如果找不到匹配的名稱將返回直接返回0,即下載第0組。為114個數(shù)據(jù),注意,前兩個數(shù)據(jù)(0x0F、0x80)為寄存器地址,不要變動。structstructgt82xcfg{const unsigned uint8 *config}gt82xcfggrp[]={"gt813 ARRAYSIZE(gt813 gt813{"gt813ARRAYSIZE(gt813ARRAYgt813[ctppara]ctp[ctppara]ctpusedctptwiidctpctpscreenmax==="gt813==ft5x06系列使用時不需要下載參數(shù)。當需要下載固件時,可以打開驅(qū)動的將造成tp無法正常使用的情況。TP的使用中,主要關(guān)注點以及影響用戶體驗點均為性能與穩(wěn)定性,性能主要關(guān)注使用工具:DevToo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 沉箱碼頭施工方案
- 室內(nèi)電纜敷設(shè)施工方案
- 2025年東師復(fù)試化學(xué)試題及答案
- 2025年高職數(shù)據(jù)庫試題及答案
- 5年級下冊英語第1第2單元單詞跟讀
- 5年級上冊第5單元摘抄
- 燈泡溫度與電阻的關(guān)系式
- 地下車庫 行政復(fù)議申請
- 機械合同的施工方案
- 2025年合肥信息技術(shù)職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫學(xué)生專用
- 少兒財商教育講座課件
- 醫(yī)院醫(yī)用耗材SPD服務(wù)項目投標方案
- 2025年保密知識試題庫附參考答案(精練)
- 全國普通高等學(xué)校2025屆高三第二次調(diào)研數(shù)學(xué)試卷含解析
- 南昌起義模板
- “互聯(lián)網(wǎng)+”大學(xué)生創(chuàng)新創(chuàng)業(yè)大賽計劃書一等獎
- 2024年10月高等教育自學(xué)考試13015計算機系統(tǒng)原理試題及答案
- GB/T 3324-2024木家具通用技術(shù)條件
- 2024秋期國家開放大學(xué)本科《古代小說戲曲專題》一平臺在線形考(形考任務(wù)4)試題及答案
- 血吸蟲病知識宣傳講座
- 詩經(jīng)的課件教學(xué)課件
評論
0/150
提交評論