<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 無(wú)驅動(dòng)USB認證模塊在電子商務(wù)中的應用

無(wú)驅動(dòng)USB認證模塊在電子商務(wù)中的應用

作者: 時(shí)間:2004-12-07 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要:作為一種新型的接口技術(shù)在平臺有其獨特的優(yōu)勢。本文主要介紹關(guān)于無(wú)產(chǎn)品HID接口的設計過(guò)程,討論產(chǎn)品的軟硬件開(kāi)發(fā)過(guò)程中的一些問(wèn)題,給出參考示例代碼。

關(guān)鍵詞: 人機接口設備(HID) 安全認證 接口技術(shù)

USB是由Compaq(康柏)、DEC、IBM、Intel、NEC、微軟以及Northern Telecom(北京電訊)等公司于1994年11月共同提出的,自1995年在Comdex上亮相以來(lái)至今已廣泛地為各PC廠(chǎng)家所支持,近年來(lái)應用日益廣泛。

但是,國內的USB產(chǎn)品還是相對較少。首先,是硬件開(kāi)發(fā)系統的問(wèn)題,國內沒(méi)有自己USB芯片產(chǎn)品,所有的關(guān)于USB接口方面的芯片全部由國外供給,而國內卻沒(méi)有任何技術(shù)方面的支持,因此開(kāi)發(fā)進(jìn)度很難保證。面向芯片的開(kāi)發(fā)系統更是相對的遲緩。其次,USB產(chǎn)品的軟件研發(fā)也并不是很容易的。USB協(xié)議將設備分為不同的類(lèi)型,每個(gè)設備類(lèi)型都定義了類(lèi)似功能設備的共同行為和協(xié)議。例如,HID人機接口設備主指用于人控制計算機系統操作的器件。對設備進(jìn)行分類(lèi)是了消除不同硬件廠(chǎng)商之間的差異,相同類(lèi)型的設備都由一組標準定義的功能組成。這樣,如果自己開(kāi)發(fā)的一些設備類(lèi),可能是沒(méi)有程序的,就面臨著(zhù)的開(kāi)發(fā)問(wèn)題;而驅動(dòng)開(kāi)發(fā)是大家公認的有難度的問(wèn)題等待,都限制了國內USB產(chǎn)品的開(kāi)發(fā)。

USB產(chǎn)品同時(shí)也沖南昌著(zhù)平臺?,F在電子商務(wù)在社會(huì )生產(chǎn)日益廣泛,但是網(wǎng)絡(luò )系統是一個(gè)開(kāi)放的系統,存在大量不安全的因素。因此,利用各個(gè)電子商務(wù)公司開(kāi)發(fā)出的各種密鑰管理系統、證書(shū)系統;同時(shí),利用計算機的USB接口特點(diǎn)開(kāi)發(fā)出方便的硬件安全認證證書(shū),已經(jīng)成為各個(gè)認證公司追求的安全解決方案。該產(chǎn)品以其方便、靈活、安全等特點(diǎn),在電子商務(wù)中已經(jīng)應用,并且近年來(lái)在金融行業(yè)與智能卡逐漸形成并立的趨勢。

1 安全認證硬件結構

圖1為認證的簡(jiǎn)要結構框圖。

幾乎所有的硬件廠(chǎng)商都有USB接口芯片的相關(guān)產(chǎn)品,選擇也很多,這里選用的是PDIUSBD12。它是一種性能優(yōu)化的USB器件,通常用于基于微控制器的系統并與微控制器通過(guò)高速并行接口進(jìn)行通信,也支持本地DMA傳輸。該器件采用模塊化的方法實(shí)現一個(gè)USB接口,允許在眾多可用的微控制器中選擇最合適的作為系統微控制器;允許使用現存的體系結構并使固件投資減到最小,是開(kāi)發(fā)低成本且高效的USB外圍設備的解決方案。

微處理器和EEPROM是市場(chǎng)上已經(jīng)成熟的硬件產(chǎn)品,這里采用Atmel公司的單片機和Xicor公司的EEPROM芯片。

2 HID設備類(lèi)固件程序設計

USB1.1協(xié)議定義了11種標準請求,同時(shí)定義了6種有關(guān)HID控制流程的特定請求。其中:set_report,get_report,給主機和設備提供了一條相互傳遞數據的途徑。

USB單片機控制程序一般須實(shí)現三個(gè)步驟:

①初始化單片機和所有的外圍電路(包括PDIUSBD12),然后進(jìn)入主程序循環(huán);

②在接口要求中斷后必須進(jìn)入相應的中斷服務(wù)程序;

③固件程序須完成鑒權、加密、解密的算法。

圖2是模塊程序處理的總體流程圖,可以比較直觀(guān)地顯示程序結構。

2.1 系統啟動(dòng)必須執行的通信過(guò)程

在沒(méi)有安裝驅動(dòng)程序時(shí),主機提取51固件程序中設備描述表,然后設置USB地址。啟動(dòng)驅動(dòng)程序(如果沒(méi)有正確的驅動(dòng)程序,則啟動(dòng)安裝先導),驅動(dòng)程序讀取設備描述表、配置描述符等,設置配置,即發(fā)出連接USB命令后,PC先讀取設備描述符,然后發(fā)出設置USB地址SETUP包。設置USB地址后,進(jìn)行PC客戶(hù)驅動(dòng)與設備初始化。

