同学,别退出呀,我可是全网最牛逼的 WIFI/BT/GPS/NFC分析博主,我写了上百篇文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦。
- 了解项目信息,FAE联系方式,驱动源码等
- 驱动合入内核
- 配置DTS
- 驱动设备节点验证
- Push nfc 固件
- 证nfc 功能
准备工作:
(1)bring up阶段:
了解项目信息,联系供应商获取驱动代码、测试bin档或源码、datasheet等相关资料,并获取FAE联系方式,便于及时沟通问题。同时,开始在开发分支上进行驱动移植工作,便于回板之后及时实机调试。
(2)回板之后:
将编译通过可正常开机的boot.img、system.img等刷入机器,验证kernel部分代码流程,驱动加载和设备注册是否正常。
<1>确认驱动源代码是否添加到我们软件版本的代码树中。
- 确认驱动程序源代码。
- 确认 Kbuild 中是否有驱动的编译项。
<2>在 Device tree 源文件中确认设备节点、配置是否正常,使得设备能够正常初始化。
由于NFC的调试部分内容,有源码的涉及,所以不输出到此文档上,其大致流程如下:
1、驱动代码:
kernel\drivers\nfc\nq-nci.c
kernel\drivers\nfc\nq-nci.h
2. kernel编译修改
3.DTS配置
具体情况还需要根据实际情况来看
一些常见的NFC 问题:
1、一、打开NFC 开关,功率偏高问题
关闭NFC后电流为270毫安:
亮屏状态下开启NFC不读卡的功耗为320毫安:
怀疑开启NFC不读卡时无法进入LPCD低功耗状态。
解决办法:更改配置文件system/etc/libnfc-nxp.conf,修改电压。但是根本原因在于硬件,产线由于机器一致性不一,仅修改RX的接收电压不能从根本上解决问题。
(需要供应商配合帮忙查看)
2、nfc orange测试不能读卡
06-05 10:43:56.667 3231 3231 D NfcSimStateObserver:
ACTION_SIM_STATE_CHANGED receiver with iccState = ABSENT, simId = 1
06-05 10:43:56.718 3329 3329 D SimStateChangeReceiver: received stateExtra ABSENT
06-05 10:43:56.727 5103 5103 I Finsky : [2] com.google.android.finsky.simhandler.SimStateReceiver.a(6): android.intent.action.SIM_STATE_CHANGED : simState = ABSENT
06-05 10:43:56.759 4010 4010 D SimStateReceiver: ACTION_SIM_STATE_CHANGED intent received on sub = 1SIM STATE IS ABSENT
解决办法:合入fae提供的patch,使得两个卡槽都能读到
3、跑老化死机
Log分析:
全是nfc log:
12-06 17:05:33.810 599 25138 W StNfcHal: OS_SYNC_TIMEOUT12-06 17:05:33.810
599 25138 D StNfcHal: !! got event HAL_EVENT_TIMER_TIMEOUT 12-06 17:05:33.810
599 25136 D StNfcHal: HAL st21nfc: async_callback_thread_fct event 7 status 012-06 17:05:33.810 599 25136 W android.hardware.nfc@1.1-impl: failed to send event!!!
原因分析:nfc一直处在读卡状态
解决方法:合入FAE patch