NFC And NXP PN548 CHIP Porting介紹
ATU – Roger Yen
1
Jul. 2017
Agenda
 NFC 介紹
 NXP NFC
 Porting NXP NFC on Android OS
NFC 介紹
 近場通訊(英語:Near Field Communication,NFC),又稱近距
離無線通訊,是一種短距離的高頻無線通訊技術,允許電子裝置之間
進行非接觸式點對點資料傳輸,在十公分(3.9英吋)內交換資料。
這個技術由非接觸式射頻識別(RFID)演變而來,由飛利浦半導體
(現恩智浦半導體)、諾基亞和索尼共同研製開發,其基礎是 RFID
及互連技術。
在 13.56MHz 頻率運行於 10 公分距離內。其傳輸速度有 106 Kbit/
秒、212 Kbit/ 秒或者424 Kbit/ 秒三種。目前近場通訊已通過成為
ISO/IEC IS 18092 國際標準、ECMA-340 標準與 ETSI TS 102 190
標準,同時也兼容應用廣泛的 ISO 14443 Type-A、B 以及 Felica 標
準非接觸式智能卡的基礎架構。
RF Layers
 RF Layers
4
Type A(Mifare) Type B Type F(Felica)
標準 ISO14443-3A ISO14443-3B JIS X6319-4.
Communciation
Speed
106 kbit 106 kbit 212, 424 kbit
Coding 100 % ASK,
Manchester
Coding
10% ASK, NRZ
Coding
8 – 30 % ASK,
Manchester
Coding
Example App Taiwan Hami
Wallet (悠遊卡,
一卡通)
Paris Calypso is a
transport
application
implemented by
the Calypso
network.
Suica/Japan Rail
ASK
5
Manchester
6
NRZ
7
NFC Tag Types
 NFC Tag Types
8
Type 1 Type 2 Type 3 Type 4 Type 5
標準 ISO/IEC
14443A
ISO/IEC
14443A
JIS X 6319-
4
ISO/IEC
14443 (A
or B)
ISO/IEC
15693
Example
Tags
Innovision
Topaz
NXP Mifare
Ultralight
Sony Felica NXP
DESfire
TI 門禁
PS: Mifare Classic is not an NFC forum compliant tag, although reading and writing
of the tag is supported by most of the NFC devices as they ship with an NXP chip.
NFC技術主要的三個特點與優勢如下:
 傳輸距離短:NFC的操作距離短,且一次只和一台機器連結,因此擁
有較高的保密性與安全性,此設計可防止在不安全或未經授權的情況
下產生連結,於信用卡交易時也能避免被盜用。
 連接過程快速:NFC是一種相對簡單的協議,最初是針對某些直接的
點對點應用而開發,因此只須將裝置接近要連接的設備即可,連接所
需的時間少於0.1秒。
 可與電源或無電源產品通訊:NFC可運作在被動與主動模式,主動模
式需要兩邊設備都支援雙向資料交換(Duplex Data Exchange),
而被動作業模式則只需一端是主動收發器,它會為被動的另一方提供
能量,即便是被動寄主設備(如手機)沒電也可以工作。
9
NFC 工作模式和應用
10
接觸通過
(Touch
and Go)
接觸通過
(Touch
and Go)
接觸流覽
(Touch and
Explore )
接觸連接
(Touch
and
Connect )
接觸支付
(Touch
and Pay )接觸支付
(Touch
and Pay )
工作模式主被動
11
Secure Element
12
SWP with UICC
13
HCE
 HCE 的全名為 Host Card Emulation(主機板模擬),是 Google
在 2013 年底所發表的行動支付方案,它能讓 Kitkat 以上版本的
Android 手機利用內建的 NFC 功能完成感應付款。
14
NXP NFC
15
 PN548/PN553
名詞說明
 DH-NFCEE 是 NFC Execution Environment running on the DH
 UICC 是 Universal Integrated Circuit Card
 NCI 是 NFC Controller Interface
 JNI 是 Java Native Interface
 HCI 是 Host Controller Interface
 SHDLC 是 Simplified High Level Data Link Control
16
System Architect
17
NCI Control Message
18
NCI Data Message
19
NCI Packet Format(1/2)
 Common Packet Header
20
NCI Packet Format(2/2)
21
Porting NXP NFC on Android OS
 Android NFC
22
Android NFC with NXP NFC porting
23
Porting Guide
24
NXP
By
Platform
Third
party
Porting Kernel
 Kernel 移植
