劉 輝,袁國良
(上海海事大學 信息工程學院,上海 201306)
隨著現代社會科學技術的發展,人們對于移動產品的便攜性和便利性和高效性的要求越來越高。SIM卡作為智能卡中特殊的一種,采用標準的接觸式IC卡,符合ISO7816標準規范,它沿襲了智能卡在安全中的特色,在移動商務中扮演著很重要的角色[1]。因此SIM卡的應用范圍也變得越來越廣,可以應用于金融、便捷支付等高端應用領域。但是對于已經投放到市場上的卡片,運營商對于鑒別是哪個供應商供應的產品比較困難,而且對于供應商自己來說對于自己生產的卡片進行質量檢測也是十分必要的。鑒于ARM的高性價比,本文采用一種基于ARM7TDMI內核的CPU STR711FR2作為處理器作為系統核心,設計一款SIM卡讀卡系統,它可以兼容符合7816協議的A,B,C 3種卡片,用來讀出被芯片固化在芯片內部的信息,以便來確認芯片的生產商以及對芯片實現質量檢測。
讀卡系統主要由讀卡模塊、串口通信模塊、USB通信模塊、JTAG下載調試模塊以及相應的時鐘和復位電路模塊和上層軟件組成。主控電路由ST公司的STR711FR2及其外圍電路構成,主要實現對命令的發送和對收到的數據進行傳輸和處理。系統采用接觸式的工作方式,把芯片插入到接口插槽中,通過主控芯片發送指令完成對卡片數據的讀取,再把得到數據通過串口通信模塊把數據傳輸到PC機上,通過上層軟件對所接收到的數據進行處理和判斷,再把結果在PC機上面顯示。系統結構如圖1所示。

圖1 系統結構圖Fig.1 System architecture
STR711FR2是ST公司的一款基于ARM7TDMI內核、高性能、低成本、低功耗的微控制器。它內嵌256+16 k的Flash以及64 k的RAM,具有豐富的外設:如智能卡ISO-7816-3接口、USB 2.0接口以及UART接口和豐富的IO接口等[2]。
本系統STR711FR2作為主處理器,使用USB接口用來給系統供電,同時作為備用數據通道;JTAG接口用來給系統進行調試和下載固件;7816智能卡接口作為插卡口;串口等用來傳輸讀到的數據。系統由USB接口供電;STR711FR2由外部提供4 M晶振提供時鐘,32.768 k晶振作為輔助時鐘同時提供給內部的實時時鐘[3]。STR711FR2與LTC1955之間通過串口發送不同的指令,來判斷插入卡片的類型,以便產生卡片相應的電壓,然后發命令把數據讀出來,再通過串口通信模塊把數據傳輸到PC機上面顯示。硬件平臺構架如圖2所示。

圖2 硬件平臺架構圖Fig.2 Hardware platform
USB接口部分電源電壓為5 V,最大電流可以達到500 mA,系統中的MCU和Reader是兩個主要的耗能元器件,其中STR711FR2滿負荷工作電流為200mA,LTC1955滿負荷工作電流不超過為100 mA。LTC1955以及STR711FR2額定電壓為3.3 V,因此需要將5 V轉換成3.3 V電壓,轉換芯片采用ASM1117S33。經過轉換之后系統完全可以使用USB進行供電。另外STR711FR2支持USB2.0傳輸協議,所以可以將USB的差分線用1.5 kΩ的電阻進行弱上拉,分別與主MCU的42腳和43腳相連。以此來支持USB的高速傳輸模式,因此此部分也可以作為備用的數據傳輸通道。電路如圖3所示。

圖3 USB部分電路Fig.3 USB circuit
SIM卡的引腳定義符合ISO7816帶觸電集成電路卡規范,它實際上是一個裝有微處理器的芯片卡,包括5個模塊并且具有機卡分離接口,通信安全可靠成本較低。其中C1腳是電源 VCC、C2腳為復位 RST、C3腳為時鐘 CLK、C4腳不接、C5腳為接地GND、C6腳編程電壓VPP、C7腳為數據I/O口、C8腳不接。除了C4和C8腳已被國際標準組織擴展為新一代高速SIM卡接口,C6高壓編程引腳已經失去作用,因為SIM卡可以不必外部提供VPP信號即可在內部實現EEPROM的擦寫功能[4-5]。
7816接口部分采用 Linear公司的專用芯片LTC1955,LTC1955支持ISO7816-3協議,具有很好的電源管理和控制能力,具有串行數據接口,可以通過它進行數據控制和狀態控制,能夠在出現電氣錯誤的時候實現自動的掉電。內置電壓崩,能夠產生1.8 V、3 V以及5 V電壓,因此能夠兼容7816的A,B,C3種卡。卡片接口能夠通過自動震蕩電路產生的偵測通道自動偵測卡片類型,串口根據偵測到的信息發送命令可以實現卡片類型的選擇,不同命令狀態位可以選擇不同類型的卡。本系統設計只采用了一個B卡插槽,芯片的32腳和31腳分別為同步和非同步引腳,分別于主控芯片的P1.8和P1.9腳連接,通過中控IO發送同步和非同步的命令,來選擇傳輸模式。數據腳DATA與主控芯片的P1.15腳相接,用來傳送接收到的數據,RIN復位腳信息通過主控芯片的P1.14控制發送。電路設計如圖4所示。

