RK3288 & Android7.1调试NFC(PN7150)

平台:RK3288 & Android7.1

内容:调试NFC功能

模块:PN7150

前言

在Android7.1系统的主板上外挂PN7150开发板,增加NFC功能,用于支付。

一、调试

1.1、内核层

1.1.1 dts

PN7150通过I2C与主板通信,所以需要在对应的IIC节点添加设备,这里是将模组挂在I2C4

&i2c4 {
	status = "okay";
	clock-frequency = <400000>;
	i2c-scl-rising-time-ns = <345>;
	i2c-scl-falling-time-ns = <11>;

	pn7150: pn7150@28 {
                 status = "okay";
                 compatible = "nxp,pn547";
                 reg = <0x28>;
                 interrupt-gpios = <&gpio7 RK_PA6 IRQ_TYPE_LEVEL_HIGH>;
                 enable-gpios = <&gpio7 RK_PA5 GPIO_ACTIVE_LOW>;
    };
};

1.1.2 驱动

1、切换至目录
SDK/kernel/drivers/misc

2、下载驱动源码
git clone https://github.com/NXPNFCLinux/nxp-pn5xx.git

这里修改一下Makefile,将Makefile的内容替换成下面这个,把驱动编译成.o文件

kernel\drivers\misc\nxp-pn5xx\Makefile

obj-$(CONFIG_NFC_NXP_PN5XX) += pn5xx_i2c.o
nxp-pn5xx-objs := pn5xx_i2c.o

二、系统层

2.1 替换lib库

https://github.com/NXPNFCProject/NFC_NCIHAL_libnfc-nci

SDK路径:external/libnfc-nci

2.2 NFC服务APP更换

https://github.com/NXPNFCProject/NFC_NCIHAL_Nfcpackages\apps\Nfc

SDK路径:packages\apps\Nfc

3、补丁

3.1 带有补丁脚本的包

 https://github.com/NXPNFCLinux/nxpnfc_android_nougat

3.2 补丁脚本需要的文件

https://github.com/NXPNFCProject/NFC_NCIHAL_base/tree/br_android_ncihalx_n

SDK根目录新建文件夹 NxpNfcAndroid ,然后把3.1整个文件夹扔进去,3.2里面的内容也全部扔进去,然后执行脚本 install_NFC.sh PN7150

4、nfc.h

https://github.com/NXPNFCProject/NXPNFC_Reference

替换这个文件,补丁脚本里面没有,但是参考文档有

SDK路径:hardware\libhardware\include\hardware\nfc.h

5、系统文件修改

SDK\device\rockchip\rk3288\device.mk

PRODUCT_COPY_FILES += \   frameworks/native/data/etc/android.software.midi.xml:system/etc/permissions/android.software.midi.xml
	
# NFC packages
PRODUCT_PACKAGES += \
   libnfc-nci \
   libnfc_nci_jni \
   nfc_nci_pn54x.default \
   NfcNci \
   Tag \
   com.android.nfc_extras	
      
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/com.nxp.mifare.xml:system/etc/permissions/com.nxp.mifare.xml \   frameworks/native/data/etc/com.android.nfc_extras.xml:system/etc/permissions/com.android.nfc_extras.xml \   frameworks/native/data/etc/android.hardware.nfc.xml:system/etc/permissions/android.hardware.nfc.xml \   frameworks/native/data/etc/android.hardware.nfc.hce.xml:system/etc/permissions/android.hardware.nfc.hce.xml \   NxpNfcAndroid/android.hardware.nfc.hcef.xml:system/etc/permissions/android.hardware.nfc.hcef.xml \
NxpNfcAndroid/conf/libnfc-brcm.conf:system/etc/libnfc-brcm.conf \
NxpNfcAndroid/conf/libnfc-nxp.conf:system/etc/libnfc-nxp.conf 
SDK\device\rockchip\rk3288\init.rk3288.rc

//如果没有设备/dev/pn544,就把这段往前提,跟着on boot后面执行
+    # NFC
+    setprop ro.nfc.port "I2C"
+    chmod 0660 /dev/pn544
+    chown nfc nfc /dev/pn544

三、测试

测试apk文章结尾有,测试结果类似下面这种

拿手机扫可能手机不会弹出nfc的窗口,但是模块是可以识别到手机的ID的,类似上面。

四、遇到的问题

4.1 下载源码

开始参考NXP文档clone的时候不知道要切换平台,后面切换平台下的才对的上。

4.2 补丁脚本执行失败

在执行脚本 install_NFC.sh PN7150 打补丁的时候失败了,这个只能根据报错信息去改,如果有时间可以根据脚本手动打补丁。

4.3 I2C报错

模组使用看起来正常,示波器量中断脚电平波动也正常,在驱动里面加打印看数据收发也有,但是I2C时不时会报下面这个错误

pn54x_dev_write : i2c_master_send returned -6

看起来可能是设备掉了,可能是不太稳定,加了上拉也不好使,但是使用起来感觉不到。

4.4 没有pn544

没有发现/dev/pn544设备文件,将代码执行顺序往前提到boot那里即可

五、资料包

链接:https://pan.baidu.com/s/1U-y6EO_TO3ZojCd6TdZf5w 
提取码:lmjm

六、参考文章

nfc模块pn7150移植说明教程(android mtk rk3399 rk3588)_rk3399 nfc-CSDN博客

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 7.1 的源码中,您可以通过修改 fstab 文件或 init.rc 文件来添加一个可被电脑识别的分区。具体来说,您可以按照以下步骤进行操作: 1. 确定您要挂载的分区的设备节点名称,例如 `/dev/sdb1`。 2. 打开设备的 fstab 文件,例如 `/vendor/etc/fstab.rk3288`,在其中添加一行类似于以下内容的条目: `/dev/block/sdb1 /mnt/usb_storage vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0002,dmask=0002,allow_utime=0020,codepage=936,iocharset=utf8,shortname=mixed,utf8,errors=remount-ro 0 0` 这个条目的意思是将 `/dev/block/sdb1` 这个设备节点挂载到 `/mnt/usb_storage` 这个挂载点,使用 vfat 文件系统,具有一系列选项,例如读写权限、字符集等。 3. 如果您想要在设备启动时自动挂载该分区,可以修改设备的 init.rc 文件。具体来说,您可以在文件中添加以下内容: ``` mount /dev/block/sdb1 /mnt/usb_storage vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0002,dmask=0002,allow_utime=0020,codepage=936,iocharset=utf8,shortname=mixed,utf8,errors=remount-ro ``` 这个命令的意思是在设备启动时将 `/dev/block/sdb1` 挂载到 `/mnt/usb_storage`,使用 vfat 文件系统,具有一系列选项。 请注意,上述操作可能需要 root 权限才能执行,同时修改系统文件可能会导致系统不稳定或无法正常启动,请谨慎操作,并备份好您的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值