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

基于WinDriver的CPCI板卡Windows驅動程序設計

2013-04-12 00:00:00先登飛
現代電子技術 2013年18期

摘 要: 為了實現在主控計算機和信號處理板之間快速通信,采用了CPCI并行總線技術。為簡化開發難度,信號處理板采用內嵌PCI模塊的DSP6416數字信號處理芯片實現通信和控制功能,軟件開發環境基于VC++6.0,利用WinDriver工具開發了Windows下以DLL形式封裝的CPCI驅動程序。通過實際使用驗證,該驅動程序運行穩定可靠,實現了主控計算機對信號處理板的實時控制和信號處理板中結果數據向主控計算機實時上報功能。

關鍵詞: WinDriver; Windows驅動程序; CPCI總線; VC++6.0

中圖分類號: TN964?34 文獻標識碼: A 文章編號: 1004?373X(2013)18?0051?04

0 引 言

外圍設備互聯(PCI)總線是一種先進的高性能局部總線,可同時支持多組外圍設備[1]。CPCI總線應用于工業和嵌入式領域,其規范改進自PCI規范,CPCI規范在電氣方面兼容PCI規范,只是在封裝結構上進行了加強,CPCI板的封裝結構基于IEC 60297?3,IEC 60297?4以及IEEE 1101.10定義的歐式板卡外形[2]。既然電氣特性上兼容PCI規范,因此CPCI驅動程序的設計本質就是PCI驅動程序設計。

當前Windows環境下用于PCI設備驅動開發的工具主要是DDK,DriverStudio以及WinDriver。前兩者功能強大,但是開發者需要熟知操作系統的體系結構、匯編語言和設備驅動程序結構體系方法,還需要具備豐富的驅動程序開發經驗,否則可能造成軟件不穩定甚至系統崩潰,另外前兩者開發周期長。而Jungo公司開發的WinDriver改變了傳統的驅動程序開發方法,其整個驅動程序中的所有函數都是工作在用戶態下,使開發者不需要掌握前兩者所需的預備知識就可以開發出與之相媲美的程序[3]。

為了實現在主控計算機和信號處理板之間快速通信,采用了CPCI并行總線技術,信號處理板采用內嵌PCI模塊的DSP6416芯片。軟件開發基于Windows平臺和VC++6.0編程環境,為了便于應用程序調用驅動程序,按照模塊化的軟件設計思想,驅動程序以DLL動態鏈接庫的形式封裝。為提高工作效率、縮短開發周期,開發工具選用WinDriver。

1 WinDriver簡介

WinDriver是一套設備驅動程序開發組件,它的目的就是方便程序員快速開發出PCI,ISA,CPCI,PCIE等設備的Windows驅動程序[4]。

1.1 WinDriver原理

WinDriver的體系架構分為兩種模式:用戶模式和內核模式。對硬件進行操作時,開發者應用程序調用WinDriver用戶模式的庫函數,用戶模式的庫函數再調用WinDriver內核,WinDriver內核再調用操作系統底層函數實現對硬件的最終訪問。其與硬件模板、用戶驅動程序、用戶應用程序之間的關系即體系架構見圖1[5?6]。對于某些在用戶模式下不能實現的高性能硬件驅動程序,可通過WinDriver的內核插件功能實現:在用戶模式下完成編程和調試,不做任何修改,直接將該高性能要求的程序模塊植入內核插件,WinDriver即從內核模式下調用該程序模塊。

1.2 WinDriver特點

作為一款實用的驅動程序開發工具包,WinDriver的主要優點和特征如下:

(1)通過內核插件功能(Kernel PlugIn)能夠實現用戶模式的易用和內核模式的高性能;

(2)友好的驅動向導允許不寫一行代碼即可實現硬件診斷;

(3)支持所有PCI/PCMCIA/CardBus/ISA/EISA/CompactPCI/PCIExpress設備,與制造商無關;

(4)可以利用常見的軟件開發平臺包括MSDEV/VisualC/C++,Borland Delphi,Visual Basic6.0等;

(5)開發者不需要知道DDK,ETK,DDI及任何其他系統層面的編程知識;

(6)支持I/O、DMA中斷處理和直接訪問板卡映射的存儲器;

(7)支持多CPU及多PCI總線平臺。

1.3 用WinDriver開發驅動程序

