移動支付NFC-SWP方案在SIM卡中的實(shí)現(xiàn)方法(三)
3 SWP連接方案在SIM卡中的設(shè)計(jì)
3.1 系統(tǒng)結(jié)構(gòu)
大容量SIM卡是一種支持大容量存儲、高速傳輸、具有新型應(yīng)用的智能卡。我們研發(fā)的大容量SIM卡項(xiàng)目基于ARM Secure Core SC100內(nèi)核,采用 AHB(高性能總線)+APB(高級外設(shè)總線)總線結(jié)構(gòu)。AHB總線提供高速的數(shù)據(jù)傳輸,它連接SIM卡內(nèi)部存儲器和高速外部接口(USB接口)。APB總線通過橋接器與AHB總線相連,SIM卡的低速接口(SWP接口、ISO7816接口)掛靠在外設(shè)總線上。
3.2 硬件設(shè)計(jì)
SWP硬件設(shè)計(jì)基于SWP標(biāo)準(zhǔn),即ETSI(歐洲電信標(biāo)準(zhǔn)協(xié)會)制訂的的TS 102 613。SWP控制器和SWP接口共同組成了SWP方案的硬件設(shè)備。SWP控制器負(fù)責(zé)處理物理層和數(shù)據(jù)鏈路層邏輯。圖4為硬件實(shí)現(xiàn)數(shù)據(jù)鏈路層邏輯時SIM卡內(nèi)部SWP控制器的結(jié)構(gòu)圖。
圖4 SWP控制器結(jié)構(gòu)圖
3.2.1 接收數(shù)據(jù)設(shè)計(jì)
在SIM卡和NFC芯片通信期間,SWP控制器在激活、掛起、去激活三種狀態(tài)間切換。交換數(shù)據(jù)時,處于激活狀態(tài)。Rx 解碼器不停地檢測Si信號,并將來自NFC芯片的單位數(shù)據(jù)解析為字節(jié)輸出。Frame resolve分析接收到的每一字節(jié)的數(shù)據(jù),若為7E(幀頭),則繼續(xù)接收數(shù)據(jù),直到接收到7F(幀尾),表明SWPC接收到一幀完整的數(shù)據(jù)。Frame resolve進(jìn)一步解析接收到的數(shù)據(jù)幀,首先根據(jù)MAC協(xié)議剝離幀頭和幀尾,然后根據(jù)接收方的生成多項(xiàng)式對數(shù)據(jù)幀進(jìn)行校驗(yàn)。如果數(shù)據(jù)正確,則識別出SHDLC數(shù)據(jù)幀的類型并作相應(yīng)處理;如果數(shù)據(jù)錯誤,則發(fā)送拒收幀,要求對方重新發(fā)送。對于正確的信息幀,SWP控制器提取信息幀的信息數(shù)據(jù)(包)寫入RX FIFO,并根據(jù)接收到的數(shù)據(jù)幀的字節(jié)個數(shù)設(shè)置控制器的狀態(tài)寄存器。SWP控制器每接收一幀數(shù)據(jù)就發(fā)起一個硬件中斷。
3.2.2 發(fā)送數(shù)據(jù)設(shè)計(jì)
SWP控制器發(fā)送數(shù)據(jù)和接收數(shù)據(jù)是相反的過程。如果上層應(yīng)用有數(shù)據(jù)要發(fā)送時,會把數(shù)據(jù)寫入TX FIFO。TX FIFO一旦檢測到FIFO有數(shù)據(jù),就啟動發(fā)送模塊把數(shù)據(jù)從TX FIFO中取出,經(jīng)Frame assemble按照SWP協(xié)議的SHDLC協(xié)議組裝信息幀,添加幀頭、幀尾、校驗(yàn)碼。把生成的MAC幀數(shù)據(jù)交給Tx編碼器,完成輸出數(shù)據(jù)的物理層組裝,將數(shù)據(jù)轉(zhuǎn)換成單個位電平輸出。
3.3 軟件驅(qū)動設(shè)計(jì)
SWP軟件設(shè)計(jì)基于SWP標(biāo)準(zhǔn)和HCP(主機(jī)控制協(xié)議)標(biāo)準(zhǔn)。HCP標(biāo)準(zhǔn)是SWP協(xié)議之上的標(biāo)準(zhǔn)協(xié)議,定義了數(shù)據(jù)鏈路層之上的協(xié)議層——HCP路由層、HCP消息層以及應(yīng)用層。底層SWP協(xié)議和上層HCP協(xié)議組成的協(xié)議棧共同完成NFC芯片與UICC通信的完整協(xié)議。
在大容量SIM卡中采用SWP方案,要實(shí)現(xiàn)ISO7816協(xié)議棧和SWP協(xié)議棧。SIM卡的操作系統(tǒng)使用μC/OS。μC/OS是一種結(jié)構(gòu)小巧、搶占式的實(shí)時操作系統(tǒng)。其內(nèi)核提供任務(wù)調(diào)度和管理、時間管理、任務(wù)同步和通信、內(nèi)存管理和中斷服務(wù)等功能。在軟件系統(tǒng)中,SWP軟件模塊是μC/OS的任務(wù)之一。
SWP任務(wù)依靠硬件中斷驅(qū)動,SWP任務(wù)沒有被激活前,一直處于等待中斷的狀態(tài)。通過SWP接口通信時,一旦檢測到存在射頻場,NFC芯片便被激活。NFC芯片發(fā)送Si信號給SIM卡,SIM卡檢測到Si電壓信號后,觸發(fā)si_act中斷通知軟件做好準(zhǔn)備通信。此時,軟件設(shè)置通信參數(shù),然后等待硬件建立物理鏈路成功的中斷。如果接收到init_sync中斷,軟件開始設(shè)置SHDLC協(xié)議的滑動窗口大小M,等待建立SHDLC鏈路的中斷。這個中斷帶有NFC芯片SHDLC層的滑動窗口的參數(shù)N。若M≥N,則SWP任務(wù)修改自己的滑動窗口大小為N,然后發(fā)送確認(rèn)幀,這樣便建立了SHDLC鏈路;若M<N,SWP任務(wù)發(fā)送帶有自己窗口參數(shù)的RESET幀給NFC芯片,繼續(xù)協(xié)商滑動窗口大小。
評論