?

基于DM642的PCI加密卡驅動程序設計

2011-02-09 01:57章喜才張金果周廣祿
制造業自動化 2011年4期
關鍵詞:驅動程序寄存器中斷

陳 靜,章喜才,張金果,周廣祿

3. 東北電力大學,吉林 132012;4.哈爾濱工業大學,哈爾濱 150001)

0 引言

隨著加解密技術的快速發展和加解密數據量的增大,PCI硬件加密卡已經成為高速加解密應用領域的主流。DSP芯片以其高性能的優勢,在加密卡領域內得到了廣泛的應用,特別是在軍事秘密,無線通訊,語音加密等方面。驅動程序作為加密卡的一個重要組成部分,是實現加密卡和主機之間高速、穩定的通信和數據傳輸的重要保證。

圖1 DM642的PCI接口結構圖

1 DM642的PCI接口

DM642是 一 款TI公司生產的DSP芯片,屬于C6000系 列。C6000 系 列DSP片內集成了一個主/從模式的PCI接口,通過PCI總線能夠實現DSP與主機的互連。對于 DM642,PCI接口由EDMA的地址產生硬件與DSP相連,支持PCI接口規范2.2版本。如圖1所示,PCI接口包括如下模塊:

1)PCI總線接口模塊(PCI Bus Interface Unit,PBIN) 由PBIN實現PCI總線協議。該模塊對主/從模式下的總線交易都不會插入等待周期,可以實現最大的總線傳輸帶寬。相應的FIFO為空或者滿時,PCI接口將結束當前傳輸,斷開總線連接。

2)EEPROM控制器 控制器與外部的4線串行EEPROM相連。PCI接口復位時,控制器讀取EEPROM的數據,配置PCI接口。DSP還可以通過映射寄存器訪問EEPROM。

3)DSP從模式寫模塊 包括一個multiplexer和一個PBIN到DSP的FIFO(由外部主機寫入)。

4)DSP從模式讀模塊 包括一個multiplexer和一個DSP到PBIN的FIFO,外部主機是其中數據的請求方。

5)DSP主模式模塊 包括讀/寫兩個子模塊,DSP是該模塊的主控方。該接口不能同時執行主模式的讀操作和寫操作。

6)PCI的I/O接口模塊 包括PCI的I/O映射寄存器。這些寄存器用于控制從模式總線交易中DMA/EDMA的訪問頁,標識主機狀態以及向DSP觸發中斷或者復位。

7)DSP的寄存器接口 包含DSP的映射寄存器,用于控制主模式接口,產生PCI中斷以及電源管理。

圖2 驅動程序的中斷通信模式示意圖

2 驅動程序的中斷通信模式

驅動程序的重要功能是實現主機和密碼卡的通信,中斷系統所承擔的正是這個重要的任務,這也是驅動設計中的關鍵環節。功能驅動程序的中斷系統所承接的兩端分別是應用程序和加密卡,作為一個橋梁,它使應用程序和加密卡的通信得以實現。圖2展示了功能驅動程序中斷系統的工作框架(圖中省略了其他無關操作)。如圖2所示,中斷系統包括兩個方面:主機對密碼卡的中斷(1)和密碼卡對主機的中斷(2)。

1)主機對密碼卡的中斷

主機對密碼卡的中斷本質上就是應用程序在需要密碼卡完成某項功能時,發送中斷。 DSP端的程序可以根據接收到的中斷信號執行相應的任務。

PCI主機通過向PCI I/O的host-to-DSP控制寄存器(HSCR)的DSPINT位寫1,可以向DSP發出中斷。當PCIIEN中對應位使能時,向DSPINT位的寫1操作將觸發HOSTSW中斷。在這種情況下,中斷使能和中斷禁止等工作由DSP設備端程序來實現。

2)加密卡對主機的中斷

加密卡對主機的中斷本質上是DSP端的程序在完成指定任務后(或者因其它需要),發送中斷。主機接收到中斷,并傳遞給相應的用戶應用程序,使應用程序根據接收到的中斷信號執行相應操作。

在DSP端只要寫中斷寄存器,即可通過#INTA引腳將中斷傳送到主機端。在主機端的驅動程序中,則要對中斷進行檢測和響應中斷。主機端的操作集中在中斷服務程序(ISR)和中斷延時程序(DPC)中。

