android nfc tag3 调试日记

又到了每天最愉快的调试android nfc模块的时候。nfcpy中有一段示例代码:listen.py

大致是模拟nfc tag3卡片。里面对pmm(设备号),idm(tag编号)进行设置然后发包。

查阅tag3 spec,发现:

ndef detection:

step1:

nfc forum device sends a polling command with system code 12fc,

ndef-enabled type 3 tag respond to the polling command by sending a polling response

include ing IDm and Pmm

我们得出结论:对pmm和idm进行解析的部分很可能是NDEF detection的部分,我们如何找到对应的源码呢?

直接在源码中搜索pmm,找到一处:RW_T3tDetectNDef。于是我们就找到了T3tDetectNDef。

继续研究,该函数是如何被调用的呢?

放到gdb中调试:对其下断点,打印函数调用如下:

RW_T3tDetectNDef

nfa_rw_detect_ndef

nfa_rw_handle_op_req

nfa_rw_handle_event

nfa_sys_event

nfc_task

gki_task_entry

很好,我们发现函数调用栈跨越了多个模块,自地向上下断点验证:

发现将nfc发射器放到手机附近时没有在gki_task_entry处断下,说明在在上方必定有一处循环:果然在nfc_task处

有while(true)循环。今天的调试任务到此为止,开始分析源码,美滋滋。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