基于PCI總線模塊的多路串行數(shù)據(jù)采集系統(tǒng)
要實現(xiàn)中斷機制,就要建立一個獨立的中斷響應(yīng)線程,并在主函數(shù)中完成中斷的使能、屏蔽及中斷線程的啟動。另外,使用WinDriver處理電平中斷時,還必須建立傳輸命令(INTCSR)來應(yīng)答中斷。
其中斷處理過程分為四步:
第一步,調(diào)用WDC_IntEnable(),此函數(shù)的功能是分配并初始化WC_INTERRUPT結(jié)構(gòu)體,自動創(chuàng)建中斷處理線程,同時在其中包含WD_Int-Wait()函數(shù),作用是使線程休眠直至有中斷發(fā)生。另外,還可以調(diào)用底層API函數(shù)InterruptEnable()或WD_Enable(),但此時需要由用戶自己創(chuàng)建中斷線程;
第二步是中斷線程無限循環(huán)以等待中斷發(fā)生。中斷發(fā)生時,WinDriver在內(nèi)核中執(zhí)行傳輸命令,當操作返回到用戶模式時,驅(qū)動的用戶模式中斷處理例程將被調(diào)用;之后,中斷處理例程返回,但中斷等待循環(huán)繼續(xù);最后在不再使用中斷時,調(diào)用’WDC_IntDisable()、底層API函數(shù)Inter-mptDisable()或WD_IntDisable()來關(guān)閉中斷。
3.4 驅(qū)動的分發(fā)及安裝
驅(qū)動的分發(fā)是指在目標機上不用安裝WinDriver開發(fā)包即可應(yīng)用其開發(fā)的設(shè)備驅(qū)動。需要準備的分發(fā)包應(yīng)包括windrvr6.sys、windrvr-6.inf、wd921.cat、waapi921.dll、difxapi.dll、自己的INF(Information File)等文件,而且即使是自己開發(fā)內(nèi)核驅(qū)動。也應(yīng)包含在內(nèi)。
Windows操作系統(tǒng)依靠INF文件來得到即插即用設(shè)備的驅(qū)動程序信息。WinDriver會自動檢測PC機上的即插即用設(shè)備。并為相應(yīng)硬件生成I-NF文件,而且只需稍作修改即可。INF文件可引導(dǎo)系統(tǒng)找到硬件所需要的驅(qū)動程序,由WinDriver生成的INF文件中列出了默認的拷貝文件win-drvr6.sys。設(shè)備驅(qū)動可通過工作于內(nèi)核模式的windrvr6.sys訪問硬件。之后在目標機上裝入驅(qū)動分發(fā)包及INF文件,即可通過應(yīng)用程序控制PCI設(shè)備。
4 結(jié)束語
該數(shù)據(jù)傳輸系統(tǒng)的PCI接口邏輯和數(shù)據(jù)傳輸、處理、緩存等用戶邏輯可集成于一片F(xiàn)PGA中。因而可極大的提高資源利用率,并可滿足大量數(shù)據(jù)高速傳輸?shù)囊?。上位機應(yīng)用程序采用中斷方式讀取數(shù)據(jù)可大大提高系統(tǒng)的性能。目前,經(jīng)多次試驗,該系統(tǒng)已完全可以滿足工程需要。
評論