圖4 7816接口電路Fig.4 7816 Interface circuit
通信接口是系統與外界進行信息交互的通道和橋梁,因此通信接口的設計在系統中是必不可少的,通過目前主流的幾種通信方式設計比較,本系統采用了UART方式。UART電路的關鍵是實現STR711FR2與PC電平匹配,PC機電平是12 V而STR711FR2的電平為3.3 V,這就需要進行電平轉換,目前此類電平轉換芯片有很多,如MAX3232及ST3232等等,本系統采用MAX3232芯片進行轉換,MAX3232不僅能保證主機需要,而且單一3.3 V供電,可以同時實現發送轉換和接受轉換功能[6]。芯片提供了2個UART通道,可以接2個RS3232,本系統只采用一個UART,只用選擇第一個通道,另外一個不接。其電路設計如圖5所示。

圖5 UART接口電路Fig.5 UART Interface circuit
SIM卡符合國際標準7816協議規范,因此本檢測系統分為兩個部分,第一部分是對于7816協議通信的固件部分,第二部分是上層軟件部分。對于固件部分的操作應該包括接口設備激活電路,冷復位啟動卡片應答、卡片與接口設備進行信息交換和接口設備釋放電路卡片下電3個過程。
當卡片和接口設備物理連接以后,為啟動機械連接的卡的互操作,接口設備需要激活卡片,初始時,所有端口皆處于低電平(L)態,電壓范圍 0~0.4 V;VCC 電源電壓先上電(H態),VCC電源端穩定一段時間后,將IO端口置為接收方式(H態),電路的激活順序結束,卡片進入復位過程。在T a時間CLK開始提供時鐘信號;卡應在時鐘信號開始后至少200個時鐘周期之內(延時時間為T a)置IO口狀態為接受狀態。同時,從T a開始,RST至少保持400個時鐘周期(延時時間為T b)的L態,即保持到時間T b后RST置狀態H,為了保證卡片正常復位,卡片要在400~40 000個時鐘周期之內(延時時間為T c)作出應答,即從IO口返回ATR。復位過程結束。時序如圖6所示。

圖6 激活復位過程時序圖Fig.6 Activation and cold reset
上電后,接口設備可根據卡片返回的ATR來選擇工作模式,如果ATR中規定了TA2,則接口設備根據新的參數啟動與卡片信息交換方式;如果ATR中沒有規定TA2,則接口設備和卡之間可進行PPS過程或者接口設備根據TD1中的參數(T)選擇采用哪種通信協議。如果接口設備與卡片停止數據交換,并且IO口保持H狀態至少1 860(T g)個clock,則接口設備可在T e時刻停止時鐘,此時VCC保持供電,RST保持高電平。時鐘停止時序如圖7所示。

圖7 時鐘停止時序圖Fig.7 Clock stop
信息交互完畢卡片進行釋放,RST置狀態L;CLK置狀態L(除非時鐘已經停止在狀態L上)IO置狀態L;V CC被釋放。
上層軟件采用C++進行設計,由于卡片在剛剛出廠還沒有交付給運營商使用的時候,ATR中有時候也會被寫入生產商的相關信息,可以根據此信息來檢測芯片,但是一旦被運營商投入市場,那么就會被下載運營商的cos,此時ATR也變成了運營商的了,那么就無法根據ATR來進行檢測。但是卡片出廠的時候卡商會將自己的cos下載到NVR中,其中包含了卡片生產商的標志信息,例如卡片的商業代碼、生產時間、lot號以及坐標等等。而這些內容一旦下載進去就不能被修改,因此可以據此來檢測。檢測流程如圖8所示。

圖8 軟件檢測流程Fig.8 Software flaw
文中給出了一種基于ARM7內核的SIM卡檢測系統,通過測試可以順利的實現檢測功能,本系統采用標準接觸式卡片設計,兼容7816的A、B、C 3種卡,為接觸和以后升級的非接觸式卡片讀取信息提供了可行的平臺。
[1]周頡男,石江宏,王宏.SIM讀卡器的研究與設計[J].現代電子技術,2007,247(8):51-55.ZHOU Jie-nan,SHI Jiang-hong,WANG Hong.Research and design on subscriber identity module reader[J].Modern Electronics Technique,2007,247(8):51-55.
[2]顏廷秦,崔明,周昌熊,等.ARM處理器STR711在汽車信息通信系統中的應用 [J].蘇州職業大學學報,2008,19(1):95-98.YAN Ting-qin,CUI Ming,ZHOU Chang-xiong,et al.The application of ARM processor STR711 with superior function in driving information communication system[J].Journal of Suzhou Vocational University,2008,19(1):95-98.
[3]徐鑫.基于STR711的嵌入式RFID終端的設計與應用[D].上海:東華大學,2009.
[4]王琪,王東輝,李云崗.一種CLF芯片與SIM卡芯片連接方法[J].微計算機應用,2010,32(4):73-76.WANG Qi,WANG Dong-hui,LI Yun-gang.A novel method to connect CLF chip and SIM chip[J].Microcomputer Applications,2010,32(4):73-76.
[5]王卓人,鄧晉鈞,劉宗祥.IC卡的技術與應用[M].北京:電子工業出版社,1999.
[6]曾孝平,任家峪,熊東.基于RFID的非接觸式IC卡讀卡器設計[J].計算機測量與控制,2010,18(10):2357-2359.ZENG Xiao-ping,REN Jia-yu,XIONG Dong.Design of contactless IC card interrogator based on RFID[J].Computer Measurement&Control,2010,18(10):2357-2359.