RK3568 android11 基于PN7160的NXP NFC移植

打印 上一主题 下一主题

主题 1670|帖子 1670|积分 5010

一,概述

1. 模块概述

PN7160专为在各种体系实现快速集成而设计,支持所有符合NFC Forum的模式,包罗Android和Linux驱动程序,并支持实时操作体系和无操作体系的应用(PN7160不符合EMVCo)。嵌入式NFC固件减少了对主机交互的需求,并最大限度缩小了代码尺寸,使设计更轻松。PN7160具有I²C或SPI接口,与广受欢迎的MCU兼容,包罗LPC、Kinetis和i.MX。
2.产品特性



  • 支持所有符合NFC Forum的模式
    读写器模式:ISO/IEC A&B、FeliCa、MIFARE 1K、4K,NFC Forum类型1、2、3、4、5,ISO/IEC 15693
    对等模式:被动和主动、发起方和目的方
    卡模仿模式:NFC Forum类型3和4(A&B)

  • 机动的主机接口
    电源电压:1.8V或3.3V
    I²C接口或SPI接口
    符合NCI 2.0的协议
    改进同步的IRQ信号

  • 高性能NFC控制器
    射频驱动程序:2.7V至5.25V,最大值为250mA
    接收器灵敏度为20mVp-p
    完全可配置的轮询循环,带低功耗模式
    有源负载调制与动态功率控制

  • 标准封装
    HVQFN40
    VFBGA64
3.安卓NFC堆栈概述


<hr> 二,内核移植

NFC安卓堆栈使用nxpnfc内核驱动程序与NXP NCI NFC控制器进行通信。nxpnfc内核驱动程序提供了与通过I2C或SPI物理接口连接的NFC控制器的通信。当加载到内核时,通过名为/dev/nxpnfc的装备节点将该接口公开给NFC控制器。
1.移植驱动

a. nxpnfc存储库克隆到内核目录中

  1. $ rm -rf drivers/nfc
  2. $ git clone https://github.com/NXPNFCLinux/nxpnfc.git drivers/nfc
复制代码
b. 修改driver目录下Kconfig以及nfc目录下Makefile和Kconfig

  1. kernel/drivers/Kconfig中添加:
  2. source "drivers/nfc/Kconfig"
  3. ====================================================================
  4. kernel/drivers/nfc/Kconfig中添加:
  5. config NXP_NFC_I2C
  6.        tristate "NFC I2C Slave driver for NXP-NFCC"
  7.        depends on I2C
  8.        help
  9.          This enables the NFC driver for PN71xx based devices.
  10.          This is for I2C connected version. NCI protocol logic
  11.          resides in the usermode and it has no other NFC dependencies.
  12.          If unsure, say N.
  13. config NXP_NFC_SPI
  14.          If unsure, say N.
  15. config NXP_NFC_SPI
  16.        tristate "NFC SPI Slave driver for NXP-NFCC"
  17.        depends on SPI
  18.        help
  19.          This enables the NFC driver for PN71xx based devices.
  20.          This is for SPI connected version. NCI protocol logic
  21.          resides in the usermode and it has no other NFC dependencies.
  22.          If unsure, say N.
  23. config NXP_NFC_RECOVERY
  24.        bool "NXP based NFC minimal FW update support"
  25.        depends on NXP_NFC_I2C && I2C
  26.         default y
  27.        help
  28.          This enables NFC minimal FW update.
  29.          
  30.          If unsure, say N.
复制代码
c.内核中加载驱动

  1. kernel/arch/arm64/configs/rockchip_defconfig中添加:
  2. CONFIG_NFC=y
  3. CONFIG_NXP_NFC_I2C=y
复制代码
2.装备树配置

nxp使用tp的接口,挂在i2c1节点下:

注:不同主板节点以及GPIO引脚是不同的,根据原理图确定。
  1. &i2c3 {
  2.    
  3.         status = "okay";
  4.         pn547: pn547@28 {
  5.    
  6.                 compatible = "nxp,nxpnfc";
  7.                 reg = <0x2B>;  //I2C地址(需要找供应商确认,错误的话是无法通讯的)
  8.                 nxp,nxpnfc-irq = <&gpio0 RK_PB5 IRQ_TYPE_LEVEL_LOW>;  //中断脚
  9.                 nxp,nxpnfc-ven = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>;  //复位脚
  10.                 status = "okay";
  11.         };
  12. };
复制代码
3.驱动调试

配置完驱动,可以先用测试程序NfcFactoryTestApp试一下nfc通讯是否正常。

<hr> 三,Android层移植

