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

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

被折叠的 条评论
为什么被折叠?



