Qualcomm平台下基于QSEE的指纹识别方案移植之五多厂商兼容方案

本文探讨了在Qualcomm平台上基于QSEE的指纹识别方案移植中,如何实现对不同指纹模组厂商的兼容。介绍了两种方法:1) 通过驱动读取指纹ID创建设备结点,但该方法受限于某些TEE不支持SPI操作;2) 驱动仅创建设备结点,由fingerprintd轮询加载厂商库,通过CA配置GPIO和读取ID,适用于所有TEE。针对Android的不同版本,文章指出了需要修改的源文件路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、为什么要兼容?

    通常在一款手机一个项目上用的物料,为了降低风险,很少是由一家独供的,通常会有二供、三供。拿指纹来说,一般都会有多家指纹厂商调试。为了 方便和减少出错,都会要求调试完之后,烧录同一个镜像,换上不同厂商的指纹模组后,指纹都能够正常使用,也就是说软件上面要兼容不同厂商的指纹。

    下面贴一张指纹TEE方案的框架图:

   可以看出指纹厂商提供的是:CA TA Driver 指纹模组。

   兼容就是说换上不同的指纹模组 Fingerprint Hardware,FingerprintD 要能够调用到对应的厂商的提供的 CA, 从而使指纹正常工作。

二、兼容方法

2.1 方法1

在驱动读取指纹ID,读到指纹ID就创建设备结点,注册中断等;读取不到ID就不创建设备结点。

这种方法需要在驱动读取ID,也就是说在驱动也操作SPI。一般来说,SPI是由TA操作的,不能在驱动中进行spi 读写。

有的TEE厂商(比如豆荚、瓶砵),通过配置SPI,提供spi读写的接口,可以实现在LK阶段就读取指纹ID。但并不是所有的TEE都可以在驱动操作SPI的。所以这种方法并不是通用的。

通过这种方法做的兼容还需要修改hardware 下的文件:hardware/libhardware/hardware.c

#include <hardware/hardware.h>

#include <cutils/properties.h>

#include <dlfcn.h>
#include <string.h>
#include <pthread.h>
#include <errno.h>
#include <limits.h>

//第一步:添加一个头文件
#include <fcntl.h>  


//第二步:修改 hw_module_exists 函数
/*
 * Check if a HAL with given name and subname exists, if so return 0, otherwise
 * otherwise return negative.  On success path will contain the path to the HAL.
 */
 /*去对应的路径找相应的库 hw_module_exists()就是找库的接口。
 access() 是测试该路径下的该库,是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值