本文总结了高通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平台指纹移植相关推荐

  1. 高通SM4350平台指纹移植流程

    本文总结了高通sm4350平台指纹移植流程,厂家一般会提供移植文档,本文档可作为补充: 准备工作: 1.把指纹模组扣到主板上的SPI连接器上 2.高通sm4350平台,Android R版本全代码,全 ...

  2. 高通Android平台硬件调试之Camera篇

    之前一段时间有幸在高通android平台上调试2款camera sensor,一款是OV的5M YUV sensor,支持jpeg out,同时也支持AF,调试比较比较简单,因为别的项目已经在使用了, ...

  3. android_驱动_qcom_【高通SDM660平台】(1) ---Bringup Guide

    [高通SDM660平台]Camera 驱动 Bringup Guide 一.Kernel 代码移植 1. DTS 文件配置 1.1 sdm660.dtsi 1.2 sdm660-camera.dtsi ...

  4. 【高通SDM660平台】(1) --- Camera 驱动 Bringup Guide

    [高通SDM660平台]Camera 驱动 Bringup Guide 一.Kernel 代码移植 1. DTS 文件配置 1.1 sdm660.dtsi 1.2 sdm660-camera.dtsi ...

  5. Linux加载DTS设备节点的过程(以高通8974平台为例)

    DTS是Device Tree Source的缩写,用来描述设备的硬件细节.在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码, ...

  6. 高通Android平台下关于display部分的几个关键问题

    高通Android平台下关于display部分的几个关键问题 2011-04-07 18:59 From: http://hi.baidu.com/leowenj/blog/item/3fe59f74 ...

  7. 【高通SDM660平台 Android 10.0】(13) --- Camera ISP 之 数字成像系统介绍

    [高通SDM660平台 Android 10.0] --- Camera ISP 之 数字成像系统介绍 一.成像系统的组成 1.1 视角 1.2 曝光 1.3 感光度 ISO 1.4 光源 1.5 光 ...

  8. 【高通SDM660平台 Android 10.0】(14) --- Camera ISP

    [高通SDM660平台 Android 10.0]--- Camera ISP 一.Camera ISP 与 DSP 区别 1.1 名词解释 1.2 功能解释 1.3 手机摄像头ISP是独立好还是内置 ...

  9. 高通7x27a平台UART配置

    高通7x27a平台使用uart1作为debug的配置 高通7x27a平台一共有5个UART PORT: Port 对应的GPIO 描述 UART1 122+123 Can used for debug ...

最新文章

  1. 【连载】【黑金动力社区原创力作】《液晶驱动与GUI 基础教程》 --序言(一)
  2. 数据库中case when condition then else end的理解
  3. react中规范类型接口的使用
  4. nltk和python的关系_NLTK学习笔记(一):语言处理和Python
  5. threadgroup_Java ThreadGroup list()方法与示例
  6. 章方:征服耶鲁教授的算法大神程序媛
  7. 红橙Darren视频笔记 反射注解泛型简介
  8. c语言中结构体头文件是什么,函数形参里有结构体指针,为什么在头文件生
  9. 爬虫学习笔记(1)---简单的爬取百度贴吧
  10. cad常青藤插件_做CAD设计,别说你不知道,这些插件有多好用
  11. EHS法律法规的收集渠道
  12. 仿企查查、天眼查 d3关联关系图 力项导图
  13. VScode终端配置bash.git(默认),terminal.integrated.shell:windows路径查找不到前提下
  14. 网络空间技能大赛A模块(乱)
  15. IPhone越狱原理总结
  16. target=_blank的使用
  17. win7下如何使用turbo C2.0
  18. Python Pandas 根据一列或几列的值,对另一列赋值
  19. [题解]【提高】卫星照片
  20. 浅谈POJO:VO、DTO、DO、PO

热门文章

  1. HDU 6595 Everything Is Generated In Equal Probability (期望dp,线性推导)
  2. Centos7——将网卡修改为任意名称
  3. 中国膨润土市场消费状况与投资盈利预测报告(2022-2027年)
  4. Webplus网站群管理平台介绍
  5. 日志分析工具mysqldumpslow
  6. JQuery制作3D导航栏切换动画
  7. 对话框js插件源码汇总
  8. CPU的功能和基本结构
  9. 深度学习之图像分类(十九)-- Bottleneck Transformer(BoTNet)网络详解
  10. 云服务器配置网站卡顿,大型网游云服务器要多大配置才能解决卡顿等问题?