PN7120 NFC调试记录

本文记录了PN7120 NFC模块在基于RK3368的Android系统上的调试过程,包括内核驱动的配置与编译,Android系统的适配调整,以及在遇到编译错误、Selinux权限问题和nfc_nci.pn54x.default.so不自动编译等挑战时的解决方法。详细步骤和解决方案均在文中有所阐述。

PN7120 NFC调试记录

Platform: RK3368
OS: Android 6.0
Kernel: 3.10.0


整个调试流程,基本上按照官方移植文档操作就可以了.NXP官方代码(Android Marshmallow 6.0.1):

https://github.com/NXPNFCLinux/nxpnfc_android_marshmallow

下载后目录里面有移植文档:AN11690 - NXPNCI Android Porting Guidelines.pdf,FactoryTestApp里面是测试工具.

1. 内核驱动

下载最新驱动,官方最新代码:

https://github.com/NXPNFCLinux/nxp-pn5xx;

修改drivers/misc/Kconfig,添加:

source "drivers/misc/nxp-pn5xx/Kconfig"

修改drivers/misc/Makefile,添加:

obj-$(CONFIG_NFC_NXP_PN5XX) += nxp-pn5xx/

修改Makefile

obj-$(CONFIG_NFC_NXP_PN5XX)                += pn5xx_i2c.o

然后内核menuconfig配置好就可以了;接着添加设备树,将以下节点添加到对应的i2c节点中:

+       pn544: pn544@28 {
+               compatible = "nxp,pn544";
+               reg = <0x28>;
+               clock-frequency = <400000>;
+               interrupt-gpios = <&gpio0 GPIO_B4 GPIO_ACTIVE_HIGH>;
+               enable-gpios = <&gpio0 GPIO_B3 GPIO_ACTIVE_HIGH>;
+               status = "okay";
+       };

2. Android适配

按照官方移植文档打上补丁,主要修改了以下几个目录文件:

external/libnfc-nci
frameworks/base/core
frameworks/base/nxp-nfc-gsma
packages/apps/Nfc

3. 遇到的问题

3.1 编译报错

我在打完补丁后编译报错,解决方法:

$ make update-api

3.2 Selinux权限

avc: denied信息:

[   31.889588]  [0:    logd.auditd:  185] type=1400 audit(1358771230.190:13): avc: denied { write } for pid=1040 comm=4173796E635461736B202331 name="libnfc-nxpConfigState.bin" dev="rknand_userdata" ino=24341 scontext=u:r:nfc:s0 tcontext=u:object_r:system_data_file:s0 tclass=file permissive=0

解决方法: 修改sepolicy/file_contexts添加以下内容:

/data/nfc(/.*)? u:object_r:nfc_data_file:s0

3.3 nfc_nci.pn54x.default.so不自动编译:

解决方法:官方移植文档中的模块名字写错了:

 PRODUCT_PACKAGES += \
     libnfc-nci \
     libnfc_nci_jni \
-    nfc_nci_pn54x.default \
+    nfc_nci.pn54x.default \
     NfcNci \
     Tag \
     com.android.nfc_extras
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值