高通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

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值