1. 依據平台增加驅動文件。
a. Kernel/drivers/pnxxx/pnxxx.c
b. Kernel/include/linux/nfc/pnxxx.h
同目錄下增加 Makefile 編譯規則 和 Kconfig 配置文件。
2. 在 Android 的平台中,需要在平台 DTS 文件中修改相對應的設置,
在 DTS 文件中設定 NFC VEN、Firmware Dload、IRQ,並且注册
I2C Address。還需要修改 arch/arm/configs 下的 deconfig 文件。
25
Purpose Entry Example file
Config CONFIG_PNXXX_NFC=
y
Arch/arm/configs/platform
_deconfig
Makefile Kernel/drivers/nfc/Makefil
e
NXP packet
 Device folder : 修改 Android.mk 檔
 external : 傳送 NCI command 給底層。
 Frameworks : 目錄下是 NFC 接口和
公用的 API。
 Hardware : NXP NFC include file 。
 Packages : Packages 是 NFC JNI
and Java implementation of NCI
stack。
26
NXP 上層 Porting 移植
上層移植(1/2)
1. external/libnfc-nci 删除後用 NXP 提供的 code 替換。
2. packages/apps/Nfc 删除後用 NXP 提供的 code 替換。
3. frameworks/base/core/java/android/nfc 删除後用 NXP 提供的 code 替換。
4. hardware/libhardware/include 刪除後用 NXP 提供的 code 替換。
5. frameworks/base/core/java/com/nxp 新增 NXP 提供的 code 。
6. frameworks/base/nxp-nfc-gsma 新增 NXP 提供的 code 。
7. frameworks/base/core/java/com/vzw 新增 NXP 提供的 code 。
8. 對比修改 frameworks/base/Android.mk 文件。主要是增加 NFC 的相關
API
27
上層移植(2/2)
 Device 下的 device-common.mk 為平台的 mk 。
28
Compilation Flags
 Build Flags Setting
29
Compilation Flags Description
NXP_CHIP_TYPE #variables for NFC_NXP_CHIP_TYPE
PN547C2 := 1
PN548C2 := 2
PN551 := 3
PN553 := 4
externallibnfc-nciAndroid.mk
D_CFLAGS += -DPN548C2=2
NXP_CHIP_TYPE := $(PN548C2)
externallibnfc-nci/halimpl/pn54x/Android.mk
D_CFLAGS += -DPN548C2=2
NXP_CHIP_TYPE := $(PN548C2)
packagesappsNfcncijniAndroid.mk
NXP_CHIP_TYPE := $(PN548C2)
NFC_NXP_ESE externallibnfc-nciAndroid.mk
externallibnfc-nci/halimpl/pn54x/Android.mk
packagesappsNfcncijniAndroid.mk
NFC_NXP_ESE:= FALSE
Build error fix
30
Path Modify
/build/core/task/check_boot_jars/package_whi
telist.txt
###########################
#class for nfc
com.nxp..*
com.vzw..*
Modify the configuration files
31
 libnfc-nxp.conf
Push files to device
32
 Push the configuration files ( libnfc-brcm.conf and libnfc-
nxp.conf ) in externallibnfc-ncihalimplpn54x directory to /etc
folder of target device
 Push firmware file ( libpn548ad_fw.so) to vendor/firmware
folder
Testing on Android
 Read/Write Tag
 Android Beam
33
34

