一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)嵌入式Linux工控主板如何實(shí)現(xiàn)ISO7816協(xié)議

英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2019-09-27 16:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

ISO7816是一套協(xié)議標(biāo)準(zhǔn),這套協(xié)議不僅規(guī)定了智能IC卡的機(jī)械電氣特性,而且還規(guī)定了智能IC卡的應(yīng)用方法。智能IC卡的主要用途可歸為身份識(shí)別、支付安全、加密/解密和信息存儲(chǔ)四個(gè)方面。智能IC卡已經(jīng)廣泛應(yīng)用到金融、電信、電子商務(wù)等領(lǐng)域,我們平常使用的IC電話卡,充值電卡、燃?xì)饪ê?a target="_blank">手機(jī)中的SIM卡都屬于智能卡的范疇。

ISO7816協(xié)議標(biāo)準(zhǔn)中,將協(xié)議模型定義為4層:物理層、數(shù)據(jù)鏈路層、傳輸層、應(yīng)用層。

? 物理層:定義了位交換,主要定義波特率和字符幀的傳輸方式

? 數(shù)據(jù)鏈路層:定義了字符交換,傳輸?shù)臋z錯(cuò)與糾錯(cuò)等

? 傳輸層:定義了針對(duì)協(xié)議的面向應(yīng)用的提出報(bào)文傳輸

? 應(yīng)用層:定義報(bào)文交換的內(nèi)容

當(dāng)ISO7816在基于英創(chuàng)的工控主板上應(yīng)用時(shí),可將ISO7816智能卡簡(jiǎn)單的理解成一個(gè)串口設(shè)備。串口的物理連接和系統(tǒng)驅(qū)動(dòng)程序?qū)崿F(xiàn)了ISO7816協(xié)議標(biāo)準(zhǔn)中的物理層和數(shù)據(jù)鏈路層(如圖1中黃線以下部份)。應(yīng)用程序負(fù)責(zé)數(shù)據(jù)的解析與應(yīng)用,實(shí)現(xiàn)ISO7816協(xié)議標(biāo)準(zhǔn)的傳輸層與應(yīng)用層(如圖1中黃線以上部份)。

圖1中黃線與紅線之間是英創(chuàng)的工控主板,提供了硬件接口、操作系統(tǒng)支持和串口驅(qū)動(dòng)支持,既實(shí)現(xiàn)ISO7816協(xié)議的數(shù)據(jù)鏈路層和物理層。用戶將ISO7816智能卡正確的連接到工控主板的串口上,編寫(xiě)應(yīng)用程序,通過(guò)調(diào)用系統(tǒng)API函數(shù)就能實(shí)現(xiàn)對(duì)ISO7816智能卡的訪問(wèn)。

圖 1:英創(chuàng)工控主板連接ISO7816智能卡

本文將以英創(chuàng)工控主板EM9280連接基于ISO7816協(xié)議的ESAM模塊為例,討論用戶需要做的兩項(xiàng)工作:

1、將智能卡連接到工控主板的串口

2、應(yīng)用程序如何訪問(wèn)已連接到系統(tǒng)中的智能卡

1、智能卡(ESAM)的硬件連接

如圖2中的U2所示,ESAM模塊需要一個(gè)工作時(shí)鐘和一個(gè)復(fù)位信號(hào),通過(guò)一位IO與主機(jī)連接實(shí)現(xiàn)數(shù)據(jù)通訊。ESAM的復(fù)位信號(hào)使用EM9280的一位GPIO控制,工作時(shí)鐘使用EM9280的一路PWM。ESAM模塊使用單個(gè)I/O與主機(jī)通訊,自動(dòng)切換收發(fā)方向,EM9280提供的是標(biāo)準(zhǔn)3線串口,所以沒(méi)有辦法與ESAM直接連接。圖2中利用74HCT157,將串口的RXD,TXD模擬成ISO7816單IO通訊模式,利用串口的RTS#信號(hào)實(shí)現(xiàn)數(shù)據(jù)收發(fā)方向的自動(dòng)切換。當(dāng)EM9280發(fā)送數(shù)據(jù)時(shí),RTS#輸出低電平,選通74HCT157的A組,數(shù)據(jù)通過(guò)TXD6→2A→2Y輸出到I/O腳。而1A通過(guò)R2上拉到高電平,所以1Y也是高電平,RXD6不會(huì)收到任何數(shù)據(jù)。數(shù)據(jù)發(fā)送完成后,RTS#被串口驅(qū)動(dòng)程序自動(dòng)將置為高電平,74HCT157的B組選通,ESAM模塊發(fā)送的數(shù)據(jù)由I/O→1B→1Y到達(dá)RXD6,串口接收由ESAM模塊發(fā)來(lái)的數(shù)據(jù)。此時(shí)2B由R2上拉到高電平,所以2Y亦是高電平,不會(huì)影響I/O上的數(shù)據(jù)傳輸。

