指纹调试 mtk android8.1

3 篇文章 0 订阅
2 篇文章 0 订阅

一 指纹调试思路,总纲

二 硬件原理图

   

三 如何确认是否移植好finger驱动?

      a)probe函数调试的初始化是否成功,打印信息确认

      b)查看设备节点是否生成

 /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初始化要确保调用成功,如下

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自发自收通信是否成功,

     SPI自发自收平台测试如下,

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通信测试的小程序,后续整理后会持续更新。

          若读取异常可以判断此时 SPI 不通,可以按照如下步骤去排查:
          1. 确认模组的供电是否正常;
          2. 检查 SPI 的电平时序是否正常:
          3. 檢測miso mosi是否接反,可以用邏輯分析儀確認;
          4. 确认指纹单模组是否正常;

     d)确认finger interrupt中断是否注册成功

         cat proc/interrupts

         

中断设备节点绑定

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注册函数,绑定的设备名是否成功等

                    2)硬件排查,用示波器等实测是否有模组硬件中断

四 so库合成与验证

      1)Android M/N 系统重启 fingerprintd 进程,Android O 以上 系统重启 android.hardware.biometrics.fingerprint@2.1-service 进程,可以在平台code里面直接关闭selinux权限(比手动验证更保险),也可以手动关闭setenforce 0,然后参考文档把so库push到对应的路径,验证指纹是否能正常启动,正常录取指纹。
 

 

 

2)手动验证ok,那接下来的就是so库的移植,以及selinux权限的问题。

参考资源链接:[MTK指纹驱动移植与调试指南](https://wenku.csdn.net/doc/1xvtj4egjz?utm_source=wenku_answer2doc_content) 在MTK平台上移植指纹驱动是一项涉及到REE和TEE环境的技术挑战。为了确保指纹驱动在不同环境下的兼容性和稳定性,开发者需要遵循一系列细致的步骤,而这正是《MTK指纹驱动移植与调试指南》所详细阐述的。 首先,开发者需要理解REE和TEE的概念及其在指纹识别过程中的作用。REE负责常规的操作系统执行环境,而TEE提供了更高的安全执行环境,它们共同确保指纹数据的安全性和准确性。接着,配置设备树是关键的第一步,它涉及到添加或修改设备树节点,以确保指纹驱动与硬件的正确通信。 在驱动移植过程中,开发者需要关注源码适配和编译环境的设置。这包括对驱动代码的必要调整,以及在客户项目源码中编译HAL/CA/TA,确保这些组件能够集成到目标系统中。例如,修改device.mk文件和集成vendor文件夹是确保指纹驱动支持的关键步骤。 安全层面上,调整Selinux策略以授予指纹服务合适的权限是非常重要的。这部分工作需要开发者对Selinux的权限管理有深入的理解,并能够正确修改安全上下文,以避免权限冲突和安全风险。 完成上述步骤后,通过adb push库文件与apk到手机是进行调试准备的关键一步。利用提供的调试方法和日志关键字,开发者可以远程调试并监控指纹驱动的行为,从而快速定位并解决问题。 最后,为了全面测试指纹驱动的功能,使用FactoryTest整机测试APK进行质量检查是必不可少的。此外,考虑到多指纹兼容方案和用户界面提示语的修改,可以提升产品的用户体验和市场竞争力。 综上所述,指纹驱动的移植和调试不仅需要对MTK平台有深刻的理解,还需要对Android系统的REE和TEE环境有着全面的掌握。对于希望在MTK平台上进行指纹驱动开发的工程师来说,《MTK指纹驱动移植与调试指南》是一份不可或缺的参考资料。 参考资源链接:[MTK指纹驱动移植与调试指南](https://wenku.csdn.net/doc/1xvtj4egjz?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值