android nfc tag3 除錯日記

weixin_34413357發表於2018-08-08

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)迴圈。今天的除錯任務到此為止,開始分析原始碼,美滋滋。

相關文章