由于ISR的程序級別在DIRQL(硬件中斷)級別,在這個級別上執行程序將會屏蔽主機所有的中斷和線程調度,因此只能將必要且省時的操作放在ISR中,而將大部分的功能性操作放在DPC中執行。DPC是運行在DISPATCH_LEVEL級的例程,不會屏蔽主機的中斷,因此可以進行一些較為復雜的操作。

3 驅動程序的數據傳輸模式

驅動程序運行在主機Windows系統上,PCI加密卡作為外設使用,因此采用從模式進行數據傳輸。

3.1 地址映射

在DM642的PCI接口中有三個基址寄存器,Base0和Base1空間都屬于Memory映射空間, Base0空間支持可預取的讀寫操作,Base1空間只能進行不可預取的讀寫操作。Base2空間屬于IO映射空間。

在本系統中,Base0根據硬件資源情況映射了地址范圍為0x00000000-0x0003FFFF的256KB空間,這部分空間用于存儲DM642設備端程序,上電后DM642會從0x00000000開始執行程序;地址范圍為0x80000000-0x81FFFFFF的32MB的SDRAM空 間, 這部分空間用來存放用戶數據;地址范圍為0x90000000-0x900FFFFF的1MB的Flash空間,用來固化DM642設備端程序,加密卡上電啟動后將程序從Flash拷貝到內存中執行。

在主機端驅動程序中訪問Base0空間的地址,需要為DSPP寄存器提供基地址,并為在數據傳輸時提供偏移地址。DSPP寄存器的bit 9:0與PCI訪問地址的bit 21:0組合,形成最后對從DSP的訪問地址。

圖3 Base0空間數據傳輸流程圖

3.2 數據傳輸

根據加密卡的硬件資源和分配的地址空間,數據傳輸的目的地址可以劃分為三類:配置空間、內存映射空間(Base0空間、Base1空間)和I/O映射空間(Base2空間)。

配置空間的的內容一部分是通過總線驅動程序讀取設備的EEPROM獲得的,這是廠商用特殊設備燒寫的配置信息,另一部分是主機的總線驅動程序檢測到硬件后自動分配給設備的地址信息。所有遵循PCI標準的設備為其配置信息提供了一個獨立的地址空間,DM642的PCI接口也不例外。PCI協議定義了許多頭信息格式,在DriverWorks中,通常頭信息是通過結構體PCI_CONFIG_HEADER_0來定義的,通過結構體PCI_CONFIG_HEADER_0即可讀取配置空間的所有信息。

對于內存映射空間的訪問,涉及到地址空間的分配和映射。其中,Base 0空間映射為數據存取區,將Base 1映射為寄存器存取區。圖3是Base0空間數據傳輸的執行流程。Base0空間是可預取空間,因此數據傳輸過程中可以進行突發訪問或啟動DMA傳輸。

操作系統區分I/O空間和內存空間,在多總線結構中,每個總線都支持內存和I/O訪問。一般來說,I/O空間可以在I/O總線周期中存取,但是,系統也允許外圍地址中的I/O空間映射到系統內存空間,如Base1空間。因此,驅動程序在存取I/O寄存器時,必須要知道I/O寄存器在哪個總線上,并且要知道總線地址空間范圍。對于I/O映射空間的訪問在軟件實現上和內存映射空間是類似的。

4 結論

通過速度測試,寫操作速率達到11.9MB/s,讀操作速率達到4.0MB/s,表明所開發的基于PCI的密碼卡驅動程序具有較高的數據讀寫速率。系統測試表明,密碼卡可以很好的完成RSA加密、分組加密、哈希加密等操作,證明此驅動程序具有很好的穩定性。不足之處是,當前系統的傳輸速率并不十分理想,系統優化和提高數據傳輸率仍需進一步的努力。

[1] 李方慧.王飛.何佩琨.TMS320C6000系列DSPs原理及應用[M].電子工業出版社.2003.

[2] 武安河.Windows 2000/XP WDM設備驅動程序開發(第二版)[M].電子工業出版社.2005.

猜你喜歡
驅動程序寄存器中斷
STM32和51單片機寄存器映射原理異同分析
Lite寄存器模型的設計與實現
阻止Windows Update更新驅動程序
基于FPGA的中斷控制器設計*
Linux中斷線程化分析及中斷延時測試
計算機硬件設備驅動程序分析
移位寄存器及算術運算應用
跟蹤導練(二)(5)
千里移防,衛勤保障不中斷
Lx5280模擬器移植設計及實施
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合