Android Fingerprint 通过提高CPU主频及绑定大核提高 Android 手机指纹识别性能

本文主要是介绍Android Fingerprint 通过提高CPU主频及绑定大核提高 Android 手机指纹识别性能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通过提高CPU主频及绑定大核提高 Android 手机指纹识别性能

背景

各大厂商追求手机指纹解锁以及识别快速流畅性,提升用户体验。对指纹解锁提出给快的要求,因此想办法从三个角度优化指纹识别的速度,提升手机解锁以及是指纹识别流畅性。以自己的经验做个marker。

一,提高指纹通讯速率

目前部分指纹解锁速率最高可达24MHz/s, 单提高spi 速率可能会导致通信失败,会展传输数据校验失败,需要配置指纹于主控CPU SPI设置相关。

关于高通平台对部分指纹IC的SPI通讯会造成数据移位的问题,需要对高通平台的

 ../core/settings/buses/spi/qupv3/config/s6150/tz/spi_devcfg.c 

文件中miso_sampling_ctrl_set 进行设定。对于AndroidO qsee4.5 来说直接改为TURE就好了。对于AndroidP或者Q qsee5.0 来说这个直有0~7共8个值,需要逐一验证。

二,绑定大核

现在的CPU的大部分是多核,手机CPU一般是8核,有海思的2+2+4的形式(4个大核+4个小核),也有高通1+3+4或者4+4(4个大核+4个小核))的形式,还有联发科2+6的形式存在(6个大核+2个小核), 一般来讲,大核的主频会比小核的主频会高一点。
相同主频情况下,绑定大核的进程执行会相比没有绑定大核运行更快。

绑定大核的方法:各个平台的绑定大核方法由各大平台商或者TEE供应商提供。下面以AndroidQ MT6785 豆荚sdk_300为例:
豆荚绑定大核的方法是找到teei_client_main.c 定义好如下两个宏编译后验证OK,示例如下:

  alps/kernel-4.14/drivers/misc/mediatek/teei/300/tz_driver/teei_client_main.c#define TEEI_SWITCH_BIG_CORE#define TZ_PREFER_BIND_CORE (7)

确认当前TEE绑定的CPU:

  adb shell cat sys/bus/platform/devices/utos/current_bind_cpu

下面面执行的结果位为豆荚TEE绑定在核6上面,二而6又是MT6785的一个大核,这样说明绑定大核成功。
上面执行的结果位为豆荚TEE绑定在核6上面,二而6又是MT6785的一个大核,这样说明绑定大核成功。

部分平台CPU大小核以及主频
表1,部分平台CPU大小核以及主频

三,提高CPU主频

CPU主频一般不会达到最高主频运行,因此在在执行指纹识别相关操作之前可以用平台相关设置函数,将主频设定成改cpu最高主频。这样会提高代码运算速度。
提频的方法待续。

确认指定cpu当前的工作频率:

adb shell cat    sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freqC:\Users\11599>adb shell cat    sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
774000
C:\Users\11599>adb shell cat    sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_cur_freq
500000
C:\Users\11599>adb shell cat    sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_cur_freq
500000
C:\Users\11599>adb shell cat sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_cur_freq
500000
C:\Users\11599>adb shell cat    sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_cur_freq
500000
C:\Users\11599>adb shell cat    sys/devices/system/cpu/cpu5/cpufreq/cpuinfo_cur_freq
500000
C:\Users\11599>adb shell cat    sys/devices/system/cpu/cpu6/cpufreq/cpuinfo_cur_freq
774000
C:\Users\11599>adb shell cat sys/devices/system/cpu/cpu7/cpufreq/cpuinfo_cur_freq
774000

确认指定cpu的最高工作频率,与上面的当前工作频率比较,是否工作在最高主频:

adb shell cat    sys/devices/system/cpu/cpu7/cpufreq/cpuinfo_max_freqC:\Users\11599>adb shell cat    sys/devices/system/cpu/cpu7/cpufreq/cpuinfo_max_freq
2050000
C:\Users\11599>adb shell cat    sys/devices/system/cpu/cpu6/cpufreq/cpuinfo_max_freq
2050000
C:\Users\11599>adb shell cat    sys/devices/system/cpu/cpu5/cpufreq/cpuinfo_max_freq
2000000
C:\Users\11599>adb shell cat    sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
2000000

这篇关于Android Fingerprint 通过提高CPU主频及绑定大核提高 Android 手机指纹识别性能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/275917

相关文章

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

如何提高Redis服务器的最大打开文件数限制

《如何提高Redis服务器的最大打开文件数限制》文章讨论了如何提高Redis服务器的最大打开文件数限制,以支持高并发服务,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录如何提高Redis服务器的最大打开文件数限制问题诊断解决步骤1. 修改系统级别的限制2. 为Redis进程特别设置限制

正则表达式高级应用与性能优化记录

《正则表达式高级应用与性能优化记录》本文介绍了正则表达式的高级应用和性能优化技巧,包括文本拆分、合并、XML/HTML解析、数据分析、以及性能优化方法,通过这些技巧,可以更高效地利用正则表达式进行复杂... 目录第6章:正则表达式的高级应用6.1 模式匹配与文本处理6.1.1 文本拆分6.1.2 文本合并6

使用Python检查CPU型号并弹出警告信息

《使用Python检查CPU型号并弹出警告信息》本教程将指导你如何编写一个Python程序,该程序能够在启动时检查计算机的CPU型号,如果检测到CPU型号包含“I3”,则会弹出一个警告窗口,感兴趣的小... 目录教程目标方法一所需库步骤一:安装所需库步骤二:编写python程序步骤三:运行程序注意事项方法二

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义