mtk指纹移植

1.      硬件连接

看原理图可知,指纹芯片有六个只要功能引脚,POWER, RST, MI, MO,CLK, EINT,再dws中将spi的四个引脚和中断脚配置好,mt6753只有一组spi即spi0,65-68脚。

2.软件代码

(1)    拿到代码后将代码放在alps\kernel-3.18\drivers\input\fingerprint文件夹,如果没有此文件夹,新建fingerprint,并解决编译中出现的各种错误

这里出现了几个错误,都是头文件引用找不到的问题,再makefile中将索要包含的头文件目录指定一下就可以解决

ccflags-y +=-I$(srctree)/drivers/spi/mediatek/$(MTK_PLATFORM)

ccflags-y +=-I$(srctree)/drivers/misc/mediatek/include

ccflags-y +=-I$(srctree)/drivers/misc/mediatek/include/mt-plat

ccflags-y+=-I$(srctree)/drivers/misc/mediatek/include/mt-plat/$(MTK_PLATFORM)/include

ccflags-y+=-I$(srctree)/drivers/misc/mediatek/mach/mt6735/magc6753_65u_1_m0/dct/dct/

ccflags-y += -I$(srctree)/drivers/spi/mediatek/mt6735/

ccflags-y += -DMT6735

其他头文件未包含错误,可通过搜索将函数所在的.h文件找到并在C文件中include

将驱动中的spi总线号写为0,否则无法加载spi驱动

(2)    将库文件替换alps\out\target\product\magc6753_65u_1_m0\system\lib64\hw\fingerprint.default.so

在.fc_spi.c中将char* uevent_env_str[2] = {"FC909_STATE=WAKEUP", NULL};

改为char* uevent_env_str[2] = {"FC909_STATE=WAKEUP", NULL};

因为库里面写的节点是jmt101,指纹模块启动后会通过库去度这个字段,匹配之后才能开始采集数据

(3)在alps\device\mediatek\mt6735\device.mk中加入PRODUCT_PACKAGES +=fingerprintd

可自动编译至system/bin目录下

(4)解决完编译问题后配置dts和dtsi文件,由于mt6753只有一组spi0,所以dtsi文件里面我们最多只能配一组,通过查看代码后发现,spi0平台驱动挂载会在指纹驱动初始化的时候自动加载, dts里每一个&后面的节点再dtsi里面都要对应定义

/* fingerprint start */

&fc909{

debounce = <86 0>;

pinctrl-names="finger_rst_low","finger_rst_high","default";

pinctrl-0 = <&finger_rst_low>;

pinctrl-1 = <&finger_rst_high>;

pinctrl-2 = <&finger_pins_default>;

status = "okay";

};

&pio {

finger_rst_low: finger_rst_low@gpio83 {

pins_cmd_dat {

pins = <PINMUX_GPIO83__FUNC_GPIO83>;

slew-rate = <1>;

bias-disable;

output-low;

};

};

finger_rst_high: finger_rst_high@gpio83 {

pins_cmd_dat {

pins = <PINMUX_GPIO83__FUNC_GPIO83>;

slew-rate = <1>;

bias-disable;

output-high;

};

};

finger_pins_default:fp_pins_default{

pins_cmd_dat {

pins = <PINMUX_GPIO83__FUNC_GPIO83>;

slew-rate = <1>;

bias-disable;

output-high;

};

};

};

(5)dts设置完成之后,可通过adb shell 查看相关节点

与dtsi中                 spi0:spi@1100a000{

compatible= "mediatek,mt6753-spi";

cell-index= <0>;

spi-padmacro= <0>;

reg= <0x1100a000 0x1000>;

interrupts= <GIC_SPI 118 IRQ_TYPE_LEVEL_LOW>;

};相对应

Fc-input指纹节点

adb shell"cat /sys/devices/virtual/misc/mtgpio/pin"