利用WinDriver開發驅動程序有2種方式:通過驅動程序向導生成驅動程序框架,再對框架程序進行修改和調試;直接編寫驅動程序。

通過驅動程序向導開發步驟:板卡檢測、診斷;生成驅動程序框架;調試、編譯驅動程序。

直接編寫代碼方式步驟:

(1)包含WinDriver相關的頭文件;

(2)WinDriver庫函數調用,WinDriver庫函數典型調用流程見圖2[7]。

2 CPCI信號處理板卡驅動程序設計

2.1 硬件環境

實現PCI總線協議一般有2種方法:一是用FPGA設計實現,由于PCI協議比較復雜,實現較困難;二是采用專業PCI總線控制芯片,如AMCC公司的S5933、PLX公司的PCI 9080等通用PCI接口芯片[8]。本信號處理板采用第二種方法,選用自帶PCI接口模塊的DSP6416,主控計算機上的應用程序通過驅動程序將控制命令字主動寫入DSP內存,實現主控計算機對信號處理板的控制;信號處理板結果數據處理完畢后,向主控計算機發中斷,驅動程序響應該中斷,并主動讀取指定DSP內存獲取結果數據。

結果數據和模塊狀態信息存入L2緩存單元,主控計算機下發的命令字也寫入L2緩存單元。結果數據緩存劃分為大小各為28 KB的Block1和Block2兩塊區域;模塊狀態信息緩存大小為24字節;控制命令緩存大小為1 B。DSP中與PCI操作有關的緩存定義見表1。

表1 DSP中與PCI操作有關的緩存定義

當Block1緩存填滿后,新的結果數據存入Block2緩存,同時DSP給主控計算機發PCI中斷,主控計算機通過PCI接口讀取Block1;同理當Block2填滿后,新的結果數據存入Block1緩存,主控計算機通過PCI讀取Block2。Block1和Block2緩存交替接收結果數據。

2.2 CPCI驅動程序DLL接口設計

為了便于應用程序訪問驅動程序,按照模塊化的軟件設計思想,驅動程序以DLL動態鏈接庫的形式進行封裝,應用程序通過與驅動程序DLL之間的接口來訪問信號處理模塊的板上資源,下發控制命令、獲取結果數據。主要接口及其功能描述如下:

(1)DSP6416DLL_Init(CWnd* pMainWnd):打開并注冊WDC庫、打開設備,初始化中斷;

(2)DSP6416DLL_SendCmd(BYTE BCommand):主控計算機中的控制命令數據寫入DSP中命令存儲區;

(3)DSP6416DLL_ReadState(BYTE *StateData):從DSP的狀態存儲區讀取信號處理板的狀態數據;

(4)DSP6416DLL_ReadResult(BYTE *ResultData):從DSP的Block1或Block2數據緩存區讀取結果數據;

(5)DSP6416DLL_Exit():關閉中斷,關閉設備,關閉WDC庫。

2.3 CPCI驅動程序實現

在硬件環境和接口、驅動程序封裝形式及其軟件接口確定后,剩下的工作就是CPCI驅動程序的實現。該工作主要內容為驅動程序DLL各接口函數的編碼實現和WinDriver庫函數調用。

2.3.1 文件包含

包含與WinDriver相關的頭文件:windrvr.h,windrvr_int_thread.h,wdc_lib.h。

2.3.2 驅動程序初始化

驅動程序初始化主要工作和步驟包括:打開WinDriver,WinDriver授權、版本號檢查、板卡檢測、板卡信息獲取、模塊配置、板卡注冊和PCI中斷使能,驅動程序初始化流程見圖3。

2.3.3 驅動程序向DSP內存寫數據

DSP6416的PCI接口支持四種類型的數據交換[9?10]:從模式寫,外部PCI主設備通過PCI接口寫數據到DSP;從模式讀,外部PCI主設備通過PCI接口讀取DSP中的數據;主模式寫,DSP主設備通過PCI接口向外部設備寫數據;主模式讀,DSP主設備通過PCI接口向外部設備讀數據。

4 結 語

通過實際應用,發現用WinDriver開發的本驅動程序運行穩定可靠,達到了主控計算機對信號處理板實時控制,特別是信號處理板中大容量數據實時上傳的目的。由于系統方案確定了CPCI并行總線作為通信手段,硬件設計時采用了自帶主從式PCI接口模塊的DSP6416芯片,驅動開發工具選擇了快速高效的WinDriver工具包,以及對驅動程序形態進行DLL封裝,本驅動程序從需求設計到完成編碼和調試不到一個月的時間,在保證軟件質量的同時,縮短了研制周期,提高了開發效率。

