當(dāng)前位置:首頁 > 物聯(lián)網(wǎng) > 《物聯(lián)網(wǎng)技術(shù)》雜志
[導(dǎo)讀]摘要:PCI總線已經(jīng)成為工業(yè)控制計(jì)算機(jī)中的主流總線結(jié)構(gòu),文中給出了采用PCI總線的DMA方式來實(shí)現(xiàn)大量高速數(shù)據(jù)捕獲,包括DMA數(shù)據(jù)傳輸和突發(fā)數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)方法。該方法的驅(qū)動(dòng)程序采用WinDriver驅(qū)動(dòng)開發(fā)平臺(tái),并借助PCI設(shè)備操作函數(shù)的動(dòng)態(tài)鏈接庫,使Windows驅(qū)動(dòng)程序的開發(fā)更加容易,縮短了驅(qū)動(dòng)程序開發(fā)與調(diào)試周期,并可方便地應(yīng)用于其它PCI設(shè)備的控制。

引言

隨著ISA總線逐步被淘汰,基于PCI總線的擴(kuò)展板越來越被廣泛地應(yīng)用于各種高速、大數(shù)據(jù)量的處理系統(tǒng)中。盡管有許多供應(yīng)商提供了各種通用的PCI總線擴(kuò)展板,但在較多應(yīng)用場(chǎng)合,用戶還必須自行設(shè)計(jì)能滿足自己特殊需求的PCI擴(kuò)展板,這就不可避免地會(huì)遇到PCI總線接口問題。對(duì)于絕大多數(shù)用戶而言,選擇專用PCI接口芯片進(jìn)行PCI接口設(shè)計(jì)是必然的選擇。PCI9054是PLX公司推出的一種32位33MHz的PCI總線主控I/O加速器。它采用多種先進(jìn)技術(shù),使復(fù)雜的PCI接口應(yīng)用設(shè)計(jì)變得相對(duì)簡(jiǎn)單。該芯片是目前主流的PCI接口芯片之一。

1  PCI9054的工作模式及DMA處理機(jī)制

PCI是外圍設(shè)備互連(PeripheralComponentInterconnect)的簡(jiǎn)稱,它是一種通用總線接口標(biāo)準(zhǔn)。PCI提供了一組完整的總線接口規(guī)范、電氣特性和行為規(guī)約,通過該規(guī)范,計(jì)算機(jī)系統(tǒng)中的外圍設(shè)備能夠?qū)崿F(xiàn)結(jié)構(gòu)化、可控化的連接以及正確地進(jìn)行交互。PCI設(shè)備上有三種地址空間:I/O空間、存儲(chǔ)空間和配置空間。其中配置空間的信息主要包括設(shè)備識(shí)別號(hào)、供應(yīng)商代碼號(hào)、Local總線三個(gè)空間的大小以及三個(gè)空間的基址等。

在計(jì)算機(jī)啟動(dòng)時(shí),系統(tǒng)將根據(jù)配置信息分配系統(tǒng)資源。CPU可以訪問PCI設(shè)備上的所有地址空間,其中I/O空間和存儲(chǔ)空間提供給設(shè)備驅(qū)動(dòng)程序使用,而配置空間則由操作系統(tǒng)內(nèi)核中的PCI初始化代碼使用。PCI總線接口因其傳輸速度快、即插即用、自動(dòng)配置的優(yōu)點(diǎn)而成為實(shí)現(xiàn)數(shù)據(jù)采集設(shè)備到主機(jī)之間接口的首選。

PCI9054是PLX公司生產(chǎn)的PCI總線接口控制器芯片,符合PCIV2.2規(guī)范,32位,工作頻率為33MHz,擁有兩個(gè)獨(dú)立的DMA通道,傳輸速率達(dá)132MB/s。PCI9054提供有PCI總線、EEPROM、LOCAL總線三個(gè)接口,其中LOCAL總線有三種工作模式:M模式、C模式和J模式,可通過模式選擇控制引腳MODE[1:0]進(jìn)行控制。當(dāng)MODE[1:0]為“11”時(shí),PCI9054工作在M模式;當(dāng)MODE[1:0]為"00"時(shí),PCI9054工作在C模式;當(dāng)MODE[1:0]為“01”時(shí),PCI9054工作在J模式;當(dāng)MODE[1:0]為“10”時(shí),保留工作狀態(tài)。M模式可與Motorola公司的MPC850或MPC860系列高性能微處理器進(jìn)行無縫連接;C模式可與Inteli960系列高性能微處理器進(jìn)行無縫連接;J模式地址和數(shù)據(jù)線可以復(fù)用,但應(yīng)用很復(fù)雜,不過在一些特殊的應(yīng)用場(chǎng)合,利用J模式可以和TI公司6000系列DSP的HPI口進(jìn)行接口,其控制邏輯將比其它模式簡(jiǎn)單得多。