第一位均为1说明gpio在spi状态,如果不在spi状态有可能dts里io被复用发生冲突了同时也可改变gpio状态

Tochange GPIO status:

adb shell "echo \"-w=99:0 1 0 0 0 1 0\">/sys/devices/virtual/misc/mtgpio/pin"

每行分别对应:

IO编号: 模式,输入上拉选择,输入值,输出值,输入上拉使能,方向,输入翻转

指纹模块的中断注册以及申请在dtsi和dws中设置,修改为如下方式注册

然后再dtsi中设置

到此spi驱动基本调通,可关闭selinux用代理商提供的apk进行指纹录入识别测试

(6)selinux相关权限及库设置adb shell "cat /proc/kmsg | grep avc" >avc_log.txt

selinux权限:

1、/device/mediatek/common/sepolicy/device.te

+ type jmt101_device,dev_type;

2、/device/mediatek/common/sepolicy/file_contexts

+ /dev/ jmt101 u:object_r: jmt101_device:s0

3、/device/mediatek/common/sepolicy/platform_app.te

+ allow platform_app jmt101_device:chr_file{openread write ioctl};

4、/device/mediatek/common/sepolicy/radio.te

+ allow radio jmt101_device:chr_file{openread write ioctl};

5、/device/mediatek/common/sepolicy/system_app.te

+ allow system_app jmt101_device:chr_file{openread write ioctl};

6、/device/mediatek/common/sepolicy/untrusted_app.te

+ allow untrusted_app jmt101_device:chr_filerw_file_perms;

7、/device/mediatek/mt6735/init.mt6735.rc

+ chown system system/dev/jmt101

chmod 0666 /dev/jmt101

service fingerprintd /system/bin/fingerprintd

class late_start

user system

8、device/mediatek/mt6735/ueventd.mt6735.rc

/dev/fc909   0666   system    system

9.Z:\heqian\53_m_base\alps\external\sepolicy\fingerprintd.te

allow fingerprintdpermission_service:service_manager find;

allow fingerprintdself:netlink_kobject_uevent_socket {create bind read write};

allow fingerprintd jmt101_device:chr_file{open read write ioctl};

selinux权限添加说明

[  275.373172]  (1)[253:logd.auditd]type=1400audit(1262304448.940:180): avc:denied { create }for pid=3886comm="fingerprintd" scontext=u:r:fingerprintd:s0 tcontext=u:r:fingerprintd:s0tclass=netlink_kobject_uevent_socket permissive=0

scontext=u:r:fingerprintd   这个r:后面代表是哪个进程缺少权限

tcontext=u:r:fingerprintd  这个r:代表那个节点缺少权限

如果scontext=u:r: 和tcontext=u:r:后的名字相同,进程后面要写self

像这样allowfingerprintd self:netlink_kobject_uevent_socket {create bind read write};

tclass=netlink_kobject_uevent_socket  “tclass”后面节点的文件类型

denied { create }大括号里面表示缺少什么权限,如果还缺说明权限,可根据avc log进行添加

权限设置完之后可在Z:\heqian\53_m_base\alps\out\target\product\magc6753_65u_1_m0\obj\ETC\sepolicy_intermediates\policy.conf中查看

(7)fingerprintd服务的开启

查看服务状态 ps | grep  system/bin/ fingerprintd

有id说明服务已经开启,如果没有开启可手动开启服务验证“fingerprintd &”表示后台运行,开启服务后可在设置-安全-指纹中录入指纹

https://blog.csdn.net/baidu_38411100/article/details/78782799

