999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

智能卡COS芯片層模塊設計與測試方案研究

2009-03-02 09:33:12張李靜張秋燕
現代電子技術 2009年4期
關鍵詞:指令設計

張李靜 張秋燕

摘 要:設計了智能卡操作系統底層驅動模塊和FLASH讀寫模塊,并提出針對這些模塊函數的測試方案。首先介紹智能卡操作系統的基本概念和智能卡硬件的基本結構;然后以接觸式智能卡為例,從芯片的硬件結構出發,提出COS操作系統通信和硬件模塊以及操作系統的異常處理機制的設計方案,并提出一種操作系統底層的測試方案,即Testing COS。這里從COS性能的角度出發設計底層模塊,并提出針對底層模塊函數的測試方案。

關鍵詞:操作系統;ISO7816-3;測試模塊;Testing COS

中圖分類號:TP368.1 文獻標識碼:A 文章編號:1004-373X(2009)04-027-04

Research on Design and Testing Scheme of Smart Card COS Chip Module

ZHANG Lijing,ZHANG Qiuyan

(Electronic and Communication Project Engineering,Tianjin University of Technology,Tianjin,300191,China)

Abstract:A bottom drive module of smart card and the read and write module of FLASH are designed,and a programme to test the functions of these modules is proposed.First,it introduces the basic concept of the COS and the basic construction of the chip′s hardware.Then,takes the contact chip as an example,proposes communication and hardware module and the anomaly handling mechanism of the COS based on the chip′s hardware.At the same time,it supplies a testing programme of bottom of the operating system,namely Testing COS.The bottom module is designed based on the performance of COS,and testing method of the bottom module is put forward.

Keywords:operating system;ISO7816-3;testing module;Testing COS

0 引 言

隨著科學技術的不斷進步,智能卡的應用已經越來越廣泛,涉及到人類生活的各個領域,如商業、醫療、保險、交通、社會公共事業等多種領域,所以如何設計一個高效穩定的智能卡操作系統[1]具有較高的社會意義。這里針對智能卡的硬件結構設計了操作系統的通信和硬件其他模塊[2],并提出了一種測試方案以檢測芯片底層模塊的穩定性。

1 智能卡操作系統概述

片內操作系統(Chip Operating System,COS)一般是緊緊圍繞著它所服務的智能卡的特點而開發的[3]。與常見的微機上的操作系統相比,COS在本質上更加接近于監控程序[4]。在此以具體開發實例說明卡片操作系統的基本問題,并提出一種可行可測試的芯片層設計方案及一種芯片底層的測試方案。

2 COS芯片模塊設計

COS底層模塊在設計時一般都是緊密結合智能卡內存儲器分區的情況,按照國際標準中所

規定的一些功能進行設計、開發。

ISO7816是接觸式智能卡必須遵循的國際規范[5]。其中ISO7816-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)[6]。所以,通信管理功能模塊在操作系統中具有十分重要的作用。通信管理功能模塊主要實現以下幾種功能:實現某一通信協議的數據鏈路層的傳輸管理功能;實現ISO/IEC 7816標準規定的ATR(復位響應)等功能;為操作系統中的其他功能模塊提供相應接口。

按ISO/IEC 7816標準,IC卡和讀寫設備之間的通信協議有多種,一般一種卡片只支持某一種通信協議。下面以符合ISO/IEC 7816-3標準的T=0字符傳輸協議的智能IC卡為例介紹通信管理功能(支持其他通信協議的卡的通信管理功能與此相似)。

ICC上電之后,IFD將向ICC發送命令數據,在這樣一次典型的通信過程中,通信管理功能主要從事6個步驟的具體工作。如圖1所示。

以下是卡片接收指令相關的源代碼:

BYTE General_Receive(void)

