Android手机指纹驱动工作原理
来源:互联网 发布:php 判断不为小数 编辑:程序博客网 时间:2024/05/02 13:48
Question:
为什么指纹支付要将驱动放在TZ里?
Answer:
需要支付功能的放TZ侧,不需要支付功能的放AP侧。
TZ有自己的一个受保护的专用的内存区域, 这个专用的内存区域是需要特殊的权限的。
Question:
比方如下,我通过设置已经在手机里录制了很多个指纹,现在我用大拇指按在传感器上来解锁或者支付,这个过程是如何的呢?
Answer:
1. 手机存储的是指纹特征数据,不是存储在指纹IC中,而是存在SoC侧的eMMC/UFS中;
2. 存储的数据加密并由TZ管理, 所以就算Linux(Android)侧拿到也无法解密及使用;
3. 比对过程大致如下:TZ通过SPI从指纹IC采集到指纹(在此是点阵数据,也就是图像),然后在TZ里调用指纹比对库的比对函数,在此函数中有几个重要参数,
a. 指纹模板的指针
b. 指纹模板数
c. 需要比对的指纹图像Buffer指针
比对函数会把匹配度最佳的指纹模板序号及匹配百分比返回,由调用函数来判定是否算比对上了,详细的比对过程见下面描述;
4. 所以存在多个模板时,可以只调用一次,或者for(...)调用,取决你调用者,多数实现一般是调用一次。
5. 由于在此过程中SPI通信是瓶颈,快速比对(Quick Match)是先取图的1/4,你可以理解为取Thumbnail类似,然后送去比对,如果结果无法判决,则取回全图,继续比对。
详细的比对过程如下所述:
Android 从 MNC 6.0 开始提供了一部分框架,一般的厂商可以follow Google的Framework, 实现必要的函数,最终的形式就是一个.so文件,由Google Fingerprint framework load 并执行。
一个指纹模板一般100~300K,所以就算10个,也就3M左右的RAM就可以了。对于现在动不动几个G RAM的手机来讲并不是很负担。
Android 发比对请求-->TZ下SPI数据,等手指压下中断-->返回Android侧运行
手指按下中断到达(Android侧)-->调用TZ侧比对流程函数(通过SPI读图-->图像预处理-->调用算法库比对)-->比对结果返回Android。
如果比对正确,Android侧就会解锁或其它操作,否则一般会震动一下,表示失败了;没有震动的话,说明认为没有手指或手指快速离开了,所以没取到数据。
开销比较大的部分是系统调用,即从Android--> 调Linux Driver --> 调smc进入TZ-->执行-->返回。
- Android手机指纹驱动工作原理
- 手机工作原理(转)
- 手机工作原理(转)
- 手机摄像头工作原理
- 手机电源工作原理
- 中间层驱动工作原理
- 中间层驱动工作原理
- Linux驱动工作原理
- 中间层驱动工作原理
- IOS Android 手机助手原理以及源码(Android 手机自动识别 三<手机驱动安装>)
- Android手机指纹因为因模板结构破损总结
- android 指纹
- Android指纹
- 手机的软件工作原理
- 金山手机毒霸工作原理
- 金山手机毒霸工作原理
- 金山手机毒霸工作原理
- 金山手机毒霸工作原理
- 程序员如何做到『编程速度又快,Bug 数量又少』?
- 微信内H5唤醒本地安装应用终于有解决方案了
- zabbix 企业级网络监控解决方案
- 虚拟桌面更新,自定义快捷键
- 底部弹窗
- Android手机指纹驱动工作原理
- Java SpringMVC项目导入excel2003以及2007多版本自动识别对应工具类(util)
- chrome广告过滤器插件-Adblock Plus
- Word2vec 使用总结
- 第一章:git新手初上路
- 我认识的数据挖掘
- 微信公众号开发,分享功能,java,spring mvc
- sublime高分屏下侧边栏中文乱码解决
- C++学习笔记14: 抽象基类