本發(fā)明涉及數(shù)據(jù)處理
技術領域:
,具體涉及一種適用于多中斷數(shù)據(jù)接收的系統(tǒng)驅(qū)動方法。
背景技術:
:數(shù)據(jù)接收卡是一種廣泛應用的測試設備,為了便于數(shù)據(jù)接收卡使用,通常利用windows系統(tǒng)的可視化界面,實現(xiàn)數(shù)據(jù)存儲、分析與顯示,因此,需要開發(fā)基于windwos系統(tǒng)的驅(qū)動,完成數(shù)據(jù)接收卡與用戶應用程序間的橋接?,F(xiàn)有技術中的接收板卡在采集多種類型數(shù)據(jù)時會出現(xiàn)輸出多中斷的情況,而一般的驅(qū)動方法不能實時、穩(wěn)定、有效地響應中斷,無法滿足實際工程中實時采集存儲多種數(shù)據(jù)類型的需求。技術實現(xiàn)要素:本發(fā)明針對傳統(tǒng)驅(qū)動不能有效響應部分中斷的情況,設計了一種提高驅(qū)動數(shù)據(jù)處理效率,有效響應多中斷的驅(qū)動方法,以實現(xiàn)接收卡穩(wěn)定的采集數(shù)據(jù),提高了數(shù)據(jù)采集的實時性。為了解決上述技術問題,本發(fā)明采用了如下的技術方案:一種適用于多中斷數(shù)據(jù)接收的系統(tǒng)驅(qū)動方法,包括以下步驟:s1.創(chuàng)建并初始化驅(qū)動功能模塊;s2.讀取系統(tǒng)上存在的硬件設備的配置信息,查找匹配設備,判斷系統(tǒng)上存在的硬件設備是否為匹配設備,若是,則進入步驟s3,若否,則退出驅(qū)動功能模塊;s3.將硬件設備的物理地址映射轉(zhuǎn)換成系統(tǒng)能夠識別的虛擬地址,實現(xiàn)驅(qū)動程序?qū)τ布O備的直接訪問與操作;s4.初始化硬件設備中斷及通道,接收上層應用程序的io控制請求,寫入寄存器;s5.多中斷數(shù)據(jù)處理模塊進行中斷處理,建立中斷類型緩存表和數(shù)據(jù)緩存表,與硬件設備建立握手;s6.啟動延遲過程調(diào)用,建立延遲過程調(diào)用函數(shù);s7.延遲過程調(diào)用函數(shù)根據(jù)中斷類型緩存表的存儲類型進行不同數(shù)據(jù)類型的數(shù)據(jù)存儲,注冊事件,與上層的應用程序進行通信;s8.上層應用程序下發(fā)接收數(shù)據(jù)指令,通知上層應用程序性從數(shù)據(jù)緩存中搬移數(shù)據(jù)。進一步地,所述的步驟s5中的中斷處理包括以下步驟:s5-5.建立中斷類型緩存表和中斷處理函數(shù),初始化中斷處理函數(shù)中的讀計數(shù)與寫計數(shù);s5-6.在中斷處理函數(shù)中接收硬件設備中斷,根據(jù)寄存器存儲的硬件設備中斷類型將不同的中斷類型標志位寫入中斷類型緩存表,累加相應中斷類型的讀計數(shù);s5-7.根據(jù)中斷類型標志位預判是否存在其他類型數(shù)據(jù),若存在,寫入中斷類型緩存表,若不存在,進入步驟s5-3;s5-8.中斷類型預判完成后,向寄存器寫入數(shù)據(jù),輸出脈沖,多中斷數(shù)據(jù)處理模塊與硬件設備完成握手,通知硬件設備將高電平的中斷信號拉低,釋放中斷。進一步地,所述的步驟s6中的延遲過程調(diào)用函數(shù)包括以下步驟:s6-4.啟動延遲過程調(diào)用函數(shù);s6-5.根據(jù)中斷類型緩存表中的中斷類型在延遲過程調(diào)用函數(shù)中進行數(shù)據(jù)搬移,并累加相應中斷類型緩存表中的中斷類型的寫計數(shù);s6-6.根據(jù)不同類型事件,通知上層應用程序從數(shù)據(jù)緩存中搬移數(shù)據(jù)。進一步地,所述的通道為dma通道。進一步地,所述的硬件設備的物理地址包括io地址和memory地址。進一步地,使用標準入口函數(shù)driverentry創(chuàng)建并初始化驅(qū)動功能模塊。進一步地,所述的中斷處理函數(shù)中用write函數(shù)進行讀計數(shù),所述的中斷處理函數(shù)中用read函數(shù)進行寫計數(shù)。本發(fā)明由于采用以上技術方案,使之與現(xiàn)有技術相比,具有以下的優(yōu)點和積極效果:1.采用多中斷數(shù)據(jù)處理模塊進行中斷處理,使中斷處理函數(shù)與硬件設備建立握手,主動控制硬件設備輸出的中斷脈沖寬度,解決了驅(qū)動程序不能實時穩(wěn)定地響應固定脈寬中斷的情況,提高了接收設備數(shù)據(jù)采集的穩(wěn)定性,解決了驅(qū)動處理數(shù)據(jù)時出現(xiàn)的丟數(shù)問題,提高了數(shù)據(jù)接收卡的實時性與穩(wěn)定性;2.建立中斷類型緩存表以存儲不同類型的數(shù)據(jù)標志,將應該在中斷處理函數(shù)中完成數(shù)據(jù)搬移的過程轉(zhuǎn)移到低優(yōu)先級的延遲過程調(diào)用處理函數(shù)中,大大縮短了中斷處理函數(shù)的處理時間,提高了驅(qū)動接收數(shù)據(jù)的實時性;3.改變了傳統(tǒng)的應用程序查詢內(nèi)核數(shù)據(jù)搬移情況讀取數(shù)據(jù)的模式,在數(shù)據(jù)搬移完成后主動通知上層應用程序進行數(shù)據(jù)搬移,提高了上層的應用程序進行數(shù)據(jù)處理與存儲的執(zhí)行效率,有效降低了cpu使用率。附圖說明圖1是本發(fā)明中的驅(qū)動方法的流程圖;圖2是本發(fā)明中的驅(qū)動方法的中斷處理和延遲過程調(diào)用的流程圖;圖3是本發(fā)明實施例2中接受板卡的接受數(shù)據(jù)方式。具體實施方式以下結(jié)合附圖和具體實施例對本發(fā)明提出的技術方案進一步詳細說明。根據(jù)下面說明和權利要求書,本發(fā)明的優(yōu)點和特征將更清楚。需說明的是,附圖均采用非常簡化的形式且均使用非精準的比率,僅用于方便、明晰地輔助說明本發(fā)明實施例的目的。本發(fā)明是根據(jù)自主研發(fā)板卡需要采集多種類型數(shù)據(jù),針對數(shù)據(jù)接收卡產(chǎn)生突發(fā)多中斷脈沖,且不同類型中斷脈沖間隔可能會很短的實際情況,采用與硬件設備建立握手機制的方式實時釋放中斷電平信號,主動控制硬件設備輸出的中斷脈沖寬度,解決了驅(qū)動程序不能實時穩(wěn)定地響應固定脈寬中斷的情況,接收卡能實時穩(wěn)定地接收數(shù)據(jù),同時建立中斷類型緩存表,將數(shù)據(jù)搬移過程放在低優(yōu)先級的延遲過程調(diào)用函數(shù)中,大大縮短了中斷函數(shù)處理時間,提高中斷處理函數(shù)的執(zhí)行效率?,F(xiàn)通過實施例對發(fā)明的技術方案進行進一步陳述。實施例1參見圖1,本發(fā)明通過總線級驅(qū)動查找并識別硬件設備、地址映射的功能,主要是在內(nèi)核級中建立功能級驅(qū)動模塊,實現(xiàn)數(shù)據(jù)搬移存儲,該驅(qū)動方法的具體步驟為:s1.創(chuàng)建并初始化驅(qū)動功能模塊;s2.讀取系統(tǒng)上存在的硬件設備的配置信息,查找匹配設備,判斷系統(tǒng)上存在的硬件設備是否為匹配設備;若是,則進入步驟s3,若否,則退出驅(qū)動功能模塊;s3.將硬件設備的物理地址映射轉(zhuǎn)換成系統(tǒng)能夠識別的虛擬地址,實現(xiàn)驅(qū)動程序?qū)τ布O備的直接訪問與操作,其中,物理地址可包括硬件設備的io地址及memory地址;s4.初始化硬件設備中斷及通道,同時,接收上層應用程序的io控制請求,寫入寄存器,以便開啟中斷,從而能接收硬件設備的中斷;s5.多中斷數(shù)據(jù)處理模塊進行中斷處理,建立中斷類型緩存表和數(shù)據(jù)緩存表,當然,建立中斷類型緩存表和數(shù)據(jù)緩存表的過程也可在步驟s4中實現(xiàn),多中斷數(shù)據(jù)處理模塊是通過中斷處理函數(shù)接收中斷,并與硬件設備建立握手,存儲不同中斷類型的標志位;s6.啟動延遲過程調(diào)用,建立延遲過程調(diào)用函數(shù);對于步驟s5和步驟s6的處理過程將在后續(xù)的說明中進行具體詳述;s7.延遲過程調(diào)用函數(shù)根據(jù)中斷類型緩存表的存儲類型進行不同數(shù)據(jù)類型的數(shù)據(jù)存儲,注冊事件,與上層的應用程序進行通信;s8.上層應用程序下發(fā)接收數(shù)據(jù)指令,通知上層應用程序性從數(shù)據(jù)緩存中搬移數(shù)據(jù),從而完成內(nèi)核層到應用層數(shù)據(jù)的搬移,由于在數(shù)據(jù)搬移完成后能主動通知上層應用程序進行數(shù)據(jù)搬移,提高了上層的應用程序進行數(shù)據(jù)處理與存儲的執(zhí)行效率,有效降低了cpu使用率。參見圖2,圖2為中斷處理和延遲過程調(diào)用的流程圖,在該過程中建立了中斷類型緩存表以存儲不同類型的數(shù)據(jù)標志,將應該在中斷處理函數(shù)中完成數(shù)據(jù)搬移的過程轉(zhuǎn)移到低優(yōu)先級的延遲過程調(diào)用處理函數(shù)中,從大大縮短了中斷處理函數(shù)的處理時間,提高了驅(qū)動接收數(shù)據(jù)的實時性,具體步驟如下:s5-1.建立中斷類型緩存表和中斷處理函數(shù),初始化中斷處理函數(shù)中的讀計數(shù)與寫計數(shù),讀計數(shù)與寫計數(shù)可以用write函數(shù)或read函數(shù)編寫;s5-2.在中斷處理函數(shù)中接收硬件設備中斷,根據(jù)寄存器存儲的硬件設備中斷類型將不同的中斷類型標志位寫入中斷類型緩存表,累加相應中斷類型的讀計數(shù);s5-3.根據(jù)中斷類型標志位預判是否存在其他類型數(shù)據(jù),若存在,寫入中斷類型緩存表,若不存在,進入步驟s5-3;s5-4.中斷類型預判完成后,向寄存器寫入數(shù)據(jù),輸出脈沖,多中斷數(shù)據(jù)處理模塊與硬件設備完成握手,通知硬件設備將高電平的中斷信號拉低,釋放中斷,有效防止驅(qū)動程序由于中斷處理函數(shù)的處理時間較長而未能響應其他中斷脈沖信號的情況的發(fā)生。在步驟s5后,進入步驟s6,步驟s6中的延遲過程調(diào)用函數(shù)包括以下步驟:s6-1.啟動延遲過程調(diào)用函數(shù),此時,可釋放中斷處理函數(shù),繼續(xù)接收其他類型中斷,提高中斷處理效率;s6-2.根據(jù)中斷類型緩存表中的中斷類型在延遲過程調(diào)用函數(shù)中進行數(shù)據(jù)搬移,并累加相應中斷類型緩存表中的中斷類型的寫計數(shù);s6-3.根據(jù)不同類型事件,通知上層應用程序從數(shù)據(jù)緩存中搬移數(shù)據(jù)。實施例2在計算機上開發(fā)的基于windows系統(tǒng)的驅(qū)動程序設計接收中斷電平信號,實時采集不同類型數(shù)據(jù),采用握手方式實時釋放中斷電平信號,同時建立中斷類型緩存表,在低優(yōu)先級的延遲過程調(diào)用函數(shù)中利用中斷緩存表的標志信號進行數(shù)據(jù)搬移,提高了中斷處理函數(shù)的執(zhí)行效率。在實施例中將對本發(fā)明的整個過程詳述,接受板卡的接受數(shù)據(jù)方式如圖3所示,數(shù)據(jù)接收卡實時接收不同類型的空空接口信號,通過cpci接口傳輸?shù)接嬎銠C平臺進行數(shù)據(jù)分析。該接收設備采集信號的基本信息如表1所示。表1設備采集信號基本信息信號類型中斷間隔數(shù)據(jù)量自主控制數(shù)據(jù)0.5s1mbps顯示數(shù)據(jù)1s320bps飛船狀態(tài)數(shù)據(jù)1s500bps圖像數(shù)據(jù)0.1s2mbps關鍵遙測數(shù)據(jù)0.7s1.2mbps本發(fā)明的驅(qū)動方法詳細可分為驅(qū)動處理流程和多中斷處理流程,驅(qū)動處理流程的步驟包括:第一步:創(chuàng)建并初始化驅(qū)動功能模塊,具體來說,可通過進入標準入口函數(shù)driverentry,創(chuàng)建和初始化功能對象fdo;第二步:讀取系統(tǒng)上存在的硬件設備的配置信息,查找匹配設備,判斷系統(tǒng)上存在的硬件設備是否為匹配設備;輪訓系統(tǒng)總線上存在的cpci設備,對于數(shù)據(jù)接收卡則是根據(jù)讀取的數(shù)據(jù)接收卡epprom配置信息來查找匹配設備;若是,則進入下一步,若否,則退出驅(qū)動功能模塊;第三步:將硬件設備的物理地址映射轉(zhuǎn)換成系統(tǒng)能夠識別的虛擬地址,實現(xiàn)驅(qū)動程序?qū)τ布O備的直接訪問與操作,其中,物理地址可包括硬件設備的io地址及memory地址;第四步:初始化硬件中斷及dma通道,建立中斷類型緩存表、不同類型數(shù)據(jù)緩存表;第五步:接收上層應用程序的io指令,寫入寄存器,以便開啟中斷,從而能接收硬件設備的中斷;第六步:中斷處理函數(shù)接收中斷,建立握手,存儲不同中斷類型標志位;第七步:啟動延遲過程調(diào)用,此時可開啟延遲過程調(diào)用函數(shù);延遲過程調(diào)用函數(shù)根據(jù)中斷類型緩存表的存儲類型進行不同數(shù)據(jù)類型的數(shù)據(jù)存儲,注冊事件,與上層的應用程序進行通信;第八步:上層應用程序下發(fā)接收數(shù)據(jù)指令,通知上層應用程序性從數(shù)據(jù)緩存中搬移數(shù)據(jù)。二、多中斷處理流程主要是建立握手機制第一步:建立中斷類型緩存表和中斷處理函數(shù),初始化中斷處理函數(shù)中的讀計數(shù)write_count_n=0與寫計數(shù)read_count_n=0;第二步:在中斷處理函數(shù)中接收中斷,根據(jù)寄存器存儲的中斷類型將不同的標志位寫入中斷類型緩存表,相應中斷類型的write_count_n加1,并根據(jù)中斷類型標志位預判是否有其他中斷到達;第三步:中斷類型預判完成后,向固定io寄存器中寫入1,后寫入0,輸出脈沖,與硬件設備完成握手,通知硬件將高電平的中斷信號拉低,有效防止驅(qū)動程序由于中斷處理函數(shù)的處理時間較長而未能響應其他中斷脈沖信號的情況的發(fā)生;第四步:啟動延遲過程調(diào)用,啟動延遲過程調(diào)用函數(shù),釋放中斷處理函數(shù),繼續(xù)接收其他類型中斷,提高中斷處理效率;第五步:根據(jù)中斷類型緩存表類型在延遲過程調(diào)用函數(shù)中進行不同數(shù)據(jù)的搬移,并將相應中斷類型的read_count_n加1,根據(jù)數(shù)據(jù)類型置不同類型事件,通知上層應用程序從數(shù)據(jù)緩存中搬移數(shù)據(jù)。顯然,本領域的技術人員可以對發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。當前第1頁12