{

BYTE i,j,c1;

BYTE c2 =0;

BYTE XOR_PPS = 0;

WORD addr;

ccc:

CommandHead[0] = UART_IO_ReceiveByte(); //接收指令第1字節

if( (FlagByte & 0x80) == 0 )

{

if( CommandHead[0] == 0xff )//PPS選擇

{

CommandHead[1] = UART_IO_ReceiveByte();//接收PPS0

i = 1;

if(CommandHead[1]&0x40) i++;

if(CommandHead[1]&0x20) i++;

if(CommandHead[1]&0x10) i++;

for(j=2;i>0;j++,i--)

{

if(j == 5)

{

XOR_PPS = UART_IO_ReceiveByte();

break;

}

CommandHead[j] = UART_IO_ReceiveByte();

}

i = j;

c1= 0;

for(j=0;j

c1 ^= CommandHead[j];

if( c1 ^ XOR_PPS) //如果PPS校驗和錯誤,死鎖

{

for(;;) ;

}

else

{

UART_IO_SendString(CommandHead,i); //回送PPS數據,表示支持94

if(j == 5)

UART_IO_SendByte(XOR_PPS);

UART_Set_Baud(CommandHead[2]); //更改BAUD參數設置

FlagByte = FlagByte | 0x80;//設置PPS有效標志

goto ccc;

}

}

}

FlagByte = FlagByte | 0x80;//設置PPS有效標志

for(i=1;i<5;i++) CommandHead[i]=UART_IO_ReceiveByte(); //不是PPS,繼續接收后4字節指令頭數據

c1 = API_JudgeClaIns();

if( c1 != 0 ) return c1; //判斷CLA/INS

for(i=0;i<11;i++)

{

if(Command_INS== GetByte_C((ADWORD)(s2Command+i)) )

goto Receive_OK;//2S指令,5個頭接完就返回

}

addr = GetSysWord(S2_COMMADDR);

c1 = GetSysByte(addr);

for( i = 0;i

{

if(Command_INS==GetSysByte(addr+1+i))

goto Receive_OK;//2S指令,5個頭接完就返回

}

UART_IO_SendByte(Command_INS);//3S指令,先回送INS再接后續數據

for(i=0;i

CommandData[i]= UART_IO_ReceiveByte();

Receive_OK:

UART_RunWaitingEtuTimer(0x01); //打開計時器

return 0;

}

(2) 硬件模塊設計。

智能卡COS上電后首先要進行芯片初始化,其主要設置以下幾個方面:芯片初始工作時的頻率,以及使用外頻還是內頻;芯片串口初始工作的速率(一般為“11”的波特率);芯片串口的工作模式(包括T=0還是T=1協議,正向傳輸還是反向傳輸,奇校驗還是偶校驗等);存儲器的初始映射方式。

智能卡芯片(以下以51系列智能卡芯片為例)一般包含幾十到幾百KB的FLASH,以1個頁面為單位進行擦除,根據FLASH編程寫的特點,也就是1能寫成0,而0不能寫成1,故在設計編程寫函數時為了保證寫數據的正確性,特采取如下的方式實現此功能:

第一步:取出要寫入地址的數據(為A),與要寫入的數據(為B)進行與操作(結果為C);

第二步:在要寫入數據的地址寫入數據(B);

第三步:取出寫入數據后的地址的數據與數據C進行比較。

對于51系列智能卡芯片,由于標準的8051對程序存儲器最大值支持64 KB,所以芯片采用BANK的編址方式[7]。這時往往需要一個映射函數來實現不同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區里的程序才能實現相互的訪問[2]。所以在創建工程時要把經常使用的程序和常數,如中斷入口函數、Bank Switch跳轉表等都放到Commom區里,這樣才能實現各個區域的相互訪問。

(3) 異常保護模塊設計。

ISO7816-3規定2個連續字符上升沿之間的延遲至少是12 ETU,且2個連續字符上升沿之間的延遲應不超過9 600 ETU。所以COS在設計時要加入發送“60”來實現正常的通信[8]

發送“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指令調用的形式,直接調用硬件模塊函數,如擦一頁函數。執行完指令,函數返回一個狀態字。

主程序是一個死循環,如下:

void main(void)

{

UART_InitChip();

ClearRam(); //清全局變量

MakeATRSend(); //回送ATR(rom數據)

//主程序循環

while (1)

{

if( (General_Receive() ) == 0 )//數據接收錯誤,直接返回錯誤碼

{

CommandInterpreter(); //命令解釋器

}

else

{

FlagByte = FlagByte & 0xfd;

//接受數據錯誤,如果已經有返回數據標志位,清除

}

MakeData();//回送數據

}

}

命令解釋器函數支持多個函數,為用戶對硬件的直接操作提供接口,可以通過發送APDU指令實現對芯片的多種操作[9]

void CommandInterpreter()

{

switch(Command_INS)

{

case 0x00: g_bStatusByte = Api_ErasePage();break;

case 0x02: g_bStatusByte = Api_WriteByte();break;

case 0x06: g_bStatusByte = Api_Mem_Copy();break;

case 0x07: g_bStatusByte = Api_Mem_Set();break;

case 0x08: g_bStatusByte = Api_Mem_Cmp();break;

case 0x09: g_bStatusByte = Api_ReadByte();break;

case 0x0A: g_bStatusByte = Api_ReadWord();break;

case 0x0B: g_bStatusByte = Api_ReadTriByte();break;

case 0x0C: g_bStatusByte = Api_ReadData();break;

case 0x0D: g_bStatusByte = Api_ReadByte_C();break;

case 0x0E: g_bStatusByte = Api_ReadData_C();break;

case 0x16: g_bStatusByte = Api_PrgByte();break;

case 0x17: g_bStatusByte = Api_PrgData();break;

default : break;

}

}

例如:APDU:80 00 10 00 00 表示擦除地址0x1000所在頁面。

APDU:80 0C 10 00 10 表示從地址0x1000開始讀取長度為0x10的數據。

(2) Testing COS測試平臺的使用。

T-COS測試平臺測試流程,如圖2所示:

(3) Testing COS測試平臺局限性分析。

T-COS平臺使用方便簡潔,易于觀察執行結果,但是其不能觀察過程。因此,在返回結果與預期結果不一致,或者出現錯誤的情況下,無法判斷產生錯誤的原因。在這種情況下,需要借助仿真器,跟蹤執行過程,最終找出產生問題的原因。

4 結 語

智能卡操作系統根本的部分就在于芯片底層各個模塊的穩固性。芯片層開發是電信、稅控等產品開發的重要組成部分之一,也是最基礎的部分。為了保證電信、稅控產品可以在不同芯片之間的平穩移植,需要對芯片層的開發提出一定的要求和標準,這樣可以保證上層開發的一致性。

參 考 文 獻

[1]王愛英.智能卡技術.北京:清華大學出版社,1996.

[2][德]Rankl W.智能卡大全:智能卡的結構功能應用.北京:電子工業出版社,2002.

[3]張志剛,趙奎.智能卡操作系統研究和實例分析.企業技術開發,2005,24(9):20-22.

[4]亨德里.智能卡安全與應用.北京:人民郵電出版社,2002.

[5]International Standard ISO 7816-1,-2,-3,-4[S].Identification Cards:Integrated Circuits Cards with Contacts:1997.

[6]楊志峰,王志新.智能卡的操作系統:COS.現代電子技術,2005,28(8):91-93.

[7]李金良.智能卡操作系統(COS)編程語言及編譯器系統設計與實現.中國集成電路,2005(11):67-69.

[8]李翔.智能卡研發技術與工程實踐.北京:人民郵電出版社,2003.

[9]張利華.智能卡操作系統開發中的測試技術.計算機工程與設計,2004,25(6):901-902.

[10]李浩,謝桂海,王新鋒,等.一種基于零知識證明的RFID鑒別協議.現代電子技術,2006,29(17):23-25.

作者簡介 張李靜 1983年出生,天津理工大學電子信息與通信工程學院碩士。

張秋燕 1949年出生,天津理工大學電子信息與通信工程學院教授,研究生導師。

猜你喜歡
指令設計
聽我指令:大催眠術
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
殺毒軟件中指令虛擬機的脆弱性分析
電信科學(2016年10期)2016-11-23 05:11:56
一種基于滑窗的余度指令判別算法
主站蜘蛛池模板: 欧美精品二区| 国产精品欧美激情| 成人免费午夜视频| 精品一区二区三区水蜜桃| 国产拍在线| 亚洲色图欧美在线| 99re免费视频| 日本不卡在线视频| 亚洲精品爱草草视频在线| 国产青榴视频| 高清码无在线看| 亚洲日韩高清在线亚洲专区| 91久久青青草原精品国产| 亚洲日韩在线满18点击进入| 91无码视频在线观看| 国产熟女一级毛片| 国产三级精品三级在线观看| 在线观看国产精美视频| 日本久久网站| 思思热精品在线8| 欧美啪啪精品| 精品国产一区二区三区在线观看 | 亚洲高清在线天堂精品| 国产成人8x视频一区二区| 欧美a级完整在线观看| 91麻豆精品国产高清在线| 中文字幕人成乱码熟女免费| 日韩精品一区二区三区swag| 99激情网| 久久成人国产精品免费软件| 国产丝袜第一页| 免费va国产在线观看| 中文字幕天无码久久精品视频免费| 九色免费视频| 欧美日韩国产在线观看一区二区三区| 亚洲不卡影院| 日韩久草视频| 中国丰满人妻无码束缚啪啪| 免费精品一区二区h| 色老头综合网| 日韩黄色在线| 国产成人免费高清AⅤ| 91视频国产高清| 97国产精品视频自在拍| 久久人人妻人人爽人人卡片av| 国产凹凸视频在线观看| 国产高清在线观看| 国产亚洲精| 999国产精品永久免费视频精品久久 | 伊伊人成亚洲综合人网7777| 91精品视频网站| 国产一区二区三区日韩精品| 久青草网站| 中文字幕在线观| 久久精品国产91久久综合麻豆自制| 亚洲水蜜桃久久综合网站 | 亚洲bt欧美bt精品| 狠狠综合久久| 精品综合久久久久久97超人| 国产在线精彩视频论坛| 久久特级毛片| 波多野结衣中文字幕一区| 亚洲视频一区| 亚洲系列无码专区偷窥无码| 国产香蕉国产精品偷在线观看| 日本午夜三级| 无码专区第一页| 亚洲综合经典在线一区二区| 又爽又黄又无遮挡网站| 国产高潮流白浆视频| 亚洲视频三级| 欧美a在线视频| 久久99热这里只有精品免费看| 国产精品三级专区| 亚洲福利网址| 久夜色精品国产噜噜| 特级做a爰片毛片免费69| 欧美一级视频免费| 欧美国产菊爆免费观看| 中文字幕在线观看日本| 欧美国产日韩在线播放| 国产精品lululu在线观看|