2.2 USB設備啟動(dòng)流程

①USB設備接入USB口,發(fā)出連接USB命令。

②主機發(fā)出讀設備描述符兩次。

③主機根據設備描述符―廠(chǎng)商ID、產(chǎn)品ID,啟動(dòng)相應設備驅動(dòng)程序。

④設備驅動(dòng)程序初始化USB設備:

a讀設備描述符;

b讀配置描述符;

c選擇接口、端點(diǎn)(管道),確定傳輸方式。

注意:在發(fā)送配置[,接口(1),端點(diǎn)(1),接口(2),端點(diǎn)(2),…,類(lèi),廠(chǎng)商等]聯(lián)合描述表時(shí),各描述表的先后順序可隨意,主機USBD根據描述表類(lèi)型標識區分各種分描述表。

2.3 固件主程序通信主程序

中斷后主程序主要是通過(guò)中斷事件標志判斷并且執行相應的程序代碼。主程序流程簡(jiǎn)圖如圖3所示。

主程序的示例程序代碼見(jiàn)網(wǎng)絡(luò )補充版(http://www.dpj.com.cn)。

2.4 處理主機標準控制請求

由于中斷程序是通過(guò)USB接口芯片觸發(fā)的,因此它必須判斷是何種中斷,是否進(jìn)行處理等情況。中斷程序流程簡(jiǎn)圖如圖4所示。

2.5 系統中斷程序中斷處理代碼示例

unsigned char ENDPOINT_A0_FIFO[8];

//判斷輸入的是SETUP請求,并將其讀入緩沖區ENDPOINT_A0_FIFO...

if((ENDPOINT_A0_FIFO[0]0b01100000)= =0x00){

if(ENDPOINT_A0_FIFO[1]=0x0C){

(*StandardFunctionTable[ENDPOINT_A0_FIFO[1]])();

return;

}

}

[1]處理主機標準控制請求:

void SetAddress(void){

if(ENDPOINT_A0_FIFO[0]= =0b00000000){

//保存USB地址x80|ENDPOINT_A0_FIFO[2];

}

}

注:SetAddress請求實(shí)際可分成三個(gè)階段:第一階段,Setup包被送至設備;第二個(gè)階段是可有可無(wú)的階段,數據在設備與主機之間傳送;第三階段,狀態(tài)信息在主機與設備之間傳送。

數據與狀態(tài)傳送的方向要看是主機發(fā)數據給設備還是設備發(fā)數據給主機。狀態(tài)的傳送方向總是與數據傳送方向是相反的。如果沒(méi)有數據傳輸階段,則狀態(tài)由設備傳向主機。

Setup包傳送以后的兩個(gè)階段的地址保持與Setup包傳送階段一致。USB設備只有在Status階段過(guò)后才能改變設備地址。

獲取設備描述符的程序網(wǎng)絡(luò )補充版(http://www.dpj.com.cn)。

2.6 數據通信處理以及安全認證處理程序

由于本模塊的主要功能是作為電子商務(wù)中的鑰匙和證明書(shū),因此是關(guān)鍵技術(shù)。其中以?xún)炔棵荑€的處理過(guò)程及加密解密算法模塊為核心技術(shù)。

get_report和set_report是HID類(lèi)設備與主機通信的特定方式,HID規范定義的特定的標準請求。當主機與HID設備通過(guò)get_report(主機從設備獲?。┗騭et_report(設備接受數據)傳遞數據時(shí),必須有一個(gè)密鑰的傳送遞鑒定過(guò)程。圖5是主機和模塊讀取數據的過(guò)程描述。

值得指出的是,EEPROM中的數據都是經(jīng)過(guò)CPU加密寫(xiě)入的,同時(shí)對重要數據設置了保護,即使別人獲取也很難短破譯;用戶(hù)只要申請丟失,即可馬上報廢。

3 HID類(lèi)應用軟件設計

建立設備驅動(dòng)程序與Windows應用程序接口有兩種方法:

① 設備驅動(dòng)程序創(chuàng )建內核設備名和符號連接名,Widows應用程序調用。

CreateFile(" u31526符號連接名",

GENERIC_READ|GENERIC_WRITE,

FILE_SHARE_READ|FILE_SHARE_WRITE,

NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

②設備驅動(dòng)程序創(chuàng )建設備接口。Windows應用程序可調用下列包裝好的函數,打開(kāi)一個(gè)設備,見(jiàn)網(wǎng)絡(luò )補充版。

③應用API函數進(jìn)行應用程序和硬件設備的通信,常用方法:ReadFile WriteFile DeviceIoControl CloseHandle。

為應用USB_Createfile需包含下列頭文件:

#include Setupapi.h

#include initguid.h

#include winioctl.h

結語(yǔ)

USB接口硬件認證模塊裝上計算機后會(huì )立刻被系統識別為HID類(lèi)設備,并且自動(dòng)裝上驅動(dòng)程序。實(shí)際證明,該無(wú)驅動(dòng)的認證模塊已經(jīng)在我公司的應用中起到了不可替代的作用,時(shí)它的安全性、控制的靈活性、無(wú)驅動(dòng)的方便性也使客戶(hù)非常滿(mǎn)意。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>