圖 2:EM9280連接ESAM模塊

2、應(yīng)用程序設(shè)置方法

對(duì)應(yīng)用程序來(lái)講,與ESAM通訊類似于RS485的半雙工通訊,只是在開(kāi)始串口通訊之前,針對(duì)ESAM模塊,還需要一些額外的設(shè)置。

2.1 產(chǎn)生ESAM工作時(shí)鐘

ESAM模塊缺省工作時(shí)鐘是其通訊波特率的372倍,我們使用EM9280的PWM1來(lái)產(chǎn)生ESAM的工作時(shí)鐘。


// Generate clock for ISO7816.
m_hPWM = CreateFile(_T('PWM1:'), // name of device
GENERIC_READ|GENERIC_WRITE, // desired access
FILE_SHARE_READ|FILE_SHARE_WRITE, // sharing mode
NULL, // security attributes (ignored)
OPEN_EXISTING, // creation disposition
FILE_FLAG_RANDOM_ACCESS, // flags/attributes
NULL); // template file (ignored)
if( m_hPWM == INVALID_HANDLE_VALUE )
{
goto InitClearUp;
}
PWM_INFO PwmInfo;
PwmInfo.dwFreq = dwFI_DI_Ratio * dwBaud; // = 372 * 9600 = 3.5712MHz
PwmInfo.dwDuty = 50; // 50%
PwmInfo.dwResolution = 1;
dwNumberOfBytesWritten = 0;
WriteFile( m_hPWM, &PwmInfo, sizeof(PWM_INFO), &dwNumberOfBytesWritten, NULL);

2.2 打開(kāi)串口并使能RTS_TOGGLE功能

使用標(biāo)準(zhǔn)的文件操作函數(shù)CreateFile打開(kāi)串口設(shè)備,同時(shí)通過(guò)SetCommState函數(shù)設(shè)置串口通訊相關(guān)參數(shù)。此時(shí)ESAM模塊的通訊波特率設(shè)置為9600bps,8位數(shù)據(jù)位,1位停止位,偶校驗(yàn)。

DCB dcb;
GetCommState( m_hSer, &dcb );
dcb.BaudRate = Baud; // 波特率 = 9600
dcb.ByteSize = Databits; // 數(shù)據(jù)位 = 8
dcb.Parity = EVENPARITY; // 偶校驗(yàn)
dcb.StopBits = ONESTOPBIT; // 停止位 = 1
SetCommState(m_hSer, &dcb);

在圖2中,將3線串口模擬成單線的ISO7816模式,使用串口的RTS作為數(shù)據(jù)傳輸方向控制信號(hào)。EM9280可以為打開(kāi)的串口任意指定一位GPIO作為其RTS信號(hào)線,實(shí)現(xiàn)方法如下:

DCB dcb;
BOOL bRet;
bRet = DeviceIoControl(m_hSer, // 已經(jīng)打開(kāi)的串口設(shè)置句柄
IOCTL_SET_UART_RTS_PIN, // I/O control code
&dwRTSPin, // 選擇作為RTS的GPIO,如圖2中選擇GPIO7
sizeof(DWORD),
NULL,
0,
NULL,
NULL);
if( bRet )
{
GetCommState( m_hSer, &dcb ); // Get dcb
dcb.fRtsControl = RTS_CONTROL_TOGGLE; // Enable RTS Toggle
SetCommState(m_hSer, &dcb); // update dcb
}

2.3 數(shù)據(jù)收發(fā)

應(yīng)用程序可以創(chuàng)建一個(gè)線程,然后等待串口事件接收串口數(shù)據(jù)。

應(yīng)用程序調(diào)用WriteFile函數(shù)發(fā)送數(shù)據(jù),但需要特別注意ISO7816傳輸協(xié)議中關(guān)于“保護(hù)時(shí)間”要求,協(xié)議中規(guī)定兩個(gè)連續(xù)的字符幀之間必需要有一個(gè)最小時(shí)間間隔,即保護(hù)時(shí)間,當(dāng)波特率為9600bps時(shí),保護(hù)時(shí)間最小大約為200uS。

如果直接調(diào)用WriteFile將要發(fā)送的數(shù)據(jù)一次性發(fā)送

WriteFile( m_hSer, Buf, len, &dwLen, NULL);

在EM9280上測(cè)得的字符間時(shí)間間隔大約為30uS,顯示不能滿足協(xié)議保護(hù)時(shí)間的要求。為了達(dá)到保護(hù)時(shí)間的要求,可以采用下面的方式,將需要發(fā)送的數(shù)據(jù)一個(gè)字節(jié)一個(gè)字節(jié)的發(fā)送。

