智能卡COS芯片層模塊設計與測試方案研究
文章出處:http://hz-huyue.com 作者:張李靜 張秋燕 人氣: 發表時間:2011年09月28日
0 引 言
隨著科學技術的不斷進步,智能卡的應用已經越來越廣泛,涉及到人類生活的各個領域,如商業、醫療、保險、交通、社會公共事業等多種領域,所以如何設計一個高效穩定的智能卡操作系統口具有較高的社會意義。這里針對智能卡的硬件結構設計了操作系統的通信和硬件其他模塊,并提出了一種測試方案以檢測芯片底層模塊的穩定性。
1 智能卡操作系統概述
片內操作系統(Chip Operating System,COS)一般是緊緊圍繞著它所服務的智能卡的特點而開發的。與常見的微機上的操作系統相比,COS在本質上更加接近于監控程序。在此以具體開發實例說明卡片操作系統的基本問題,并提出一種可行可測試的芯片層設計方案及一種芯片底層的測試方案。
2 COS芯片模塊設計
COS底層模塊在設計時一般都是緊密結合智能卡內存儲器分區的情況,按照國際標準中所規定的一些功能進行設計、開發。
IS07816是接觸式智能卡必須遵循的國際規范其中IS07816—3主要描述接觸式智能卡的電信號和傳輸協議,其中包括各個觸點的電壓電流承受范圍、卡復位應答各個信息位的實際表示和T=0,T=1的傳輸協議。ISO/IEC 7816—3規定了IC卡的電氣特性和傳輸協議。包括該類卡和接口設備問的電源、電氣信號協議和信息交換協議。通信過程中,由接口設備給IC卡提供電源 (Vcc),復位信號(RST)和時鐘(CLK),卡和接口設備間通過I/O端口進行串行通信。
(1)通信模塊設計。根據T=0異步半雙工字符傳輸協議,Ic卡和接口設備之間以字符為單位(簡稱字符幀)進行傳輸,采用偶校驗,每個字符由10 b組成。傳輸字符幀之前,I/O線處于狀態z,第1 b為起始位(狀態A);后面8 b為數據位D1~D8;第10 b為偶校驗位,即8位數據和奇偶校驗位中1的個數為偶數。
串行通信是按位傳送的,每位信息寬度(持續時間)定義為基本時間單位ETU(Elementary Time Unit)。在復位應答期間的信息寬度稱為“初始ETU”,它等于372個時鐘周期,即1ETU=372/f。復位應答后的信息寬度稱為“當前ETU”,其計算公式為:當前ETU=(F/D)(1/f)。其中:F是時鐘頻率變換因數;D是比特率調整因數;f是時鐘頻率。
IC卡必須與相應的讀寫設備(IFD)通信。從這個角度講,智能IC卡操作系統的作用就是從讀寫設備(IFD)接收命令、執行命令并將結果返回讀寫設備 (IFD)。所以,通信管理功能模塊在操作系統中具有十分重要的作用。通信管理功能模塊主要實現以下幾種功能:實現某一通信協議的數據鏈路層的傳輸管理功能;實現ISO/IEC 7816標準規定的ATR(復位響應)等功能;為操作系統中的其他功能模塊提供相應接口。
按ISO/IEC 7816標準,IC卡和讀寫設備之間的通信協議有多種,一般一種卡片只支持某一種通信協議。下面以符合ISO/IEC 7816—3標準的T=0字符傳輸協議的智能IC卡為例介紹通信管理功能(支持其他通信協議的卡的通信管理功能與此相似)。
ICC上電之后,IFD將向ICC發送命令數據,在這樣一次典型的通信過程中,通信管理功能主要從事6個步驟的具體工作。如圖1所示。
圖1:6個步驟的具體工作
以下是卡片接收指令相關的源代碼:
(2)硬件模塊設計。智能卡COS上電后首先要進行芯片初始化,其主要設置以下幾個方面:芯片初始工作時的頻率,以及使用外頻還是內頻;芯片串口初始工作的速率(一般為“ll”的波特率)-芯片串口的工作模式(包括T=0還是T=1協議,正向傳輸還是反向傳輸,奇校驗還是偶校驗等);存儲器的初始映射方式。
智能卡芯片(以下以51系列智能卡芯片為例)一般包含幾十到幾百KB的FLASH,以1個頁面為單位進行擦除,根據FLASH編程寫的特點,也就是1能寫成0,而0不能寫成1,故在設計編程寫函數時為了保證寫數據的正確性,特采取如下的方式實現此功能:
第一步:取出要寫入地址的數據(為A),與要寫入的數據(為B)進行與操作(結果為C);
第二步:在要寫入數據的地址寫入數據(B);
第三步:取出寫人數據后的地址的數據與數據C進行比較。
對于51系列智能卡芯片,由于標準的8051對程序存儲器最大值支持64 KB,所以芯片采用BANK的編址方式。這時往往需要一個映射函數來實現不同BANK的跳轉。如果一款智能卡芯片的程序存儲器采用128 KB的FLASH用來存放COS和用戶數據。128 KB的FLASH均分4個32 KB的BANK,在這4個區域里,Commom區是3個Bnak的公共區域,即Commom區和每個32 KB的BANK都可以組成64 KB的連續空間。3個Bnak之間不能直接互相訪問,而必須調用Commom區里的程序才能實現相互的訪問。所以在創建工程時要把經常使用的程序和常數,如中斷入口函數、Bank Switch跳轉表等都放到Commom區里,這樣才能實現各個區域的相互訪問。
(3)異常保護模塊設計。IS07816—3規定2個連續字符上升沿之間的延遲至少是12 ETU,且2個連續字符上升沿之間的延遲應不超過9 600 ETU。所以COS在設計時要加入發送“60”來實現正常的通信。
發送“60”采用芯片定時器中斷的方式,設置定時器的工作模式,使用時鐘和的初始值。定時器的中斷服務程序的實現流程:關閉發送“60”定時器;發送“60”;打開發送“60”定時器。
操作系統的異常處理,此函數為COS進行異常狀態時調用的函數。進入異常狀態時,要關閉發送“60”的定時器,然后進入死循環狀態。
3 芯片測試方案設計
以下提出一種針對芯片模塊函數的測試方案。即嵌入式Testing COS。
(1)Testing COS測試平臺組成。T-COS平臺由MAIN.C文件、API.C文件、常量配置、A51文件以及芯片庫、LIB文件組成。其中,針對不同的芯片,main.c,api.C是相同的,而常量配置文件和芯片庫文件則不同,在使用時需要更改或更換。
另外,MAIN.C文件中的CommandInterpreter()命令解釋器函數是對發送命令的識別解釋(在此函數中,為所有需要測試的函數定義了指令嗎)。被測函數的函數體在API.C文件中。芯片庫在API.C文件中被具體調用。
此Testing COS可直接寫入智能卡中,設計思路是:采用直接APDU指令調用的形式,直接調用硬件模塊函數,如擦一頁函數。執行完指令,函數返回一個狀態字。
主程序是一個死循環,如下:
命令解釋器函數支持多個函數,為用戶對硬件的直接操作提供接口,可以通過發送APDU指令實現對芯片的多種操作。
例如:APDU:80 00 10 00 00表示擦除地址0x1000所在頁面。
APDU:80 0C 10 00 10表示從地址Oxl000開始讀取長度為Oxl0的數據。
(2)Tesling COS測試平臺的使用。T—COS測試 平臺測試流程,如圖2所示:
(3)Testing COS測試平臺局限性分析。T—COS平臺使用方便簡潔,易于觀察執行結果,但是其不能觀察過程。因此,在返回結果與預期結果不一致,或者出現錯誤的情況下,無法判斷產生錯誤的原因。在這種情況下,需要借助仿真器,跟蹤執行過程,最終找出產生問題的原因。
4 結 語
智能卡操作系統根本的部分就在于芯片底層各個模塊的穩固性。芯片層開發是電信、稅控等產品開發的重要組成部分之一,也是最基礎的部分。為了保證電信、稅控產品可以在不同芯片之間的平穩移植,需要對芯片層的開發提出一定的要求和標準,這樣可以保證上層開發的一致性。