在實(shí)際的數(shù)據(jù)采集時(shí),LOCAL總線接口一般設(shè)置為C模式。PCI9054芯片在PCI總線和LO-CAL總線之間有三種直接的數(shù)據(jù)傳輸模式,其中,在PCIInitiator模式,LOCAL總線主設(shè)備可通過PCI9054訪問PCI總線存儲(chǔ)空間和I/O空間;在PCITarget模式,PCI總線主設(shè)備可通過PCI9054訪問LOCAL總線存儲(chǔ)空間和I/O空間;而在DMA方式,PCI9054作為兩總線的主設(shè)備,可實(shí)現(xiàn)PCI總線存儲(chǔ)空間與LOCAL總線存儲(chǔ)空間之間的數(shù)據(jù)傳輸。

在PCI9054中,DMA傳輸主要用于PCI總線與LOCAL總線間的數(shù)據(jù)傳輸,此時(shí),PCI9054將接管兩總線的控制權(quán),可進(jìn)行兩個(gè)方向的數(shù)據(jù)傳輸。和DMA操作相關(guān)的寄存器包括:DMA模式寄存器(DMAMODE)、PCI基地址寄存器(DMAPADR)、LOCAL基地址寄存器(DMALADR),傳輸大小寄存器(DMASIZ)和描述符指針寄存器(DMADPR)o

通過這些寄存器的操作,就可以實(shí)現(xiàn)PCI到LOCAL或LOCAL到PCI的DMA數(shù)據(jù)傳輸。但是,這只是在硬件上的實(shí)現(xiàn),而要在Windows操作系統(tǒng)上進(jìn)行操作,還必須具有相應(yīng)的驅(qū)動(dòng)程序支持。

2  DMA方式數(shù)據(jù)傳輸

雖然DriverWorks已設(shè)計(jì)好了程序框架,但其流程較為復(fù)雜。下面簡(jiǎn)要介紹如何編寫DMA的WDM驅(qū)動(dòng)程序。DriverWorks提供了三個(gè)類:kd--maAdapter、KDmaTransfer和KCommonDmaBuffer類,可用于實(shí)現(xiàn)DMA操作。其中,KDmaTransfer類用來管理和操縱DMA傳送,它能夠管理所有類型的DMA傳送操作;KDmaAdapter類用于建立一個(gè)DMA適配器,以說明DMA通道的特性,描述DMA傳送類型。例如,是總線主設(shè)備DMA還是系統(tǒng)DMA?如果是系統(tǒng)DMA,還有使用哪個(gè)DMA通道,DMA通道的寬度是8b還是16b等?而Kcom-monDmaBuffer類用于申請(qǐng)系統(tǒng)提供的公用緩沖區(qū)。利用上述幾個(gè)類來編寫DMA驅(qū)動(dòng)程序的步驟如下:

(1) 創(chuàng)建一個(gè)KDmaAdapter類的實(shí)例,并且正確地描述要進(jìn)行的DMA信息。

(2) 決定驅(qū)動(dòng)程序使用的內(nèi)存類型是“Packet”還是“CommonBuffer”。DMA傳送可以使用Com-monBuffer暫時(shí)存放所要傳送的數(shù)據(jù)。CommonBuffer是由系統(tǒng)預(yù)先分配的一塊物理地址連續(xù)的內(nèi)存區(qū)域,處理器和設(shè)備都能對(duì)它進(jìn)行訪問。Kcom-monDmaBuffer類可對(duì)CommonBuffer進(jìn)行描述。另外一種方法是使用MDL(MemoryDescriptorList)描述的內(nèi)存區(qū)域來作為DMA傳送數(shù)據(jù)的源與目標(biāo),這種方法被稱為"PacketDMA”;

(3) 創(chuàng)建—KDmaTransfer類的實(shí)例,并使用成員函數(shù)Initiate給實(shí)例加入一個(gè)回調(diào)函數(shù)(callbackfunction)。

(4) 編寫上面所說的回調(diào)函數(shù)。當(dāng)一次DMA傳送由于硬件設(shè)備的限制或由于緩沖區(qū)容量大小的限制而不得不分成多段傳送時(shí),回調(diào)函數(shù)將會(huì)被多次調(diào)用。它首先通知設(shè)備開始進(jìn)行傳送,然后立即返回,而并不是等待傳送結(jié)束再返回。

(5) 編寫代碼來處理分段傳送結(jié)束。驅(qū)動(dòng)程序應(yīng)能判定何時(shí)DMA傳送的一個(gè)分段傳送結(jié)束。驅(qū)動(dòng)程序必須調(diào)用成員函數(shù)Continue來通知傳送對(duì)象當(dāng)前分段已傳送完畢,如果整個(gè)DMA傳送還未完成,它會(huì)設(shè)置下一次傳送,并調(diào)用回調(diào)函數(shù)。DMA數(shù)據(jù)傳輸?shù)某绦蛄鞒虉D如圖1所示。

基于PCI9054的DMA和突發(fā)數(shù)據(jù)傳輸實(shí)現(xiàn)

3  DMA和突發(fā)數(shù)據(jù)傳輸

在《PCI9054-DataBook》中,每種工作模式都將DMA和突發(fā)數(shù)據(jù)傳輸?shù)臅r(shí)序圖放在一起,這并不意味著DMA和突發(fā)數(shù)據(jù)傳輸是等同的,這是兩個(gè)不同的概念。事實(shí)上,既可利用一周期的總線操作,也可以利用DMA方式進(jìn)行數(shù)據(jù)傳輸。

DMA和突發(fā)數(shù)據(jù)傳輸?shù)淖饔貌煌?。PCI9054中有兩個(gè)DMA通道,可以獨(dú)立工作,互不干擾。釆用DMA方式傳輸數(shù)據(jù)可以節(jié)省CPU資源;而采用突發(fā)方式傳輸數(shù)據(jù)可以提高數(shù)據(jù)的傳輸率,充分發(fā)揮PCI總線數(shù)據(jù)傳輸速率高的優(yōu)點(diǎn)。因此,在高速大容量數(shù)據(jù)傳輸和處理系統(tǒng)中,將DMA和突發(fā)數(shù)據(jù)傳輸方式結(jié)合在一起是比較理想的,這樣一方面可以充分發(fā)揮PCI總線的性能,另一方面,也可以用節(jié)省出的CPU資源對(duì)數(shù)據(jù)處理算法進(jìn)行優(yōu)化。用狀態(tài)機(jī)實(shí)現(xiàn)該控制邏輯是比較理想的-PCI9054在C模式下,釆用單一周期和突發(fā)相結(jié)合的總線訪問狀態(tài)轉(zhuǎn)換程序流程圖如圖2所示。

基于PCI9054的DMA和突發(fā)數(shù)據(jù)傳輸實(shí)現(xiàn)

用該狀態(tài)轉(zhuǎn)換圖設(shè)計(jì)出的邏輯電路,既可滿足單一周期總線訪問的需要,又可以滿足突發(fā)方式傳輸數(shù)據(jù)的需要,因而具有很大的實(shí)用價(jià)值。使用DMA和突發(fā)方式相結(jié)合進(jìn)行數(shù)據(jù)傳輸時(shí),其驅(qū)動(dòng)程序應(yīng)作如下設(shè)置:

(1) 調(diào)用驅(qū)動(dòng)程序中相應(yīng)的API函數(shù),找到PC機(jī)的物理地址;

(2) 在設(shè)備驅(qū)動(dòng)程序中使能突發(fā)寄存器;

(3) 在設(shè)備驅(qū)動(dòng)程序中使能總線位寬寄存器;

(4) 在設(shè)備驅(qū)動(dòng)程序中使能相應(yīng)的寄存器,指明DMA傳輸?shù)姆较蚴荘CI—LOCAL還是LOCAL

—PCI;

       (5) 在設(shè)備驅(qū)動(dòng)程序中指明本次DMA傳輸需要傳輸?shù)淖止?jié)數(shù)。

完成上述設(shè)置后,即可在突發(fā)方式下進(jìn)行DMA傳輸,否則,DMA傳輸就會(huì)失敗。

4  結(jié)論

計(jì)算機(jī)接口技術(shù)的變化主要是由以前的以基本接口設(shè)計(jì)為中心轉(zhuǎn)變?yōu)橐訮CI總線相關(guān)技術(shù)為中心。在8/16位的系統(tǒng)環(huán)境下,硬件擴(kuò)展卡的設(shè)計(jì)主要是面向ISA總線,所有的可用資源都是固定不變的;在編程方面是直來直去,并沒有什么保護(hù)措施。而在32位系統(tǒng)環(huán)境下,所有的資源都是動(dòng)態(tài)分配的,而且在設(shè)計(jì)擴(kuò)展卡時(shí),并不是直接與系統(tǒng)打交道,而是要經(jīng)過多次的邏輯轉(zhuǎn)換。對(duì)于軟件的設(shè)計(jì),也需要編寫32位程序,并且需要經(jīng)過不同層次的軟件設(shè)計(jì)。

DMA通信高度依賴操作系統(tǒng)、硬件特性和資源。在實(shí)現(xiàn)DMA通信的過程中,其項(xiàng)目要求、DMA本身的特點(diǎn)、操作系統(tǒng)提供的支持、具體硬件特性以及系統(tǒng)資源之間是相互作用的。DMA環(huán)境的建立過程,就是各部分相互協(xié)調(diào)、互為支持的過程。DMA編程必須充分了解控制芯片所提供的手段和限制,這些手段和限制是實(shí)現(xiàn)DMA的基礎(chǔ)。實(shí)現(xiàn)DMA通信,需要處理的主要問題有:DMA緩沖區(qū)的物理連續(xù)問題、PCI設(shè)備檢測(cè)和初始化問題、緩沖區(qū)的大小問題、PCI設(shè)備信息的收集問題等。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