PN7160雖已普遍使用,但開發初期進行軟體整合時,如沒有相關經驗,容易發生問題(雖然NXP有提供相關的整合文件);本篇將介紹軟體的整合步驟與問題分享。
另外,PN7160可以整合在Android與Linux上,本篇是介紹Android平台(目前支援A11-A13)。
- 確認硬體線路
在開始進行整合或是過程中,請務必與HW同仁確認相關線路是沒問題的。
- 抓取code
- Driver code
$ git clone https://github.com/NXPNFCLinux/nxpnfc.git drivers/nfc
與i2c與spi等相關的程式碼。
在platform端設定時請確認對應的address與每個pin對應之GPIO是否設置正確。
- AOSP adaptation
- 導入NFC patch
執行資料夾底下的install_NFC.sh,會自動將對應的patch導入。執行過中請確認是否有error message;如果有,請自行用手動修改,將patch內容進行整合。
•執行install_NFC.sh成功,沒有衝突發生。
•執行install_NFC.sh過程有發生錯誤,需手動修改。
- 修改.conf檔案
- Debug level在案子開發初期,建議全開。
###############################################################################
# Logging Levels. Suggested value for debugging is 0x03.
# NXPLOG_EXTNS_LOGLEVEL - Configuration for extns logging level
# NXPLOG_NCIHAL_LOGLEVEL - Configuration for enabling logging of HAL
# NXPLOG_NCIX_LOGLEVEL - Configuration for enabling logging of NCI TX packets
# NXPLOG_NCIR_LOGLEVEL - Configuration for enabling logging of NCI RX packets
# NXPLOG_FWDNLD_LOGLEVEL - Configuration for enabling logging of FW download functionality
# NXPLOG_TML_LOGLEVEL - Configuration for enabling logging of TML
NXPLOG_EXTNS_LOGLEVEL=0x03
NXPLOG_NCIHAL_LOGLEVEL=0x03
NXPLOG_NCIX_LOGLEVEL=0x03
NXPLOG_NCIR_LOGLEVEL=0x03
NXPLOG_FWDNLD_LOGLEVEL=0x03
NXPLOG_TML_LOGLEVEL=0x03
- 依照案子設定,調整clock來源與頻率。
###############################################################################
# System clock source selection configuration
#define CLK_SRC_XTAL 1
#define CLK_SRC_PLL 2
NXP_SYS_CLK_SRC_SEL=0x02
clock來源是外掛XTAL,NXP_SYS_CLK_SRC_SEL要設置為0x01;由內部PMIC提供則為0x02。
###############################################################################
# System clock frequency selection configuration
#define CLK_FREQ_13MHZ 1
#define CLK_FREQ_19_2MHZ 2
#define CLK_FREQ_24MHZ 3
#define CLK_FREQ_26MHZ 4
#define CLK_FREQ_38_4MHZ 5
#define CLK_FREQ_52MHZ 6
NXP_SYS_CLK_FREQ_SEL=0x02
在clock來源是PMIC的狀況下,需依照硬體狀況設置對應的頻率。
- platform相關的設定
不同平台會有不同之設定,請務必依照平台規則進行整合。
- compile code
將文件提到之所有內容進行整合後,確認是否能編譯image成功;如有error再依照message進行修改,一般error都是與平台相關設定整合有遺漏。
後續將編譯完成的image進行燒錄,確認NFC是否能正常enable/disable;如有遇到問題可先自行確認log狀況,後續再與NFC vendor進行討論。
參考來源