Nfc

  • 1.
    NFC And NXPPN548 CHIP Porting介紹 ATU – Roger Yen 1 Jul. 2017
  • 2.
    Agenda  NFC 介紹 NXP NFC  Porting NXP NFC on Android OS
  • 3.
    NFC 介紹  近場通訊(英語:NearField Communication,NFC),又稱近距 離無線通訊,是一種短距離的高頻無線通訊技術,允許電子裝置之間 進行非接觸式點對點資料傳輸,在十公分(3.9英吋)內交換資料。 這個技術由非接觸式射頻識別(RFID)演變而來,由飛利浦半導體 (現恩智浦半導體)、諾基亞和索尼共同研製開發,其基礎是 RFID 及互連技術。 在 13.56MHz 頻率運行於 10 公分距離內。其傳輸速度有 106 Kbit/ 秒、212 Kbit/ 秒或者424 Kbit/ 秒三種。目前近場通訊已通過成為 ISO/IEC IS 18092 國際標準、ECMA-340 標準與 ETSI TS 102 190 標準,同時也兼容應用廣泛的 ISO 14443 Type-A、B 以及 Felica 標 準非接觸式智能卡的基礎架構。
  • 4.
    RF Layers  RFLayers 4 Type A(Mifare) Type B Type F(Felica) 標準 ISO14443-3A ISO14443-3B JIS X6319-4. Communciation Speed 106 kbit 106 kbit 212, 424 kbit Coding 100 % ASK, Manchester Coding 10% ASK, NRZ Coding 8 – 30 % ASK, Manchester Coding Example App Taiwan Hami Wallet (悠遊卡, 一卡通) Paris Calypso is a transport application implemented by the Calypso network. Suica/Japan Rail
  • 5.
  • 6.
  • 7.
  • 8.
    NFC Tag Types NFC Tag Types 8 Type 1 Type 2 Type 3 Type 4 Type 5 標準 ISO/IEC 14443A ISO/IEC 14443A JIS X 6319- 4 ISO/IEC 14443 (A or B) ISO/IEC 15693 Example Tags Innovision Topaz NXP Mifare Ultralight Sony Felica NXP DESfire TI 門禁 PS: Mifare Classic is not an NFC forum compliant tag, although reading and writing of the tag is supported by most of the NFC devices as they ship with an NXP chip.
  • 9.
    NFC技術主要的三個特點與優勢如下:  傳輸距離短:NFC的操作距離短,且一次只和一台機器連結,因此擁 有較高的保密性與安全性,此設計可防止在不安全或未經授權的情況 下產生連結,於信用卡交易時也能避免被盜用。  連接過程快速:NFC是一種相對簡單的協議,最初是針對某些直接的 點對點應用而開發,因此只須將裝置接近要連接的設備即可,連接所 需的時間少於0.1秒。 可與電源或無電源產品通訊:NFC可運作在被動與主動模式,主動模 式需要兩邊設備都支援雙向資料交換(Duplex Data Exchange), 而被動作業模式則只需一端是主動收發器,它會為被動的另一方提供 能量,即便是被動寄主設備(如手機)沒電也可以工作。 9
  • 10.
    NFC 工作模式和應用 10 接觸通過 (Touch and Go) 接觸通過 (Touch andGo) 接觸流覽 (Touch and Explore ) 接觸連接 (Touch and Connect ) 接觸支付 (Touch and Pay )接觸支付 (Touch and Pay )
  • 11.
  • 12.
  • 13.
  • 14.
    HCE  HCE 的全名為Host Card Emulation(主機板模擬),是 Google 在 2013 年底所發表的行動支付方案,它能讓 Kitkat 以上版本的 Android 手機利用內建的 NFC 功能完成感應付款。 14
  • 15.
  • 16.
    名詞說明  DH-NFCEE 是NFC Execution Environment running on the DH  UICC 是 Universal Integrated Circuit Card  NCI 是 NFC Controller Interface  JNI 是 Java Native Interface  HCI 是 Host Controller Interface  SHDLC 是 Simplified High Level Data Link Control 16
  • 17.
  • 18.
  • 19.
  • 20.
    NCI Packet Format(1/2) Common Packet Header 20
  • 21.
  • 22.
    Porting NXP NFCon Android OS  Android NFC 22
  • 23.
    Android NFC withNXP NFC porting 23
  • 24.
  • 25.
    Porting Kernel  Kernel移植 1. 依據平台增加驅動文件。 a. Kernel/drivers/pnxxx/pnxxx.c b. Kernel/include/linux/nfc/pnxxx.h 同目錄下增加 Makefile 編譯規則 和 Kconfig 配置文件。 2. 在 Android 的平台中,需要在平台 DTS 文件中修改相對應的設置, 在 DTS 文件中設定 NFC VEN、Firmware Dload、IRQ,並且注册 I2C Address。還需要修改 arch/arm/configs 下的 deconfig 文件。 25 Purpose Entry Example file Config CONFIG_PNXXX_NFC= y Arch/arm/configs/platform _deconfig Makefile Kernel/drivers/nfc/Makefil e
  • 26.
    NXP packet  Devicefolder : 修改 Android.mk 檔  external : 傳送 NCI command 給底層。  Frameworks : 目錄下是 NFC 接口和 公用的 API。  Hardware : NXP NFC include file 。  Packages : Packages 是 NFC JNI and Java implementation of NCI stack。 26
  • 27.
    NXP 上層 Porting移植 上層移植(1/2) 1. external/libnfc-nci 删除後用 NXP 提供的 code 替換。 2. packages/apps/Nfc 删除後用 NXP 提供的 code 替換。 3. frameworks/base/core/java/android/nfc 删除後用 NXP 提供的 code 替換。 4. hardware/libhardware/include 刪除後用 NXP 提供的 code 替換。 5. frameworks/base/core/java/com/nxp 新增 NXP 提供的 code 。 6. frameworks/base/nxp-nfc-gsma 新增 NXP 提供的 code 。 7. frameworks/base/core/java/com/vzw 新增 NXP 提供的 code 。 8. 對比修改 frameworks/base/Android.mk 文件。主要是增加 NFC 的相關 API 27
  • 28.
    上層移植(2/2)  Device 下的device-common.mk 為平台的 mk 。 28
  • 29.
    Compilation Flags  BuildFlags Setting 29 Compilation Flags Description NXP_CHIP_TYPE #variables for NFC_NXP_CHIP_TYPE PN547C2 := 1 PN548C2 := 2 PN551 := 3 PN553 := 4 externallibnfc-nciAndroid.mk D_CFLAGS += -DPN548C2=2 NXP_CHIP_TYPE := $(PN548C2) externallibnfc-nci/halimpl/pn54x/Android.mk D_CFLAGS += -DPN548C2=2 NXP_CHIP_TYPE := $(PN548C2) packagesappsNfcncijniAndroid.mk NXP_CHIP_TYPE := $(PN548C2) NFC_NXP_ESE externallibnfc-nciAndroid.mk externallibnfc-nci/halimpl/pn54x/Android.mk packagesappsNfcncijniAndroid.mk NFC_NXP_ESE:= FALSE
  • 30.
    Build error fix 30 PathModify /build/core/task/check_boot_jars/package_whi telist.txt ########################### #class for nfc com.nxp..* com.vzw..*
  • 31.
    Modify the configurationfiles 31  libnfc-nxp.conf
  • 32.
    Push files todevice 32  Push the configuration files ( libnfc-brcm.conf and libnfc- nxp.conf ) in externallibnfc-ncihalimplpn54x directory to /etc folder of target device  Push firmware file ( libpn548ad_fw.so) to vendor/firmware folder
  • 33.
    Testing on Android Read/Write Tag  Android Beam 33
  • 34.