for( int i; i

WriteFile( m_hSer, Buf+i, 1, &dwLen, NULL);

上面的for循環(huán)每調(diào)用一次WriteFile函數(shù),只發(fā)送1個(gè)字節(jié),在EM9280上測(cè)得的字符間時(shí)間間隔最小大約為500uS,滿足協(xié)議保護(hù)時(shí)間的要求,實(shí)際測(cè)試也能正常與ESAM模塊通訊。

如果主機(jī)串口硬件沒(méi)有支持ISO7816模式,如英創(chuàng)公司工控主板EM9170、EM9283等,就可以按本文的方法,增加很少的幾個(gè)器件就能連接ISO7816設(shè)備。

英創(chuàng)公司Atmel系列工控主板,CPU的串口本身就支持ISO7816模式,可直接連接IS07816智能卡。我們實(shí)現(xiàn)了相應(yīng)的驅(qū)動(dòng)程序,相關(guān)的使用方法可參考下面的文章:

ISO7816通訊協(xié)議在工控主板EM9160中的實(shí)現(xiàn)方案

工控主板EM9161對(duì)ISO7816協(xié)議的支持

英創(chuàng)嵌入式Linux工控主板如何實(shí)現(xiàn)ISO7816協(xié)議

我們還提供了ESAM模塊完整的測(cè)試程序,需要的用戶可與我們聯(lián)系獲取相關(guān)代碼。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11509

    瀏覽量

    213742
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6101

    瀏覽量

    36300
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ISO7816 智能卡標(biāo)準(zhǔn)下載

    ISO7816 智能卡標(biāo)準(zhǔn)下載 ISO 7816-4 Smart Card Standard: Part 4: Interindustry Commands for Interchange[此貼子已經(jīng)被作者于2008-
    發(fā)表于 05-14 23:27

    創(chuàng)支持Linux高級(jí)客戶自行移植內(nèi)核

    上市)  該項(xiàng)服務(wù)具體說(shuō)明和實(shí)施流程參見(jiàn):支持客戶進(jìn)行Linux移植  需要該服務(wù)的客戶需與創(chuàng)簽訂技術(shù)保密協(xié)議,并承諾嚴(yán)格履行協(xié)議
    發(fā)表于 01-18 13:52

    創(chuàng)工控主板產(chǎn)品選型指南

      成都創(chuàng)信息技術(shù)有限公司是一家專注于嵌入式工控主板研發(fā)、銷售與服務(wù)的高科技公司,在嵌入式領(lǐng)域
    發(fā)表于 02-28 11:28

    創(chuàng)嵌入式主板的無(wú)線通訊解決方案

    WiFi模塊。ETA6210模塊繼續(xù)保持了PPP撥號(hào)模式,使得無(wú)論是Linux平臺(tái)的主板還是CE平臺(tái)的主板,都能方便的使用。  下表列出了當(dāng)前創(chuàng)
    發(fā)表于 03-24 14:00

    創(chuàng)工控主板通過(guò)PPI協(xié)議連接西門(mén)子PLC

    ,但西門(mén)子并未公開(kāi)PPI協(xié)議內(nèi)容。Modbus是工業(yè)控制現(xiàn)場(chǎng)廣泛應(yīng)用的通訊協(xié)議,在嵌入式領(lǐng)域,嵌入式主板通常采用Modbus與PLC相連,
    發(fā)表于 10-19 16:14

    創(chuàng)主板中預(yù)裝Modbus通訊協(xié)議

    modbus_Master.h,與原來(lái)的靜態(tài)庫(kù)保持不變,相應(yīng)各個(gè)API函數(shù)的說(shuō)明請(qǐng)參見(jiàn)創(chuàng)網(wǎng)站技術(shù)天地文章《Wince下的Modbus主控通訊協(xié)議》、《
    發(fā)表于 10-20 10:40

    ISO7816?(part?1-3)異步

    ISO7816 (part 1-3) asynchronous smart card information?- Contents -I ) Introduction of the ISO7816 standardII ) Summary
    發(fā)表于 03-11 13:14 ?5211次閱讀
    <b class='flag-5'>ISO7816</b>?(part?1-3)異步

    創(chuàng)信息技術(shù)工控主板EM9161對(duì)ISO7816協(xié)議的支持概述

    在當(dāng)前的金融POS終端及相關(guān)領(lǐng)域,ISO7816通訊協(xié)議得到了廣泛應(yīng)用。創(chuàng)工控主板EM916
    的頭像 發(fā)表于 11-17 11:50 ?2164次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b>信息技術(shù)<b class='flag-5'>工控</b><b class='flag-5'>主板</b>EM9161對(duì)<b class='flag-5'>ISO7816</b><b class='flag-5'>協(xié)議</b>的支持概述

    創(chuàng)信息技術(shù)ISO7816通訊協(xié)議工控主板EM9160介紹

    在新的國(guó)家電網(wǎng)智能終端相關(guān)標(biāo)準(zhǔn)中,規(guī)定了通過(guò)專門(mén)的加密芯片來(lái)保證設(shè)備數(shù)據(jù)安全性的方法,而設(shè)備主控單元與加密芯片采用了廣泛應(yīng)用的ISO7816通訊協(xié)議。
    的頭像 發(fā)表于 11-18 09:56 ?2785次閱讀

    創(chuàng)信息技術(shù)嵌入式Linux主板EM9160支持ISO7816通訊協(xié)議介紹

    新的技術(shù)需求,我們對(duì)嵌入式Linux主板EM9160的串口驅(qū)動(dòng)進(jìn)行了升級(jí),使其多個(gè)串口都可支持ISO7816協(xié)議,為客戶進(jìn)行智能終端整機(jī)設(shè)計(jì)
    的頭像 發(fā)表于 11-18 10:09 ?2625次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b>信息技術(shù)<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>主板</b>EM9160支持<b class='flag-5'>ISO7816</b>通訊<b class='flag-5'>協(xié)議</b>介紹

    創(chuàng)信息技術(shù)嵌入式Linux工控主板uboot命令簡(jiǎn)介

    成都利公司提供的EM9X60系列嵌入式Linux工控主板,均預(yù)裝了Linux2.6.30內(nèi)核操
    的頭像 發(fā)表于 01-15 14:01 ?1616次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b>信息技術(shù)<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>工控</b><b class='flag-5'>主板</b>uboot命令簡(jiǎn)介

    創(chuàng)信息技術(shù)EM9X60利用串口實(shí)現(xiàn)ISO7816介紹

    為基礎(chǔ),并針對(duì)客戶應(yīng)用的需求,增加了更多通用數(shù)字IO,該產(chǎn)品繼續(xù)保持了Linux操作系統(tǒng)作為客戶應(yīng)用程序的軟件平臺(tái)。這三款主板均具備6個(gè)串口,其中的4個(gè)串口可支持ISO7816,用戶可以通過(guò)簡(jiǎn)單的設(shè)置,即可將異步串口轉(zhuǎn)換為符合
    的頭像 發(fā)表于 01-15 14:49 ?3362次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b>信息技術(shù)EM9X60利用串口<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>ISO7816</b>介紹

    創(chuàng)信息技術(shù)嵌入式Linux主板Qt串口應(yīng)用程序簡(jiǎn)介

    :/dev/ttyS1,設(shè)置串口參數(shù),創(chuàng)建一個(gè)單獨(dú)的線程來(lái)對(duì)數(shù)據(jù)進(jìn)行收發(fā),使用read函數(shù)讀取數(shù)據(jù),write函數(shù)發(fā)送數(shù)據(jù)。并且創(chuàng)公司將其封裝成一個(gè)serial類,可以使用serial類方便的操作
    的頭像 發(fā)表于 01-17 09:41 ?2111次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b>信息技術(shù)<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>主板</b>Qt串口應(yīng)用程序簡(jiǎn)介

    創(chuàng)信息技術(shù)Linux工控主板支持3G網(wǎng)卡介紹

    (3rd-generation,第三代移動(dòng)通訊技術(shù))運(yùn)用的普及,創(chuàng)公司的工控主板同樣對(duì)3G無(wú)線通訊做了完備的支持。本文就以目前很常用的華為3G網(wǎng)卡770W和E261為例,介紹
    的頭像 發(fā)表于 01-17 09:49 ?2505次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b>信息技術(shù)<b class='flag-5'>Linux</b><b class='flag-5'>工控</b><b class='flag-5'>主板</b>支持3G網(wǎng)卡介紹

    創(chuàng)信息技術(shù)Linux嵌入式工控板支持電容屏介紹

    隨著嵌入式應(yīng)用對(duì)GUI圖形界面需求的增加,Qt在Linux嵌入式設(shè)備中的使用越來(lái)越廣泛,許多應(yīng)用也都對(duì)人機(jī)交互界面有一定的要求。因此觸摸屏、鼠標(biāo)等設(shè)備等支持也變得重要起來(lái),
    的頭像 發(fā)表于 02-03 09:37 ?7613次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b>信息技術(shù)<b class='flag-5'>Linux</b><b class='flag-5'>嵌入式</b><b class='flag-5'>工控</b>板支持電容屏介紹