梅 歡
(河北省科學(xué)院應(yīng)用數(shù)學(xué)研究所,河北石家莊 050081)
USB KEY設(shè)備在W indows CE下的驅(qū)動實現(xiàn)
梅 歡
(河北省科學(xué)院應(yīng)用數(shù)學(xué)研究所,河北石家莊 050081)
針對USB KEY設(shè)備,介紹了在嵌入式系統(tǒng)Window s CE下流設(shè)備驅(qū)動的實現(xiàn)。
USB KEY設(shè)備;Window s CE
Window s CE是微軟公司嵌入式、移動計算平臺的基礎(chǔ),它是一個開放的、可升級的32位嵌入式操作系統(tǒng)。同時隨著USB2.0設(shè)備的不斷增加,USB設(shè)備驅(qū)動開發(fā)在嵌入式開發(fā)中變的越來越重要。筆者以ARM SYS2440開發(fā)板為硬件平臺,嵌入式操作系統(tǒng)W indow s CE為軟件平臺,討論了安全鎖USBKEY的驅(qū)動程序的實現(xiàn)方法。
從驅(qū)動加載方式來看WinCE可分為本機設(shè)備驅(qū)動(Built-In Driver)、可加載驅(qū)動(Loadable Driver)以及混合型驅(qū)動。
本機設(shè)備驅(qū)動即Native Device D rivers。通常是一些與圖形界面相關(guān)的 I/O設(shè)備驅(qū)動。例如鼠標(biāo)鍵盤驅(qū)動、顯卡驅(qū)動及觸摸屏驅(qū)動等。被 GWES.exe加載和使用,可以提高驅(qū)動和圖形的效率。
可加載設(shè)備是指可與平臺連接和分離的第三方接口設(shè)備,可由用戶隨時安裝和卸載。這種外圍設(shè)備的驅(qū)動也被稱為流驅(qū)動。以DLL動態(tài)鏈接庫的形式存在。這些驅(qū)動可以在系統(tǒng)啟動時或者和啟動后的任何時候由Device.exe動態(tài)加載。
混合型驅(qū)動是指同時有定制和流驅(qū)動兩套驅(qū)動接口,但是和系統(tǒng)的交互只使用流驅(qū)動接口,比如PC卡槽驅(qū)動。
筆者開發(fā)的USB KEY是基于公鑰基礎(chǔ)設(shè)施PKI(Public Key Infrastructure)的加密狗,其外觀類似于U盤,由硬件和軟件兩部分搭建而成。其硬件的核心部件是USB主控制器、加密芯片,通過USB接口與上位機進行保密通信。USB KEY的軟件核心是片上操作系統(tǒng)COS(Chip Operating System)。
USB KEY采用的是航芯電子的SCCII芯片,這款芯片基于國產(chǎn)32位CPU核的SOC開發(fā)平臺而開發(fā),具備高處理能力、高安全性、低功耗等特點。芯片內(nèi)置USB 2.0控制器,符合USB 2.0標(biāo)準(zhǔn),支持高速和全速設(shè)備。具有兩個endpoint,在點對點通信中對USB外設(shè)進行傳輸控制。
驅(qū)動程序使用立宇泰公司的ARM SYS2440開發(fā)板實現(xiàn)。該開發(fā)板的cpu采用三星S3C2440芯片,ARM 920T內(nèi)核,主頻400M Hz,最高可達(dá)533M Hz。
對USB KEY設(shè)備驅(qū)動采用了流接口驅(qū)動的模式。實現(xiàn)流式接口驅(qū)動程序通常只需要4個步驟[1]:
1)為流式接口驅(qū)動程序選擇一個前綴;
2)實現(xiàn)流式接口驅(qū)動DLL所必需的接口函數(shù);
3)編寫DLL的導(dǎo)出函數(shù)定義文件.DEF;
4)為驅(qū)動程序配置注冊表。
2.2.1 為流式接口驅(qū)動程序選擇一個前綴
應(yīng)用程序通常須通過設(shè)備的名稱對驅(qū)動程序進行訪問。這里采用3個大寫字母,加一個1-9之間的數(shù)字過程的傳統(tǒng)方式命名,將USB KEY的前綴定義為“JKY”。
2.2.2 實現(xiàn)流式接口驅(qū)動DLL所必需的接口函數(shù)
Platform Builder是微軟推出的針對Window s CE開發(fā)的集成開發(fā)環(huán)境。USB KEY驅(qū)動使用這一環(huán)境編寫代碼。在Platform Builder中,新建一個SMDK2440的平臺,然后再新建一個Win32 DLL項目,命名為U sb KeyD river。
Window s CE系統(tǒng)的流接口是屬于固定開放的規(guī)范,每個流接口驅(qū)動程序必須實現(xiàn)一組標(biāo)準(zhǔn)的函數(shù),用來完成標(biāo)準(zhǔn)的文件I/O函數(shù)和電源管理函數(shù)。USB KEY的DLL接口如表1所示。
表1 流式接口函數(shù)
2.2.3 編寫DLL的導(dǎo)出函數(shù)定義文件.DEF
.DEF文件定義了DLL的導(dǎo)出函數(shù)列表。在U sb KeyDriver中插入一個文本文件,命名為Usb KeyDriver.def,然后在該文件中輸入如下內(nèi)容:
編譯后可使用Dumpbin工具查看DLL中是否正確地導(dǎo)出了這些函數(shù)。
2.2.4 為驅(qū)動程序配置注冊表[2]
創(chuàng)建驅(qū)動程序加載所需的注冊表信息是由 USBlnstallDriver()函數(shù)完成的,它在設(shè)備第一次插入USB接口時調(diào)用。使用RegisterClientD rivedD()和RegisterClientSetings()來注冊相應(yīng)的設(shè)備信息。卸載驅(qū)動程序時會調(diào)用另外一個函數(shù) USBUninstallDriver(),它可以刪除 USB InstallD river)時創(chuàng)建的注冊表信息。
隨著嵌入式系統(tǒng)的應(yīng)用,越來越多的USB設(shè)備將需要支持這一平臺。本文實現(xiàn)了一個特殊設(shè)備USB KEY的驅(qū)動,對于今后開發(fā)其他的設(shè)備有一定的參考意義。
[1] 何宗健.Window s CE嵌入式系統(tǒng)[M].北京:北京航空航天大學(xué)出版社,2006.
[2] 劉彥峰,李崢,馬智.基于Window s CE的USB Key驅(qū)動程序設(shè)計[Z].微計算機信息,2008-12-03.
The realization of USB KEY device driver based on W indows CE
MEIHuan
(Institute of A pp lied M athematics,Hebei Academ y of Sciences,Shijiazhuang Hebei050081,China)
Aim at USB Key device,this paper introduces the realization of Steam s device driver based on W indow s CE.
USB KEY device;Window s CE
TP317
:A
1001-9383(2011)01-0023-03
2011-01-10
梅歡(1981-),女,河北石家莊人,研究實習(xí)員,主要從事計算機應(yīng)用等方面的研究.