高通sm4350平台指纹移植

Posted bobuddy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高通sm4350平台指纹移植相关的知识,希望对你有一定的参考价值。

 本文总结了高通sm4350平台指纹移植流程,厂家一般会提供移植文档,本文档可作为补充:

准备工作:
1、把指纹模组扣到主板上的SPI连接器上

2、高通sm4350平台,android R版本全代码,全编通过

3、联系FAE获取指纹移植资料,主要包括:

   a, 驱动代码、DTS配置文件

   b, 指纹CA,一般是动态库,例如vendor.fingerprint.default.so

   c, 指纹TA相关,包括编译脚本(SConscript文件)、源码、算法库

   d, MMI测试apk及相关文件

   e, selinux规则

   f, 移植指导文档

  移植流程:
 

 一、驱动相关


1、根据硬件原理图,在dts文件中配置指纹相关的属性,主要包括:

     a, 指纹IC的供电(一般用regulator机制)

     b, spi四根信号线对应的gpio(高通平台是在TA中指定)

     c, 指纹IC的中断,复位对应的gpio

     示例如下:

          

 

2、将驱动代码放到kernel/msm-5.4/drivers/input/fingerprint/***/目录下

      高通源码没有fingerprint目录,需要自己创建,***为指纹IC厂商名字 

3、在init.rc中修改指纹节点文件的权限,例如:

     

 

4,在userdebug版本中, 驱动代码编译在boot.img中

     dts编译在dtbo.img中,可以单独替换这两个镜像进行调试

二、TEE相关

高通平台使用的TEE是自己的QSEE,QSEE加载指纹TA后,使用相关API通过SPI协议和指纹IC通信,移植过程包括:

1、在本地开发电脑上安装LLVM编译器和Lirano交叉编译工具链,并在以下文件中配置环境变量: vendor/qcom/nonhlos/TZ.XF.5.1/trustzone_images/build/ms/build_config_deploy.xml

2、按照厂家提供的移植文档将指纹TA代码放到trustzone_images对应目录

3、按照文档编译出目标文件(指纹TA),例如:

      trustzone_images/build/ms/bin/HACAANAA/fpta.mbn

     在调试阶段可以将trustzone_images/build/ms/bin/PIL_IMAGES/SPLITBINS_HACAANAA目录下的pta.b01~fpta.b07和fpta.mdt 8个文件push到手机中调试

4、调试完毕后将fpta.mbn文件上传到服务器对应位置,并在vendor/qcom/nonhlos/Mannar.LA.1.0.1/contents.xml文件添加语句:  

            

      之后编版本时会将该mbn文件打包到NON-HLOS.bin镜像中,最终刷入手机后被分解为上面8个文件,位于/vendor/firmware_mnt/image目录。

三:HAL相关:


        安卓原生已经有指纹相关的HIDL框架,位于以下目录: hardware/interfaces/biometrics/fingerprint/2.1/default

在BiometricsFingerprint.cpp中修改FINGERPRINT_HARDWARE_MODULE_ID宏定义为本次移植的指纹CA对应的MODULE ID,

例如本次移植的指纹CA名字是 vendor.fingerprint.default.so,那么就修改如下:

 #define FINGERPRINT_HARDWARE_MODULE_ID     "vendor.fingerprint"

        接下来将指纹CA push到手机vendor/lib64/hw/目录,手机重启后该动态库就会被指纹进程android.hardware.biometrics.fingerprint@2.1-service加载。

四:指纹MMI:
指纹MMI一般会进行如下项的检查:

        SPI测试

        Reset PIN测试

        坏点测试

        按压,抓图测试

   而原生的指纹HIDL并不支持上述操作,厂家往往自己定义HIDL,因此移植MMI时除了集成厂家的APK外还需要移植厂家自定义HIDL相关的bin文件和动态库,按照厂家移植文档操作即可。      

五:selinux规则


移植完毕后指纹模块运行会遇到很多selinux问题,可以先将selinux关闭,避免selinux问题影响指纹调试。

待指纹调试通过后,再打开selinux并逐步添加规则,方法如下:

1、kill指纹进程,该进程会重启并重新加载指纹CA,抓取此时的logcat

    2、将手机如下文件导出到本地开发电脑中:/sys/fs/selinux/policy

3、开发电脑中执行如下命令获取当前缺失的规则:

            audit2allow -i logcat.txt -p policy

4、将缺失的selinux规则添加到代码相应位置:

由于涉及到自定义HIDL,且调试不便(无法直接push规则),指纹selinux规则的添加往往耗费较多时间,有如下技巧:

1、不同平台selinux规则添加位置不同,可以参考其他模块添加的位置,sm4350是添加到该目录:device/qcom/sepolicy_vndr

2、根目录下通过mmm system/sepolicy/ 来验证添加的规则是否有错误

3、如果编译通过,可以在如下目录,查看是否有添加的规则:out/target/product/aoki/vendor/etc/selinux

例如新定义了类型“vendor_fp_device”,那么在此目录下应该会有新类型相关的规则:    

 

 六:移植完毕刷机后手机文件如下:

 

原文链接:https://blog.csdn.net/windofchange_/article/details/121100337

 

以上是关于高通sm4350平台指纹移植的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 完整例程86. 频率域滤波应用:指纹图像处理

3. mt6735 6.0 指纹移植

SM4350 启动流程及充电

SM7250(高通5G)平台LCD bringup

高通平台(Qualcomm) Android 10 user版本默认打开adb 调试小结

设备指纹也能检测业务风险?