mtk 驱动(55)---mtk指纹移植相关推荐

  1. MTK 驱动(69)---MTK平台 电池驱动相关

    MTK平台 电池驱动相关 MTK平台 电池驱动 一.相关代码路径(mt6755/Android6.0) alps/kernel-3.18/drivers/misc/mediatek/include/m ...

  2. MTK 驱动(64)---Mtk touch panel驱动/TP驱动详解

    Mtk touch panel驱动/TP驱动详解 TP还算是比LCM好理解的多. 在启动过程中,先注册/mediatek/custom/command/kernel/touchpanel目录下的具体驱 ...

  3. MTK 驱动(100)---GPS调试宝典

    GPS 基本知识 Ø  1.1)GPS定位和网络定位有什么不同? GPS定位是需要卫星参与的,设备借助搜到的卫星讯号,来计算出来设备的位置. 网络定位是指利用基站.WIFI MAC,获取一个粗略的位置 ...

  4. 详解关于MTK驱动开发学习教程

    MTK驱动开发学习教程是本文要介绍的内容,主要是来了解MTK的驱动开发的过程,文章中很详细的讲解了这个问题,具体内容来看本文详解. 一.Charge Parameters. 1.相关文件chr_par ...

  5. MTK驱动(53)---平台DTS文件匹配过程

    MTK平台DTS文件匹配过程 1. lk中platform paramter lk阶段会从boot image 解析出dtb数据,然后通过atag方式将dtb数据传递给了内核.    在mtk平台lk ...

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

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

  7. 高通sm4350平台指纹移植

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

  8. 一牛网:MTK芯片大全,MTK资料下载,MTK开发工具

    一牛网 MTK芯片资料分类(2G,3G,4GWIFI,平板,射频,路由器,穿戴等芯片) 为大家分享一篇集锦资料,方便大家学习,下载,分享. MTK资料下载:http://bbs.16rd.com/ci ...

  9. 51驱动AS608光学指纹识别模块 12864显示

    51驱动AS608光学指纹识别模块 12864显示 AS608光学指纹识别模块 模块工作原理 1.指纹特征 2.指纹处理 模块参数 引脚说明 实验程序 硬件设备和接线 程序讲解 按键 主函数 实验步骤 ...

最新文章

  1. JavaScript如何声明对象、函数以及对象中的函数(即方法)
  2. CentOS7下Firewall 开放指定端口
  3. 双开虚拟机(一个是克隆的)网卡起不来...启动网卡报错..
  4. 数据库建模模板、菜单显示出问题解决方案
  5. 爬取某一微博用户所有文本文件或者是视频图片文件
  6. java的mock测试框架
  7. 单例模式-3.透明的单例模式
  8. 多个ip对应的是同一个mac_Python3+Scapy安装使用 + 查询本机对应网卡,IP,MAC代码...
  9. FreeSurfer Tutorial Datasets训练数据配置
  10. 亚马逊、Facebook、Google 等科技公司为何越来越难招到人了?
  11. 十六进制高低位转换,返回十进制数
  12. Android系统在新进程中启动自定义服务过程(startService)的原理分析
  13. http之httpClient工具类
  14. ASP.NET人力资源管理系统源码大型HR源码
  15. 【今日头条测试开发笔试】部分题目总结
  16. ic 卡获取帐号apdu指令_发送获取银行卡卡号的APDU命令
  17. 计算机目录排版的文章,自动生成目录,论文排版看这一篇就够了
  18. 风袖第一阶段小程序wx.request封装
  19. 昨天发现的一些ip黑名单
  20. 【Android App】二维码的讲解及生成属于自己的二维码实战(附源码和演示 超详细必看)

热门文章

  1. 数值计算方法(五)——迭代法求方程根
  2. 数字图像处理(四)——图像编码技术(一)
  3. 风险评估资产重要性识别_什么是风险分析,如何识别和评估风险?
  4. java实验检查危险品代码_2019JAVA第六次实验报告
  5. 《深入理解 Spring Cloud 与微服务构建》第七章 负载均衡 Ribbon
  6. 64位内核开发第14将,路径的相互转换以及获取.
  7. Python day13文件的读写
  8. java并发(3)ThreadLocal的使用及实现原理(实现原理)
  9. 词根 sent/sens
  10. Android Studio 复制粘贴图片到drawable文件夹没有效果 - 解决方法