android pn551模塊分析筆記

android pn551模塊分析筆記

pn551的底層是I2C模塊,這里采用斷點+函數(shù)調(diào)用的自底向上的分析方式

模塊架構(gòu)

hal_->phNxpNciHal_->phTmlNfc_*,其中phNxpNciHal內(nèi)部維護(hù)了一個隊列

從i2c讀取數(shù)據(jù)

phTmlNfc_TmlThread->phTmlNfc_i2c_Thread。猜測phTmlNfc_TmlThread應(yīng)該是某個線程的入口函數(shù)
,果然,在同文件下phTmlNfc_startThread通過pthread_create創(chuàng)建了上述線程。在phTmlNfc_startThread中先后創(chuàng)建了讀寫線程

nfc_nci.c

nfc_open打開或者創(chuàng)建nfc設(shè)備實例,內(nèi)部注冊hal_*函數(shù),將nfc_open注冊到HAL_MODULE_INFO_SYM中

command and response

phNxpNciHal_process_ext_cmd_rsp:

send ext command -- start timer -- wait for response -- stop timer

下斷點技巧

rbreak對文件內(nèi)容下斷點。在NFC沒有完全啟動前,phDnldNfc_*函數(shù)會被調(diào)用。啟動后不再調(diào)用

自頂向上分析

對hardware層的write函數(shù)下斷點,跟進(jìn),發(fā)現(xiàn)其進(jìn)入pn551的nci模塊。

打開設(shè)備

在dev目錄下并沒有找到hal層的代碼中的pn54x,僅有一個pn551。這讓我一度懷疑人生。發(fā)現(xiàn)內(nèi)核中注冊的設(shè)備為pn551,感覺代碼hal層的表述出現(xiàn)了偏差。于是:

關(guān)閉NFC前對phNxpNciHal_open下斷點,重啟nfc,中斷到phNxpNciHal_open。待函數(shù)執(zhí)行過GetNxpStrValue后,執(zhí)行p nfc_dev_node 顯示 /dev/pn551。這和代碼中的pn54x不同。

真想只有一個,nfc驅(qū)動也只有一個,那就是pn551?。?!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,030評論 25 709
  • 李改婷老師 見字如面,問聲好。時間往回拉一年,差不多此時,我還在背大學(xué)語文和視聽語言這幾門功課。畫的重點,散...
    五月過后閱讀 298評論 0 0
  • 請你允許我還是戲稱你為L君,L君是何許人也,是昨日樓里人人夸贊的年級學(xué)霸,是學(xué)校呼風(fēng)喚雨的二道杠,是所有小區(qū)孩子仇...
    棲楸閱讀 705評論 10 7
  • 我有幾樣愛好,藏茶陳酒打油。 茶雜詩野字俗,或者窖藏夠喉。
    大可化之閱讀 258評論 1 3

友情鏈接更多精彩內(nèi)容