指纹调试 mtk(MT6763)- android8.1
一 指紋調(diào)試思路,總綱
二 硬件原理圖
???
三 如何確認是否移植好finger驅(qū)動?
??????a)probe函數(shù)調(diào)試的初始化是否成功,打印信息確認
??????b)查看設備節(jié)點是否生成
? ? ? ? /dev/sunwave_fp
?????
? ? ?c)SPI通信是否成功,
???????????1)確認?pin腳初始化是否正確,是否被占用,cs,clk,rst,miso,mosi,eint等,android8.1對應的gpio路徑:
?????????????cat??/sys/bus/platform/drivers/mediatek-pinctrl/10005000.pinctrl/mt_gpio?????
????????2)檢查平臺的spi通道是否和硬件spi pin腳保持一致,spi-padmacro = <0>;
????spi0: spi@1100a000 {
????????compatible = "mediatek,mt6763-spi";
????????cell-index = <0>;
????????spi-padmacro = <0>;
????????dma_addrmask = <36>;
????????reg = <0 0x1100a000 0 0x1000>;
????????interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_LOW>;
????????clocks = <&infracfg_ao INFRACFG_AO_SPI0_CG>;
????????clock-names = "main";
????????clock-frequency = <109000000>;
????????clock-div = <1>;
????????};
??spi-padmacro設定參考平臺的table
code 匹配,spi初始化要確保調(diào)用成功,如下
static struct spi_board_info spi_board_devs[] __initdata = {
? ? [0] = {
? ? ? ? .modalias = "sunwave-fp",
? ? ? ? .bus_num = 0,
? ? ? ? .chip_select = 0,
? ? ? ? .mode = SPI_MODE_0,
? ? },
};
3) 首先讀取ic的chip id,與ic廠溝通,需要讀取哪些id 寄存器,在probe加入對應的打印信息,如果能夠正常讀取到, 說明 DTS 配置及 SPI通迅是正常的(中斷 PIN 暫時不能確定)。其次,也可以將miso mosi短接,測試SPI自發(fā)自收通信是否成功,
?????SPI自發(fā)自收平臺測試如下,
Control virtual spi device which register?on platform to send message with slave device.
adb shell
cd?/sys/bus/spi/drivers/test_spi/spix.1------x confirm?by?you Pin design.For example:Use SPI1_CLK_B?pin(MT6797),it is spi1.1.????
echo -w com_mod=1 > spi------------config dma mode(0----fifi mode,1----dma mode)
?echo -w len=8??> spi_msg-------send 8byte data,default date is 0x12345678.If use -w cmd,len value must multiple of four,for example:8,It will circulation send 0x12345678。
If pin miso and mosi is disconnect or connect but send fail,you will find next log.
If send success,you won't found.Then you can test hardware signal use oscilloscope.
通信失敗的參考log如下,
當然,也可以自己寫一些spi通信測試的小程序,后續(xù)整理后會持續(xù)更新。
??????????若讀取異常可以判斷此時 SPI 不通,可以按照如下步驟去排查:
??????????1. 確認模組的供電是否正常;
??????????2. 檢查 SPI 的電平時序是否正常:
??????????3. 檢測miso mosi是否接反,可以用邏輯分析儀確認;
??????????4. 確認指紋單模組是否正常;
?????d)確認finger interrupt中斷是否注冊成功
?????????cat proc/interrupts
?????????
中斷設備節(jié)點綁定
finger_irq_node = of_find_compatible_node(NULL, NULL, "mediatek,fingerprint-eint");// "mediatek,sunwave_fp"
?
ctl_dev->irq_num = irq_of_parse_and_map(finger_irq_node, 0);
???
?如果沒有 1)軟件排查,查看irq注冊函數(shù),綁定的設備名是否成功等
????????????????????2)硬件排查,用示波器等實測是否有模組硬件中斷
四 so庫合成與驗證
??????1)Android M/N 系統(tǒng)重啟 fingerprintd 進程,Android O 以上 系統(tǒng)重啟 android.hardware.biometrics.fingerprint@2.1-service 進程,可以在平臺code里面直接關閉selinux權限(比手動驗證更保險),也可以手動關閉setenforce 0,然后參考文檔把so庫push到對應的路徑,驗證指紋是否能正常啟動,正常錄取指紋。
?
?
2)手動驗證ok,那接下來的就是so庫的移植,以及selinux權限的問題。
?
總結
以上是生活随笔為你收集整理的指纹调试 mtk(MT6763)- android8.1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SVN Server修改端口与SVN修改
- 下一篇: oracle normal索引类型,Or