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

相关文章

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局