參考文獻

[1] 李貴山,戚德虎.PCI局部總線開發者指南[M].西安:西安電子科技大學出版社,1997.

[2] PICMG. Compact PCI core specification PICMG 2.0 R3.0 [R]. [S.l.]: PICMG, 1999.

[3] 王磊,魯新平,李吉成.WinDriver在開發基于PLX9056芯片的PCI設備驅動程序中的應用[J].現代電子技術,2006,29(18):77?79.

[4] 李靜,趙保軍.基于TMS320C6416內嵌PCI設備驅動程序開發[J].微機發展,2005,15(10):135?137.

[5] Jungo Ltd. WinDriver PCI/ISA/CardBus v8.02 user’s guide [R]. US: Jungo Ltd, 2005.

[6] 簡育華.基于WinDriver的 PCI驅動程序開發[J].火控雷達技術,2011,40(1):68?70.

[7] Jungo Ltd. WinDriver PCI/PCMCIA/ISA v8.02 Low?Level API Reference[R]. US: Jungo Ltd, 2005.

[8] 宋新超,柴恒.基于WinDriver的數字信號處理器PCI驅動開發[J].艦船電子對抗,2012,35(4):82?84.

[9] Texas Instruments. TMS320C6000 DSP peripheral component interconnect (PCI) reference guide [R]. US: Texas Instruments, 2003.

[10] 張秋菊,李麗芬,白彥霞,等.基于DSP的驅動程序開發[J].現代電子技術,2009,32(14):18?21.

主站蜘蛛池模板: 波多野结衣视频一区二区| 久久成人国产精品免费软件| 欧美精品在线看| 亚洲无码日韩一区| 男人天堂伊人网| 成人久久精品一区二区三区| 久久亚洲欧美综合| 美女被狂躁www在线观看| www.91中文字幕| 久久精品国产精品青草app| 亚洲av无码片一区二区三区| 久久久久免费精品国产| 黄色网页在线观看| 成人一级黄色毛片| 国产va在线观看| 亚洲综合色吧| 精品99在线观看| 中文字幕佐山爱一区二区免费| 99爱视频精品免视看| 国产毛片久久国产| 亚洲va欧美ⅴa国产va影院| 制服丝袜无码每日更新| 亚洲日本在线免费观看| 在线欧美日韩| 免费啪啪网址| 日韩欧美国产精品| 片在线无码观看| 97国产一区二区精品久久呦| 亚洲精品福利视频| 日韩不卡高清视频| 国产女人爽到高潮的免费视频| 国产SUV精品一区二区| 日本成人福利视频| 亚洲天堂在线视频| 国产在线专区| 国产91丝袜| 国产偷国产偷在线高清| 国产精品久久自在自线观看| 色偷偷综合网| 成人一级黄色毛片| 国产一级裸网站| 亚洲免费成人网| 国产麻豆精品手机在线观看| 91精品啪在线观看国产60岁 | 亚洲精品视频免费看| 中文字幕亚洲精品2页| 精品第一国产综合精品Aⅴ| 欧美va亚洲va香蕉在线| 亚洲av无码人妻| 伊人久久综在合线亚洲91| 国产精品 欧美激情 在线播放 | 亚洲系列中文字幕一区二区| 亚洲国产成人超福利久久精品| 午夜国产精品视频| 亚洲国产精品人久久电影| 青青草91视频| 五月天久久婷婷| 国产精品自拍露脸视频| 欧美一区日韩一区中文字幕页| 国产小视频a在线观看| 高清无码一本到东京热| 国产精品成人一区二区不卡 | 无码国产伊人| 国产成人av一区二区三区| 欧美日韩综合网| 亚洲一区二区三区国产精华液| 日韩久草视频| 偷拍久久网| 国产导航在线| 91免费在线看| 国产精品视频999| 欧美成人午夜在线全部免费| 黄色网址手机国内免费在线观看| 精品中文字幕一区在线| 国产精品视频系列专区| 日韩人妻无码制服丝袜视频| 日韩无码视频专区| 亚洲第一视频网站| 在线观看免费黄色网址| 日日噜噜夜夜狠狠视频| 欧美三级不卡在线观看视频| 国产一区三区二区中文在线|