AN13189.pdf
2简介
本文件提供了从软件角度将基于PN7160 NXP NCI的NFC控制器集成到Android平台的指南。
它首先解释了如何安装所需的内核驱动程序,然后逐步描述了如何调整Android开源项目源代码以添加PN7160 NFC控制器的支持。图1显示了整个Android NFC堆栈的架构。
•nxpnfc驱动程序是允许访问基于NXP NCI的NFC控制器硬件资源的内核模块
•恩智浦NCI HAL模块是恩智浦NFC控制器特定硬件抽象层的实现
•libnfc nci是提供NFC功能的本地库
•JNI是Java和Native类之间的粘合代码
•NFC服务是提供NFC功能访问的应用框架模块
4内核驱动程序
NFC安卓堆栈使用nxpnfc内核驱动程序与恩智浦NCI NFC控制器进行通信。它可从以下存储库中获得:https://github.com/NXPNFCLinux/nxpnfc.
4.1驱动程序详细信息
nxpnfc内核驱动程序为通过I2C或SPI物理接口连接的NFC控制器提供通信。
当加载到内核时,该驱动程序通过名为/dev/nxpnfc的设备节点向NFC控制器公开接口。
该内核驱动程序与恩智浦的各种NFC控制器兼容,它解释了恩智浦在源代码中可以找到的特定参考。
所提供的源代码允许根据内核配置构建内核驱动程序的两个版本(I2C和SPI)。
4.3将驱动程序包含在内核中
将驱动程序包含到内核中,并在设备引导期间加载它,这要归功于设备树。按照以下示例中的建议更新设备树定义后,必须重建与平台相关的设备树。
4.3.1 I2C版本
I2C地址(以下示例中为0x28)和GPIO分配必须根据平台中的硬件集成进行调整。
以下是要添加到平台设备树文件中的定义示例(.dts文件,例如位于基于arm的平台的arch/arm/boot/dts内核子文件夹下)。
5.1.5步骤5:添加固件库
安卓NFC堆栈集成了对NFC控制器固件更新的支持。允许更新
机制,更新后的固件版本必须以库(或二进制)的形式包含在目标上。恩智浦NFC控制器固件的Arm架构库通过专用存储库提供https://github.com/
NXP/nfc-NXPNFCC_FW。
使用以下命令将PN7160固件库文件从存储库检索到专用子文件夹:
这将创建供应商/nxp/pn7160/固件子文件夹,其中包含32位和64位Arm体系结构库。
构建android镜像时,这些库将包含在镜像中(如vendor/nxp/nfc/device-nfc.mk中定义的)。
5.1.6第6步:建造和安装NFC
构建Android映像并将其闪存到目标(引导映像必须包含第4节中所述的内核驱动程序)。请注意,内核的版本应该是5.10。
5.1.7步骤7:验证NFC功能在Android“设置”菜单中,检查NFC是否打开。然后NFC功能应启动并运行,准备就绪
发现NFC标签或与远程NFC设备交换数据。
为了进一步测试NFC阅读器功能,NXP的NFC TagInfo和NFC TagWriter 是Google Play商店免费提供的两款应用程序。
7 工厂测试本机应用程序
为了简化Android设备中NFC集成的特性,FactoryTestApp原生应用程序提供了以下功能:
•连续射频开启:将NFC控制器置于连续未调制的射频场中
•功能模式:使NFC控制器处于连续轮询标签检测的模式
•PRBS模式:将NFC控制器置于连续调制RF场发射(伪随机模式)
•待机模式:将NFC控制器置于低功耗模式(用于功耗测量)
•转储射频设置:列出所有NFC控制器射频设置的值
•设置射频设置:允许更新NFC控制器射频设置的值
源代码与恩智浦的Android NFC交付一起交付(见上文第5.2.1节或第5.3.1节)。二进制代码是在构建系统映像时生成的,但也可以使用以下cmmand独立构建:
8 NFC Forum DTA application
To allow NFC Forum certification testing, a Device Test Application is provided. It is comprised of several
components in the different Android layers (see Figure 1) which must be built and included to the Android
image.
Below is the recommended procedure:
• For Android 12:
1. Retrieve DTA application source code, depending of the Android version integration:
闪烁目标后,DTA应用程序应出现在已安装的应用程序列表中。启动后,DTA应用程序会请求用户从“设置”菜单禁用NFC功能。事实上,DTA应用程序直接从低级库访问NFC功能,因此必须禁用NFC服务以防止冲突。
“Cert.Rel”字段必须反映目标证书发布版本。
“TSN-F”字段定义NFC-F技术时隙号,必须根据测试执行要求进行设置。
“Con.Dev”字段定义连接设备限制,必须根据测试执行要求进行设置。目前只有“执行模式”的“手动”模式可用,“自动”模式保留供将来使用。
“模式编号”必须根据测试执行要求进行设置。
RF技术选项卡允许为每种可能的模式单独选择每种技术。
“LLCP”字段允许为专用测试执行启用特定的“模式编号”。
“SNEP”字段允许运行专用测试,还需要在Android设备设置中启用“Android Beam”功能。
“日志消息”字段允许将跟踪输出到文件(位于“/sdcard/nxpdtalog/”文件夹下)和/或控制台。
9 NDEF仿真T4TDemo应用程序
为了演示Android设备中的NDEF仿真功能,提供了T4TDemo应用程序,显示了特定API的使用:
•doWriteT4tData:API,用于设置要公开的NDEF内容
•doReadT4tData:获取当前公开的NDEF内容的API
NDEF仿真功能是根据libnfc-NXP.conf配置文件中NXP_T4T_NFCEE_ENABLE参数的值启用的(请参阅第6节)。源代码与恩智浦的安卓NFC交付一起交付(见上文第5.2.1节或第5.3.1节)。
应用程序是在构建系统映像时生成的,但也可以使用以下命令独立构建:
10故障排除
在启动安卓设备时,如果NFC无法按预期工作,以下项目可能有助于找出问题所在。
10.1缺少内核驱动程序或错误的设备节点权限以下ADB日志可能表明内核中缺少nxpnfc驱动程序或应用了错误的权限: