基于簡化HDLC規(guī)程的通信卡及驅(qū)動程序設(shè)計_第1頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基于簡化hdlc規(guī)程的通信卡及驅(qū)動程序設(shè)計在我國的靶場測控領(lǐng)域,全部的數(shù)據(jù)交換都是基于簡化版的hdlc規(guī)程舉行的,因此我們自行研制開發(fā)了基于簡化hdlc規(guī)程的通信卡。簡化hdlc規(guī)程主要是為了提高通信的實時性,將hdlc規(guī)程中全部通信聯(lián)絡(luò)指令幀所有簡化,只保留數(shù)據(jù)通信幀,從而保證一定的實時性。因為該卡具有牢靠性高,用法容易便利,工作時具有智能化等特點,被廣泛地應(yīng)用于測控系統(tǒng)數(shù)據(jù)傳送的各個領(lǐng)域中。同時,隨著windowsxp操作系統(tǒng)在測控系統(tǒng)逐漸應(yīng)用,開發(fā)通信卡windowsxp驅(qū)動程序勢在必行。因此,我們針對自行研制的通信卡開發(fā)出了核心態(tài)的驅(qū)動程序,經(jīng)過廣泛的用戶用法,普遍反映應(yīng)用好。下面介紹

2、該通信卡的設(shè)計以及驅(qū)動程序的設(shè)計。通信卡的硬件設(shè)計1 通信卡的主要特點通信卡的硬件設(shè)計目的是智能化通信:在卡上具有4個dma通道及相應(yīng)的數(shù)據(jù)緩沖存儲區(qū)。在數(shù)據(jù)的接收過程中,通信卡會自動接收幀數(shù)據(jù),判別幀長度,在幀尾將接收到的幀數(shù)據(jù)提交系統(tǒng)。在發(fā)送數(shù)據(jù)過程中,系統(tǒng)只須把發(fā)送的數(shù)據(jù)提交給本卡,詳細的發(fā)送過程由該卡自行完成,不因多路通信而使主機增強開銷。該卡有內(nèi)/外時鐘兩種工作方式,近距離可省去調(diào)制解調(diào)器,波特率為600b/s64kb/s,提供2路符合rs-232/ccitt v.24和rs-422a標準的接口信號。2 通信卡的設(shè)計圖1 通信卡框圖通信卡組成框圖1所示。其主要由dma控制器、竟爭仲裁

3、器、串行通信控制器、數(shù)據(jù)緩沖存儲器sram、存儲器i/o映像和物理地址產(chǎn)生器、總線接口及防護、波特率產(chǎn)生器、接口電路等單元電路組成。dma控制器作為通信卡的主設(shè)備,控制卡上的數(shù)據(jù)接收和發(fā)送(來自通信控制器和cpu),并負責(zé)仲裁優(yōu)先權(quán)。因為在舉行數(shù)據(jù)通信時,允許主機cpu拜訪本卡sram,且主機對其中某一路發(fā)控制指令時,不影響其余三路通信,這樣將會使主機cpu與本卡dma竟爭本卡總線控制權(quán)。而總線上沒有給出主機cpu命令排隊狀態(tài)序列,故不能挺直設(shè)計多主竟爭,因而在本卡總線上用門陣列設(shè)計了一個狀態(tài)機,不斷地監(jiān)視總線爭用狀況,完成本卡總線竟爭、仲裁功能。完成hdlc規(guī)程的串行通信的器件是intel8

4、274多規(guī)程串行控制器,它能完成2個自立的串行接收/發(fā)送全雙工通信。為了使4個信道在一幀數(shù)據(jù)的發(fā)送或接收過程中,主機不干預(yù),故將發(fā)送的一幀數(shù)據(jù)在發(fā)送開頭前由cpu用批指令放入卡上的sram中;同樣,在接收過程中,卡上dma將接收到的數(shù)據(jù)放入sram中,等一幀接收完成后,再用批指令取出,放入系統(tǒng)存儲器中??ㄉ蟬ram不占用主機內(nèi)存地址,采納i/0映像,該適配器插入主機之后,主機通過系統(tǒng)i/o地址對其拜訪,這由地址產(chǎn)生器完成。總線接口包括數(shù)據(jù),數(shù)據(jù)開關(guān)電路,讀、寫及中斷等控制電路,地址譯碼等。波特率產(chǎn)生器提供了一個可編程的時鐘,用戶可自行設(shè)置通信速率,供工作于內(nèi)時鐘方式時用法。接口電路提供符合rs

5、-232/ccitt v.24和rs-422a標準的接口信號。3通信流程設(shè)計假如要發(fā)送一幀數(shù)據(jù),cpu用批指令將數(shù)據(jù)放到本卡sram中,然后設(shè)置相應(yīng)的發(fā)送dma通道。dma通道是非自動重裝方式,啟動8274控制器發(fā)送,然后cpu就不需要管理,由卡上硬件自動發(fā)送。假如需要接收數(shù)據(jù),啟動接收通道。接收通路自動搜尋輸入信號,搜尋到數(shù)據(jù)幀時,由卡上dma控制器來管理,將接收的數(shù)據(jù)放入本卡sram中,并向cpu哀求中斷,讀出數(shù)據(jù)。4 總線竟爭設(shè)計因為同時可舉行四路通信,且cpu可隨時對某一路發(fā)控制指令或拜訪卡上sram存儲器,就將浮現(xiàn)cpu與本卡主設(shè)備dma爭用本卡總線的情況。因為isa總線沒能給出cp

6、u命令排隊狀態(tài)序列,這給總線仲裁帶來了困難,而本卡的總線竟爭、仲裁是由可編程規(guī)律器件設(shè)計的狀態(tài)機來完成的。狀態(tài)機用法一個4mhz信號作為時鐘,共設(shè)3種狀態(tài): cpu控制狀態(tài)。 dma控制狀態(tài)。 空閑狀態(tài), cpu及dma均未能得到控制權(quán)。當(dāng)狀態(tài)機檢測到無cpu及dma申請總線用法權(quán)時,就進入空閑狀態(tài),而一旦cpu或dma哀求總線,狀態(tài)機立刻將總線用法權(quán)交給cpu或dma。假如正在cpu控制狀態(tài)期間,dma申請總線用法權(quán),狀態(tài)機仍然判定cpu控制總線,讓dma處于等待,直到檢測cpu命令完成,狀態(tài)機才轉(zhuǎn)為dma控制狀態(tài)。假如在dma控制狀態(tài)時,cpu申請總線用法權(quán),狀態(tài)機仍然判定dma控制總線,

7、讓cpu處于等待,直至dma字節(jié)傳送完,狀態(tài)機轉(zhuǎn)為cpu控制狀態(tài)。cpu及dma對總線的用法權(quán)是單個命令或字節(jié)傳送,不設(shè)置總線封鎖,因而cpu、dma可頻繁交換用法權(quán),不會浮現(xiàn)等待時光過長的現(xiàn)象。通信卡的驅(qū)動程序設(shè)計1 設(shè)備驅(qū)動程序的i/o模型通信卡的驅(qū)動程序是利用windowsxp的ddk軟件開發(fā)的標準的核心態(tài)設(shè)備驅(qū)動程序。它用法統(tǒng)一的“文件”形式,用戶可以通過代表通信卡設(shè)備的文件名,在win32子系統(tǒng)中用文件操作函數(shù)來拜訪。該設(shè)備驅(qū)動和程序可以按照用戶的需要,設(shè)置為自動加載,或手動加載,也可以動態(tài)的加載該驅(qū)動程序。通信卡的驅(qū)動程序設(shè)計成為支持同步i/o模型,也可以為異步i/o模型。2 發(fā)送

8、數(shù)據(jù)i/o例程設(shè)計在用戶態(tài)提交發(fā)送任務(wù)到核心態(tài),由i/o管理程序負責(zé)調(diào)用驅(qū)動程序,驅(qū)動程序發(fā)送irp交給硬件,假若當(dāng)前發(fā)送器不忙,則詳細的發(fā)送操作所有由發(fā)送器自行完成,而驅(qū)動程序則返回已經(jīng)一個本幀可以發(fā)送的標記。詳細的發(fā)送完成結(jié)果則可以在發(fā)送任務(wù)完成后查詢得到??墒牵偃绯绦蛳虍?dāng)前設(shè)備發(fā)送器提交發(fā)送任務(wù)時,該發(fā)送器正在處理上一幀,那么則有兩種辦法處理。 立刻方式:立刻返回一個錯誤,當(dāng)前設(shè)備忙,不能發(fā)送。堵塞方式:i/o管理器程序會調(diào)度相應(yīng)的異步處理例程,將當(dāng)前的發(fā)送任務(wù)放進任務(wù)隊列中,返回一個標記:i/o掛起,當(dāng)前設(shè)備忙,發(fā)送任務(wù)提交任務(wù)隊列。驅(qū)動程序會在發(fā)送器空閑時,提交任務(wù)隊列中的發(fā)送任務(wù)

9、給發(fā)送器。完成發(fā)送任務(wù)后,將相關(guān)文件句柄設(shè)為有信號狀態(tài),通知本次發(fā)送任務(wù)完成。3接收數(shù)據(jù)i/o例程接收數(shù)據(jù)例程采納客戶/服務(wù)器的模式設(shè)計。因為用戶的接收哀求和硬件的接收并不是同步的,所以在設(shè)計中,為避開走失數(shù)據(jù),考慮制造一個特地的接收線程。這樣,同步用戶哀求、接收線程、硬件層之間的通信就必需認真地設(shè)計。圖2暗示了用戶態(tài)接收哀求、接收線程以及硬件層之間的通信同步。圖2 用戶態(tài)接收哀求、接收線程與硬件層之間的通信同步 硬件層與接收線程之間通信硬件層與接收線程之間通信的同步是通過同步大事對象來實現(xiàn)的。同步大事對象通常處于無信號狀態(tài),惟獨當(dāng)勝利地接收到一幀時,才將該大事置為有信號狀態(tài)。接收線長期等待同

