高通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平台指纹移植的主要内容,如果未能解决你的问题,请参考以下文章