1.将存储库克隆到Android源目录

  1. $ git clone https://github.com/NXPNFCLinux/nxpnfc_android11.git ${ANDROID_BUILD_TOP}/vendor/nxp/nfc
复制代码

2.运行补丁脚本

  1. chmod +x vendor/nxp/nfc/install_NFC.sh
  2. ./vendor/nxp/nfc/install_NFC.sh
复制代码
3.adding NFC to the build

  1. diff --git a/device/rockchip/rk356x/BoardConfig.mk b/device/rockchip/rk356x/BoardConfig.mk
  2. index e2773c1369..0e0598f209 100644
  3. --- a/device/rockchip/rk356x/BoardConfig.mk
  4. +++ b/device/rockchip/rk356x/BoardConfig.mk
  5. @@ -64,7 +64,7 @@ ENABLE_CPUSETS := true
  6. # Enable Dex compile opt as default
  7. WITH_DEXPREOPT := true
  8. -BOARD_NFC_SUPPORT := false
  9. +BOARD_NFC_SUPPORT := true
  10. BOARD_HAS_GPS := false
  11. BOARD_GRAVITY_SENSOR_SUPPORT := true
  12. @@ -116,3 +116,6 @@ PRODUCT_HAVE_OPTEE := true
  13. BOARD_ROCKCHIP_TRUST_MERGE_TO_UBOOT := true
  14. BOARD_BASEPARAMETER_SUPPORT := true
  15. +
  16. +#NXP NFC Sensor
  17. +-include vendor/nxp/nfc/BoardConfigNfc.mk
  18. diff --git a/device/rockchip/rk356x/device.mk b/device/rockchip/rk356x/device.mk
  19. index 1ddf1b4b1e..7cad9522b0 100644
  20. --- a/device/rockchip/rk356x/device.mk
  21. +++ b/device/rockchip/rk356x/device.mk
  22. @@ -80,6 +80,9 @@ PRODUCT_PROPERTY_OVERRIDES += \
  23. PRODUCT_COPY_FILES += \
  24.      $(LOCAL_PATH)/public.libraries.txt:vendor/etc/public.libraries.txt
  25. +#DEVICE_MANIFEST_FILE += vendor/nxp/nfc/manifest.xml
  26. +$(call inherit-product, vendor/nxp/nfc/device-nfc.mk)
复制代码
4.编译体系

a.编译报错android.hardware.nfc有辩论

修改vendor/nxp/nfc/BoardConfigNfc.mk,注释掉DEVICE_MANIFEST_FILE += vendor/nxp/nfc/manifest.xml这行。

b.编译报错

checkvintf I 03-13 09:55:50 18859 18859 check_vintf.cpp:84] List ‘out/target/product/rk3568_r/product/etc/vintf/’: No such file or directory
checkvintf E 03-13 09:55:50 18859 18859 check_vintf.cpp:554] files are incompatible: Device manifest and framework compatibility matrix are incompatible: HALs incompatible. Matrix level = 5. Manifest level = 5. The following requirements are not met:
checkvintf E 03-13 09:55:50 18859 18859 check_vintf.cpp:554] android.hardware.nfc:
checkvintf E 03-13 09:55:50 18859 18859 check_vintf.cpp:554] required: @1.2::INfc/default
checkvintf E 03-13 09:55:50 18859 18859 check_vintf.cpp:554] provided:
checkvintf E 03-13 09:55:50 18859 18859 check_vintf.cpp:554] vendor.nxp.nxpnfc:
checkvintf E 03-13 09:55:50 18859 18859 check_vintf.cpp:554] required: @1.0::INxpNfc/default
checkvintf E 03-13 09:55:50 18859 18859 check_vintf.cpp:554] provided:
checkvintf E 03-13 09:55:50 18859 18859 check_vintf.cpp:554] : Success
INCOMPATIBLE
可做如下修改:
  1. diff --git a/device/rockchip/common/manifests/android.hardware.graphics.mapper@4.0.xml b/device/rockchip/common/manifests/android.hardware.graphics.mapper@4.0.xml
  2. index 95ae60faae..9715f19c0a 100755
  3. --- a/device/rockchip/common/manifests/android.hardware.graphics.mapper@4.0.xml
  4. +++ b/device/rockchip/common/manifests/android.hardware.graphics.mapper@4.0.xml
  5. @@ -8,4 +8,28 @@
  6.              <instance>default</instance>
  7.          </interface>
  8.      </hal>
  9. +    <hal format="hidl">
  10. +        <name>android.hardwar
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连密封材料

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表