NXP NFC PN548 移植说明 For Android

关键字 :NXPNFCPN548
1.支持功能描述

    从下面的图中我们可以看到 NFC 支持的协议类型,这里支持的读卡协议都是标准的协议,如果是非标准的卡片或者改变了原有协议内容的话,NFC 是不能直接读到的。


2.kernel 移植

  高通平台使用默认的驱动 nq-nci.c 即可,底层调试比较容易,驱动 OK 后 adb shell 看下 dev 目录下有没有 nq-nci 这个设备节点。
  如果要使用我们提供的驱动程序,设备结点名称建议都修改为”pn544”,后续使用到一些调试工具时其它的节点名称会不认(无源码不可更改)。
  MTK 平台驱动调试需要注意的地方比较多,建议统一使用我们提供的驱动,也可以使用之前项目量产或者 NFC 功能一切正常的驱动。
  在驱动合入后一定要用测试程序测试 I2C 功能是否 OK,测试程序中会读取芯片的FW 版本号,如果正常读取说明 DMA 没有问题,如果测试程序中出现问题建议多检查中断配置那块,MTK 这部分比较容易有问题,不同的平台问题点还不太一样。



3.上层移植

不同的 Android 平台使用的 MW 代码是不一样的,这里主要针对 NFC_NCIHALx_ARFC.7.4.0_N android N 来描述。
高通平台可以使用高通默认 NFC 代码,如果不使用高通默认代码的话在移植前要把高通默认的 NFC 代码关闭掉,可以搜索“NQ_NFC”这个关键字,把这个宏关闭掉。
MTK 平台在移植前要把 MTK 和 ST 默认的 NFC 宏关闭(下面是 MTK 部分宏控,ST 的宏要自行查找):
MTK_NFC_ADDON_SUPPORT = no
MTK_NFC_FW_MT6605 = no
MTK_NFC_GSMA_SUPPORT = no
MTK_NFC_HCE_SUPPORT = no
MTK_NFC_MT6605 = no
MTK_NFC_OMAAC_SUPPORT = no
MTK_NFC_SUPPORT = no
MTK_WIFIWPSP2P_NFC_SUPPORT = no
MTK_BEAM_PLUS_SUPPORT = no
NXP 的代码可以在 github 上直接获取:https://github.com/NXPNFCProject,我们一般都会整理后把代码包给客户使用,我们整理过的代码包一般不会出现编译问题,和 Android 代码路径对应关系比较好。


删除默认代码,直接拷贝相应代码到下面路径(不可以覆盖):
1) external\libnfc-nci\
2) packages\apps\Nfc\
3) frameworks\base\core\java\android\nfc\
4) frameworks\base\core\java\com
5) frameworks\base\nxp-nfc-gsma
6) hardware\libhardware\include\hardware\nfc.h
“frameworks\base\Android.mk”这个文件在合入时要对比合入,只需合入和NFC 有关的内容,和 NFC 无关的不需要合入。
在编译前检查这些宏是否都已经修改正确:
NXP_CHIP_TYPE(根据型号选择)
NFC_NXP_ESE:= FALSE
① external\libnfc-nci\Android.mk
② external\libnfc-nci\halimpl\pn54x\Android.mk
③ packages\apps\Nfc\nci\jni\Android.mk
编译时要把 OUT 目录删除,不然 make update-api 会报错。
编译完成后检查NfcNci、libnfc-nci、libnfc_nci_jni、nfc_nci.pn54x.default 这些库和 APK 是否都存在。



4.DEBUG 和测试

NFC 打不开问题如何解决:
检查需要编译出来的 SO 库和 APK 是否都存在?检查 conf、fw 是否都存在?可以通过 adb 查看。
Conf 中的配置是否都已经修改?设备节点、时钟选择、供电选择是否都已经匹配?时钟和供电不清楚问硬件工程师。
如上问题如果都确认 OK 的话,抓 android log 看下设备设备节点是否能够打开,如果打不开设备节点请手动给节点 660 权限,把 SELINUX 关闭掉(adb shell setenforce 0)

NFC 能打开后,可以使用 APK 去测试功能,这些读卡 APK 都可以在网络上下载到。
如果不能读卡,请看下是否有无 POLLING 信号,可以使用示波器测量,条件:NFC 能够打开,屏幕设置常亮,示波器一端接地一端接天线馈点任意一点。
如果没有量到 POLLING 信号请检查 conf 配置和硬件。
如果有 POLLING 信号不能读卡,有可能是性能比较差导致,这样整个 NFC 的移植就完成了。

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论