摘 要: 如今自動化、智能化的生產(chǎn)方式已成為人類對于生產(chǎn)制造技術的新追求,然而為了實現(xiàn)制造業(yè)的自動化與智能化發(fā)展,與其相對應的計算機自動編程與控制技術已成為當下研究的重點和熱點。文章從Windows和Linux系統(tǒng)的驅動程序開發(fā)入手,系統(tǒng)介紹了PCI控制策略及其串并口的具體情況,在此基礎上對于驅動程序的設計與開發(fā)工作的具體流程和手段進行了描述與分析,同時對于遇到的難點問題進行闡述并有針對性地提出解決措施。
關鍵詞: PCI;串并口;驅動程序;設計與開發(fā)
一、 引言
Windows和Linux操作系統(tǒng)作為目前使用最為廣泛的兩種計算機操作系統(tǒng),根據(jù)應用場景及功能的區(qū)分,可將其對應的驅動程序分為以下三類:一是根據(jù)總線控制策略而產(chǎn)生的總線驅動程序;二是根據(jù)相關設備實現(xiàn)特定功能的功能驅動程序;三是作為過濾有效信息和有針對性選擇而使用的過濾驅動程序。三者之間相互關聯(lián)、相輔相成。
PCI總線控制技術作為目前最常使用的控制策略之一,在結構上為樹形結構,并且與計算機系統(tǒng)之間的CPU總線之間相互獨立,同時也可和CPU總線之間進行并線操作,從而實現(xiàn)設備的高效快捷運行。此外在其對應的控制設備上,PCI總線上只允許有一個PCI總設備,其與均為PCI從設備,且PCI驅動程序的讀寫操作只可以在主設備與從設備之間進行,從設備所產(chǎn)生的數(shù)據(jù)均需通過主設備進行中轉交換而進行交流。文章從PCI驅動程序的開發(fā)入手,分別介紹了PCI驅動程序的基本概念,并對基于兩種系統(tǒng)開發(fā)對應程序的具體流程以及常見問題進行討論和分析。
二、PCI驅動程序的基本概念
PCI驅動程序主要用于相關設備的自動化和智能化的控制,其在本質上為一組控制硬件設備的函數(shù),主要作用是為面向用戶的應用程序和硬件設備之間提供了一種必要的連接接口和方式,是計算機操作系統(tǒng)實現(xiàn)核心態(tài)模塊加載的重要組成部分。而實現(xiàn)主動加載和控制的重要技術稱為PCI總線控制技術。
(一)PCI控制總線的基本概念
PCI控制總線又稱為PCI局部控制總線,是一種高性能的32/64位控制總線,其可分為多路地址線和數(shù)據(jù)線,是相關外圍設備、處理器以及存儲設備之間的互聯(lián)機構,支持的主要控制頻率為33MHz、66MHz和133MHz;在33MHz主頻和32位數(shù)據(jù)通道的共同作用下,其最高的數(shù)據(jù)傳輸速率可達到132MB/s,在最大限度上可以滿足現(xiàn)代生產(chǎn)生活中日益增長的數(shù)據(jù)傳輸要求。
在構成結構方面,PCI控制總線與其他總線的設計之間存在較大的差異,其中PCI總線并沒有和處理器進行直接的關聯(lián)互動,而是通過橋路把PCI總線和設備處理器中的局部總線進行連接;PCI路橋在控制程序作用時主要控制并驅動PCI總線,從而使得PCI控制總線和設備處理器能夠異步運行,使得設備在自動控制方面更加的簡單和便捷。因此可知PCI控制總線的優(yōu)點在于:其具有高性能、強兼容性、低運行成本和高的收益效果的特點,滿足了現(xiàn)代計算機I/O系統(tǒng)發(fā)展具體要求,從而成為世界上應用最為廣泛的總線標準之一。
(二)PCI控制總線的特點
PCI控制總線作為一種具有高性能、高標準的控制總線標準,具體特點可分為以下幾點:①其控制運行的性能極為優(yōu)良,在較小運行成本的前提下實現(xiàn)高速、高質量的運行效率和運行速度;②由于其直接針對的部件之間能夠實現(xiàn)互聯(lián)優(yōu)化,并且在電氣驅動能力和使用頻率方面完全滿足標準的ASIC技術和其他典型工藝,從而極大程度上節(jié)省了邏輯電路的物理空間,進而降低了使用的成本;③使用便捷,由于PCI總線上的附加板和相關部件可以實現(xiàn)全自動化的配置,PCI設備內部包含有對應的配置地址寄存器,從而有效解決了早期ISA總線中極易出現(xiàn)的硬件資源沖突的問題;④具有較為廣泛的適用范圍;⑤使用較為靈活,因為PCI控制總線固有的特點,可同時設置多個具有完全自主能力的主設備,允許PCI主設備點訪問PCI主設備和從設備的權限,進而使得其使用范圍變得更加廣泛;⑥具有良好的兼容能力,PCI總線可與多個PCI主設備中的驅動程序和應用軟件進行兼容,并可實現(xiàn)在不同平臺上的互相移植。
三、 PCI串并口驅動程序的設計與開發(fā)
(一)PCI串并口驅動程序開發(fā)流程
PCI設備的程序位于整個PCI控制總線驅動的最上層,在不同的操作系統(tǒng)下進行相關控制驅動程序的開發(fā),在操作流程上具有一定的差異,但對于具體的操作流程和步驟上均需完成以下幾部分:
1. 在設備開發(fā)的初始階段均需要設定一些初始的數(shù)據(jù)及識別策略,因此設備在PCI驅動程序開發(fā)的初始階段均需對PCI主設備和從設備的端口、內存以及DMA等相關資源的數(shù)據(jù)進行采集、統(tǒng)計和分析;
2. PCI設備在工作過程中均會將自己的寄存器地址范圍映射至操作系統(tǒng)之中,在進行相關驅動程序的開發(fā)之前,需根據(jù)PCI設備中寄存器地址的位長對相關的驅動程序構造相應的讀、寫函數(shù)供端口進行相應的操作和使用;
3. 備在內存中的讀寫操作是利用PCI設備的物理內存進行完成的,而對應的應用程序的讀、寫操作利用的是總線系統(tǒng)中的虛擬地址,因此驅動程序在完成相關的機制操作時需完成設備的物理地址和程序的虛擬地址之間的轉換工作;
4. 在PCI控制總線及其設備中均共享同一個中斷處理信號,當系統(tǒng)發(fā)出中斷信號后,設備與系統(tǒng)之間需對該信號的作用對象進行區(qū)分,因此在完成PCI驅動程序的開發(fā)時,需對該段程序加以處理,以便方便該系統(tǒng)完成信號的自動識別與處理。
(二)不同系統(tǒng)的PCI驅動程序開發(fā)的區(qū)別
進行PCI驅動程序的開發(fā),主要區(qū)別在于Windows系統(tǒng)主要在不同的驅動層之間進行通訊連接,而Linux系統(tǒng)主要依靠自身帶有的IRP模塊和帶有自定義參數(shù)的控制函數(shù)在不同模塊之間進行聯(lián)系。兩者之間具體的區(qū)別可歸納為以下四點:①在驅動例程上的不同,主要由其驅動裝置及各部分訪問方式的差異而造成;②是PCI主從設備命名的不同;③是由于操作系統(tǒng)的不同,硬件、軟件上的差異造成用戶與內核空間數(shù)據(jù)傳輸方式上的差異;④是驅動程序安裝與管理方面的不同,這是由于不同操作系統(tǒng)本身固有的屬性而決定的。
四、 結論與分析
PCI控制總線作為一種高標準、高性能的總線控制標準,順應了當前自動化、智能化的主要趨勢,解決了以前ISA和EISA控制總線中存在的一些問題和缺陷,具有性能優(yōu)良、運行成本較低、使用便捷靈活以及良好的兼容性能等優(yōu)點;并在Windows操作系統(tǒng)和Linux操作系統(tǒng)的驅動程序開發(fā)方面具有一定的相同點,相關驅動程序的設計開發(fā)較為便捷,具有良好的應用前景和推廣價值。
參考文獻:
[1]鄭秀玉,李曉明,李暢等.基于PCI總線的數(shù)據(jù)采集卡驅動程序設計與實現(xiàn)[J].電氣應用,2007(1):93-97.
[2]江洋.基于PCI總線的驅動程序設計及實現(xiàn)[D].成都:電子科技大學,2013.
作者簡介:? 劉帥,南京沁恒微電子股份有限公司。