Editor's Notes

  • #4 RFID : Radio Frequency Identification ETSI : European Telecommunications Standards Institute歐洲電信標準研究院 ECMA : 國際電信標準機構 ISO 18092 : NFC 標準 ISO 14443 : RFID 標準 非接觸式 ISO 7816 : 接觸式 IC 標準
  • #5 Type Vicinity Cards : ISO 15693 振幅偏移調變 IsoDep ISO-DEP ISO 14443-4 NRZ 不歸零
  • #9 Java Card Open Platform
  • #11 1.接觸通過(Touch and Go) 門禁管理、車票和門票等,用戶將儲存著票證或閘控密碼的設備靠近讀卡器即可,這個其實就是相當於一張採用RFID技術的IC卡。另外有一個極大的優點,那就是卡片透過非接觸讀卡器的RF域來供電,即便是裝置(如手機)沒電也可以工作。 2.接觸支付(Touch and Pay) 非接觸式移動支付,用戶將設備靠近嵌有NFC模組的POS機可進行支付,並確認交易,也就是把手機當作錢包囉。 3.接觸流覽(Touch and Explore) 可以作為作為非接觸讀卡器使用,比如從海報或者展覽訊息電子標籤上讀取相關訊息。 4.接觸連接(Touch and Connect) 如把兩個NFC設備相連接,進行點對點(Peer-to-Peer)資料傳輸,例如下載音樂、圖片互傳和交換通訊錄等。跟一般的紅外線、藍芽有些類似。跟藍芽相比有著功率較高、傳輸速度較低、傳輸距離短的缺點;不過也有著保密性高、耗電量低及設定程序較短的優點。
  • #13    1-     SE directly embedded inside the handset (MIDlet)    2-   SE on an external element such as micro SD Card    3-  SE stored in the SIM card so managed by the MNO (Cardlet)
  • #14 SWP(Single Wire Protocol;單線連接協議) European Telecommunications Standards Institute歐洲電信標準研究院 Technical Specification Universal Integrated Circuit Card (UICC)
  • #15 和 TSM 相比,HCE 的生態相對簡單許多,原因是 HCE 能透過主機在雲端模擬晶片所做的事,手機裡不用再加入安全元件(也就不需要安全元件商),電信商也不需要介入換發 SIM 卡(但還是要提供行動上網),因此 HCE 能讓行動產業和支付產業間的合作更為簡化。 TSM 的全文為 Trusted Service Manager(信託服務管理)
  • #16 Others :Qualcomm, Broadcom, Mstar, Ti
  • #17 通用集成电路卡片
  • #18 DH-NFCEE 是 NFC Execution Environment running on the DH,NFC 在主机上的运行环境 UICC 是 universal integrated circuit card,通用集成电路卡片(支持 NFC 的 SIM 卡) PN548 通过 SWP1 接口与 UICC 进行通信。 PN548 通过 SWP2 接口与 eSE 进行通信。 Simplified High Level Data Link Control NCI NFC Controller Interface HCI Host controller interface
  • #27 frameworks/base/core/Java/android/nfc 及frameworks/base/core/java/com/nxp/nfc 将会生成 /system/framework/ 下 framework.jar 的一部分 packages/apps/Nfc/nci 将会在 /system/lib 下生成 libnfc_nci_jni.so ,将在 /system/app/NfcNci 生成 NfcNci.apk external/libnfc-nci 将会在 /system/lib 下生成 libnfc_nci.so,将在 /system/lib/hw 下生成 nfc_nci_pn54x.default.so
  • #31 Google source code need.