10、步大事對象,在沒有收到數(shù)據(jù)時,因同步大事對象處于無信號狀態(tài)而堵塞。當(dāng)硬件檢測到數(shù)據(jù)時,實時中斷服務(wù)程序負責(zé)將同步大事對象置為有信號狀態(tài),接收線程就會釋放堵塞。將通信卡sram上的接收數(shù)據(jù)讀進接收線程緩沖區(qū)隊列,然后將同步大事對象置為無信號狀態(tài),接收線程再次堵塞,等待接收下一幀數(shù)據(jù)。 用戶層和接收線程之間的通信當(dāng)用戶提交接收任務(wù)時,由驅(qū)動程序的調(diào)度程序讀取接收線程的緩沖區(qū)隊列,并將標記置為“空”,同時將緩沖隊列大事置為無信號狀態(tài),并返回,假如緩沖區(qū)是空,則 立刻方式:立刻返回很多據(jù)。 堵塞方式:堵塞直到有數(shù)據(jù)隊列進入。接收隊列的每個緩沖區(qū)都對應(yīng)一個通知大事,假如接收線程將sram中的數(shù)據(jù)讀進隊列

11、,就將相應(yīng)的通知大事置為有信號狀態(tài),用戶哀求就等待該通知大事,只要有數(shù)據(jù)在隊列中,就讀取返回,否則被堵塞。4 硬中斷服務(wù)程序設(shè)計通信卡在全雙工的通信中具有實時性,而且在較高的波特率,硬中斷十分多。為了防止高優(yōu)先級中斷過多地搶占cpu時光,設(shè)計中采納了實時中斷服務(wù)程序和延遲過程調(diào)用的辦法。在windowsxp系統(tǒng)中,每個內(nèi)核函數(shù)和過程都運行于特定的優(yōu)先級。較高優(yōu)先級的函數(shù)或大事可以搶占較低優(yōu)先級,反之則不然。實時中斷服務(wù)程序isr運行于dirql級,具有較高的優(yōu)先級,它只能被更高級的硬中斷所搶占,不會對同級或較低優(yōu)先級的硬中斷的響應(yīng)。所以,在實時中斷服務(wù)程序中,只做盡量少的必需工作,即讀出中斷向

12、量,而將大量的數(shù)據(jù)傳送及處理等工作交給延遲過程dpc去完成。由于dpc過程運行于dispatch_level級,是相對較低的優(yōu)先級,它可以被任何級的硬中斷所搶占。這樣,既保證了硬中斷的準時響應(yīng),又提高了程序的性能。5 驅(qū)動程序入口例程windowsxp為每個核心態(tài)的驅(qū)動程序提供了一個默認的標準入口點driverentry()。設(shè)計中,考慮到該例程運行于passive_leve級,系統(tǒng)只運行該例程一次就拋棄了,所以在驅(qū)動程序中用到的重要數(shù)據(jù)、對象等都不能保存在driverentry()例程中,必需在初始化過程中分配一塊nopaged內(nèi)存來保存。通信卡的驅(qū)動程序的driverentry()例程主要

13、完成如下功能。讀取registry的硬件配置信息;聲明i/o地址、中斷等資源;創(chuàng)建代表通信卡的設(shè)備名mpsc,該名字對win32子系統(tǒng)是可見的;設(shè)置調(diào)度例程入口點;分配一塊nopaged的內(nèi)存,存儲重要信息;銜接硬中斷,設(shè)置中斷服務(wù)程序;初始化線程、大事、信號燈、dpc等內(nèi)核對象;返回狀態(tài)status_success。假如在以上過程中碰到錯誤,則需要做以下工作:斷開硬中斷;釋放硬件資源;將相關(guān)的錯誤信息打包,并記錄;返回錯誤信息。6 設(shè)計驅(qū)動程序中需要注重的問題于通信卡在應(yīng)用中具有一定的實時性,為了克服中斷的不確定性,提高系統(tǒng)的性能,開發(fā)了windowsxp系統(tǒng)全部驅(qū)動程序中最難的異步驅(qū)動程序。在系統(tǒng)的內(nèi)核開發(fā),異步模型i/o操作中,內(nèi)核對象的同步非常復(fù)雜,細微的差錯都會導(dǎo)致系統(tǒng)徹底崩潰。在設(shè)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論