在网上找了很久都没看到关于nfc怎么调试的方法,很零碎搞了下把心得分享出来,其实调试nfc驱动很简单。
第一步我们需要找到我们的驱动mt6605.c这个文件。
obj-$(CONFIG_NFC_MT6605) += mt6605.o
ccflags-$(CONFIG_NFC_MT6605) += -DDEBUG
我们的把宏打开才能使nfc驱动能被编译到,开宏在defconfig
目录:\kernel-3.10\arch\arm64\configs\defconfig
驱动我们就不用去管了现在看看有一个文件ProjectConfig.mk
alps/device/<Project Name>/ProjectConfig.mk
添加下面的宏 :
MTK_NFC_ADDON_SUPPORT = yes
MTK_NFC_APP_SUPPORT = yes
MTK_NFC_FW_MT6605 = yes
MTK_NFC_GSMA_SUPPORT = yes
MTK_NFC_HCE_SUPPORT = yes
MTK_NFC_MT6605 = yes
MTK_NFC_OMAAC_CMCC = no
MTK_NFC_OMAAC_GEMALTO = yes
MTK_NFC_OMAAC_SUPPORT = yes
MTK_NFC_OMAAC_VER = 3_1_0
MTK_NFC_SE_NUM = 0 //这个需要根据实际定义
MTK_NFC_SUPPORT = yes
MTK_NFC_SE_NUM = n # bit map
上面这个宏仅对 factory mode 下的 SWP 测试有影响,需要根据 project 的硬件设计决定。
n 值表示 SWP 测试支持的插槽组的 bitmap 。
– bit0 : SWP1 (usually SIM1)
– bit1 : SWP2 (usually SIM2)
– bit2 : SWP3 (micro-SD)
例如 :
– 插槽组是 SWP1 + SWP2 , n = 3 ;
– SWP1+ micro-SD n = 5
– 若是使用 SWP2 +micro-SD , n = 6 ;
SWP1,SWP2 这两行,如果硬件设计有就写,没有就不写。
SD 这一行,如果硬件设计有就写 YES ,没有就写 NO 。
ESE 这一行,如果硬件设计有就写 YES ,没有就写 NO
这个文件是nfcse.cfg
#
# This is the configuration file for NFC multiple secure element feature
#
SWP1:SIM1
SWP2:SIM2
SD:YES
ESE:NO
#
# This is the configuration file for NFC clock type & rate
#
##################
# CLK_TYPE
##################
# 0 : XTAL
# 1 : CO-CLOCK
CLK_TYPE: 0
##################
# CLK_RATE
##################
# 0 : 13.56 MHz
# 1 : 19.2 MHz
# 2 : 20 MHz
# 3 : 24 MHz
# 4 : 26 MHz
# 5 : 27.12 MHz
# 6 : 38.4 MHz
# 7 : 40 MHz
CLK_RATE: 5
上面是我用的外部晶振
DCT 设置
3 Reference for DCT Settings
请注意:下面只是给出一个例子,具体配置到哪个 GPIO 需要根据 project 的电路图确定
I2c 总线号
mt6605.c 中 NFC_I2C_BUSNUM 需要根据 project 的电路图来确定。
比如,电路中接的是 I2C Bus 3 ,那应该做如下修改:
#define NFC_I2C_BUSNUM 3
i2c地址
MT6605 默认用的 I2C 地址是 0x28 , 0x28 为 7 位地址,请确认没有地址冲突。