基于dma的實(shí)時(shí)流數(shù)據(jù)傳送系統(tǒng)及方法
【專利摘要】本發(fā)明涉及一種基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送系統(tǒng)及其數(shù)據(jù)傳送方法,所述傳送系統(tǒng)包括主控CPU、DMA控制器、存儲(chǔ)器、系統(tǒng)總線、外設(shè)接口和虛擬從屬設(shè)備,DMA控制器通過系統(tǒng)總線控制存儲(chǔ)器與外設(shè)接口之間的實(shí)時(shí)數(shù)據(jù)傳送;本發(fā)明的DMA控制器可以從虛擬從屬設(shè)備中讀取默認(rèn)填充數(shù)據(jù),用于填充存儲(chǔ)器內(nèi)部輸出的流數(shù)據(jù),也可以將需要丟棄的外部輸入的流數(shù)據(jù)寫入虛擬從屬設(shè)備中,以配合DMA控制器在流數(shù)據(jù)實(shí)時(shí)傳送過程中實(shí)現(xiàn)對(duì)流數(shù)據(jù)的填充或丟棄功能;另一方面,虛擬從屬設(shè)備實(shí)現(xiàn)了在系統(tǒng)總線上的單周期寫入和讀取,速度更快,節(jié)省了總線資源,再者,虛擬從屬設(shè)備不占用存儲(chǔ)資源,默認(rèn)填充數(shù)據(jù)可配置,也節(jié)省了存儲(chǔ)器資源。
【專利說明】基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及DMA (直接存儲(chǔ)器存取)【技術(shù)領(lǐng)域】,尤其涉及一種基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送系統(tǒng)及方法。
【背景技術(shù)】
[0002]目前,在SoC(System on Chip,稱為片上系統(tǒng))芯片設(shè)計(jì)中,為了提高效率、節(jié)省數(shù)據(jù)總線帶寬,在數(shù)據(jù)傳送時(shí)廣泛采用DMA (直接存儲(chǔ)器存取)技術(shù)和方法。而在實(shí)時(shí)流數(shù)據(jù)傳送過程中,通常會(huì)面臨兩個(gè)問題:一個(gè)是從存儲(chǔ)器向外圍設(shè)備搬移流數(shù)據(jù)時(shí),需要保持?jǐn)?shù)據(jù)的實(shí)時(shí)性,即以均勻速率發(fā)送數(shù)據(jù),且不可中斷,這時(shí)如果存儲(chǔ)器中的數(shù)據(jù)準(zhǔn)備不足,將會(huì)導(dǎo)致實(shí)時(shí)流數(shù)據(jù)輸出中斷;另一個(gè)是從外設(shè)向存儲(chǔ)器搬移流數(shù)據(jù)時(shí),需要實(shí)時(shí)接收數(shù)據(jù),如果存儲(chǔ)器中沒有足夠的存儲(chǔ)空間,將會(huì)導(dǎo)致實(shí)時(shí)流數(shù)據(jù)無處存放。
[0003]在第一種情況下,通常的做法是事先準(zhǔn)備好一段零數(shù)據(jù)的內(nèi)存空間,在存儲(chǔ)器中的數(shù)據(jù)準(zhǔn)備不足時(shí),通知DMA控制器搬移該空間的數(shù)據(jù)來補(bǔ)充輸出流數(shù)據(jù)的不足,視為填充內(nèi)部輸出的流數(shù)據(jù)。在第二種情況下,通常的做法是事先準(zhǔn)備好一段內(nèi)存空間,在發(fā)生內(nèi)存空間不足時(shí),通知DMA控制器把該數(shù)據(jù)搬移到該空間去,可以反復(fù)寫入覆蓋,視為丟棄外部輸入的流數(shù)據(jù)。上述的處理方法,可以保證SoC芯片中流數(shù)據(jù)的實(shí)時(shí)搬運(yùn),也能滿足DMA控制器的任務(wù)鏈表操作。但是,上述兩種情況下,都是需要開辟額外的存儲(chǔ)空間,即填充或丟棄緩存空間,并且需要通過SoC芯片中的總線對(duì)存儲(chǔ)器進(jìn)行存取訪問,這樣必然浪費(fèi)了一定的存儲(chǔ)空間和總線帶寬。
【發(fā)明內(nèi)容】
[0004]本發(fā)明所要解決的技術(shù)問題是針對(duì)現(xiàn)有DMA控制器在實(shí)時(shí)流數(shù)據(jù)傳送過程中存在存儲(chǔ)空間和總線帶寬浪費(fèi)的問題,提供了一種在滿足實(shí)時(shí)流數(shù)據(jù)傳送時(shí)填充和丟棄需求的同時(shí),解決存儲(chǔ)空間和總線帶寬浪費(fèi)的問題,用于實(shí)時(shí)流數(shù)據(jù)填充與丟棄的基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送系統(tǒng)和基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送方法。
[0005]為解決上述問題,本發(fā)明的一種技術(shù)方案是:
[0006]一種基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送系統(tǒng),包括主控CPU、DMA控制器、存儲(chǔ)器、系統(tǒng)總線和外設(shè)接口,DMA控制器通過系統(tǒng)總線控制存儲(chǔ)器與外設(shè)接口之間的實(shí)時(shí)數(shù)據(jù)傳送,所述傳送系統(tǒng)還包括用于提供默認(rèn)填充數(shù)據(jù)及丟棄寫入數(shù)據(jù)的虛擬從屬設(shè)備,虛擬從屬設(shè)備占用總線地址空間,虛擬從屬設(shè)備設(shè)有總線從設(shè)備接口,總線從設(shè)備接口與系統(tǒng)總線相連;DMA控制器通過系統(tǒng)總線讀取虛擬從屬設(shè)備中的默認(rèn)填充數(shù)據(jù)到外設(shè)接口中,或者DMA控制器通過系統(tǒng)總線將外設(shè)接口中的數(shù)據(jù)寫入虛擬從屬設(shè)備中,寫入虛擬從屬設(shè)備中的數(shù)據(jù)由虛擬從屬設(shè)備直接丟棄。
[0007]相比較于現(xiàn)有技術(shù),本發(fā)明的基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送系統(tǒng)采用虛擬從屬設(shè)備作為DMA控制器的附屬設(shè)備,配合DMA控制器在流數(shù)據(jù)實(shí)時(shí)傳送過程中實(shí)現(xiàn)對(duì)流數(shù)據(jù)的填充或丟棄功能;另一方面,虛擬從屬設(shè)備實(shí)現(xiàn)了在系統(tǒng)總線上的單周期寫入和讀取,速度更快,節(jié)省了總線資源,再者,虛擬從屬設(shè)備不占用存儲(chǔ)資源,默認(rèn)填充數(shù)據(jù)是可以配置的,也節(jié)省了存儲(chǔ)器資源。
[0008]本發(fā)明的另一種技術(shù)方案是:
[0009]一種基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送系統(tǒng),包括主控CPU、DMA控制器、存儲(chǔ)器、系統(tǒng)總線和外設(shè)接口,DMA控制器通過系統(tǒng)總線控制存儲(chǔ)器與外設(shè)接口之間的實(shí)時(shí)數(shù)據(jù)傳送,所述DMA控制器內(nèi)設(shè)有用于提供默認(rèn)填充數(shù)據(jù)及丟棄寫入數(shù)據(jù)的虛擬從屬設(shè)備,虛擬從屬設(shè)備占用總線地址空間,虛擬從屬設(shè)備設(shè)有數(shù)據(jù)接口,數(shù)據(jù)接口與DMA控制器的內(nèi)部總線相連;DMA控制器讀取虛擬從屬設(shè)備中的默認(rèn)填充數(shù)據(jù)到外設(shè)接口中,或者DMA控制器將外設(shè)接口中的數(shù)據(jù)寫入虛擬從屬設(shè)備中,寫入虛擬從屬設(shè)備中的數(shù)據(jù)由虛擬從屬設(shè)備直接丟棄。
[0010]相比較于現(xiàn)有技術(shù),本發(fā)明的基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送系統(tǒng)采用虛擬從屬設(shè)備作為DMA控制器的虛擬子模塊,配合DMA控制器在流數(shù)據(jù)實(shí)時(shí)傳送過程中實(shí)現(xiàn)對(duì)流數(shù)據(jù)的填充或丟棄功能,DMA控制器對(duì)虛擬從屬設(shè)備進(jìn)行讀寫訪問時(shí),不需要進(jìn)行總線接口協(xié)議轉(zhuǎn)換,可以進(jìn)一步減少系統(tǒng)總線上的讀寫操作,更有利于節(jié)約總線資源和功耗;另一方面,虛擬從屬設(shè)備不占用存儲(chǔ)資源,默認(rèn)填充數(shù)據(jù)是可以配置的,也節(jié)省了存儲(chǔ)器資源。
[0011]本發(fā)明的再一種技術(shù)方案是:
[0012]一種基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送系統(tǒng)的數(shù)據(jù)傳送方法,所述傳送方法包括兩種數(shù)據(jù)傳送方式,第一種為存儲(chǔ)器實(shí)時(shí)將流數(shù)據(jù)傳送到外設(shè)接口,第二種為外設(shè)接口實(shí)時(shí)將流數(shù)據(jù)傳送到存儲(chǔ)器,所述傳送方法基于上述的傳送系統(tǒng);
[0013]所述第一種數(shù)據(jù)傳送方式包括如下步驟:
[0014]步驟a:主控CPU配置啟動(dòng)DMA控制器,總線控制權(quán)由主控CPU轉(zhuǎn)移到DMA控制器;
[0015]步驟b:DMA控制器讀取存儲(chǔ)器中的流數(shù)據(jù),并將流數(shù)據(jù)實(shí)時(shí)寫入到外設(shè)接口中,實(shí)現(xiàn)實(shí)時(shí)流數(shù)據(jù)的傳送;在流數(shù)據(jù)傳送過程中,主控CPU實(shí)時(shí)檢測(cè)存儲(chǔ)器中流數(shù)據(jù),當(dāng)檢測(cè)到的流數(shù)據(jù)不足以實(shí)時(shí)傳送時(shí),進(jìn)入步驟C,否則繼續(xù)實(shí)時(shí)傳送流數(shù)據(jù);
[0016]步驟c:DMA控制器通過系統(tǒng)總線讀取虛擬從屬設(shè)備中的默認(rèn)填充數(shù)據(jù),并將默認(rèn)填充數(shù)據(jù)實(shí)時(shí)寫入到外設(shè)接口中,當(dāng)主控CPU檢測(cè)到存儲(chǔ)器中的流數(shù)據(jù)充足可以實(shí)時(shí)傳送時(shí),返回步驟b,否則繼續(xù)實(shí)時(shí)傳送默認(rèn)填充數(shù)據(jù);
[0017]第二種數(shù)據(jù)傳送方式包括如下步驟:
[0018]步驟d:主控CPU配置啟動(dòng)DMA控制器,總線控制權(quán)由主控CPU轉(zhuǎn)移到DMA控制器;
[0019]步驟e:DMA控制器通過系統(tǒng)總線讀取外設(shè)接口中的流數(shù)據(jù),并將流數(shù)據(jù)實(shí)時(shí)寫入存儲(chǔ)器中,實(shí)現(xiàn)實(shí)時(shí)流數(shù)據(jù)的傳送;在流數(shù)據(jù)傳送過程中,主控CPU實(shí)時(shí)檢測(cè)存儲(chǔ)器的存儲(chǔ)空間,當(dāng)檢測(cè)到存儲(chǔ)空間不充足時(shí),進(jìn)入步驟f,否則繼續(xù)實(shí)時(shí)傳送流數(shù)據(jù);
[0020]步驟f:DMA控制器通過系統(tǒng)總線將從外設(shè)接口中實(shí)時(shí)讀取的流數(shù)據(jù)反復(fù)寫入到虛擬從屬設(shè)備中,將寫入流數(shù)據(jù)直接丟棄,當(dāng)主控CPU檢測(cè)到存儲(chǔ)器存儲(chǔ)空間充足時(shí),返回步驟e,否則繼續(xù)實(shí)時(shí)將流數(shù)據(jù)寫入虛擬從屬設(shè)備中。
[0021]相比較于現(xiàn)有技術(shù),本發(fā)明的基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送方法采用虛擬從屬設(shè)備作為DMA控制器的附屬設(shè)備,DMA控制器可以從虛擬從屬設(shè)備中讀取默認(rèn)填充數(shù)據(jù),用于填充存儲(chǔ)器內(nèi)部輸出的流數(shù)據(jù),也可以將需要丟棄的外部輸入的流數(shù)據(jù)寫入虛擬從屬設(shè)備中,以配合DMA控制器在流數(shù)據(jù)實(shí)時(shí)傳送過程中實(shí)現(xiàn)對(duì)流數(shù)據(jù)的填充或丟棄功能;另一方面,虛擬從屬設(shè)備實(shí)現(xiàn)了在系統(tǒng)總線上的單周期寫入和讀取,速度更快,節(jié)省了總線資源,再者,虛擬從屬設(shè)備不占用存儲(chǔ)資源,默認(rèn)填充數(shù)據(jù)可配置,也節(jié)省了存儲(chǔ)器資源。
【專利附圖】
【附圖說明】
[0022]圖1是本發(fā)明基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送系統(tǒng)的電路原理框圖。
[0023]圖2是本發(fā)明基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送系統(tǒng)另一種解決方案的電路原理框圖。
【具體實(shí)施方式】
[0024]下面結(jié)合附圖和實(shí)施例進(jìn)一步詳細(xì)說明本發(fā)明,但本發(fā)明的保護(hù)范圍并不限于此。
[0025]參照?qǐng)D1,本發(fā)明的基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送系統(tǒng)包括主控CPU、DMA控制器、存儲(chǔ)器、系統(tǒng)總線、外設(shè)接口和虛擬從屬設(shè)備,系統(tǒng)總線分別與主控CPU、DMA控制器、存儲(chǔ)器、外設(shè)接口和虛擬從屬設(shè)備相連,DMA控制器通過系統(tǒng)總線控制存儲(chǔ)器與外設(shè)接口之間的實(shí)時(shí)流數(shù)據(jù)傳送,通過虛擬從屬設(shè)備配合DMA控制器在流數(shù)據(jù)實(shí)時(shí)傳送過程中實(shí)現(xiàn)對(duì)流數(shù)據(jù)的填充或丟棄功能。
[0026]其中,虛擬從屬設(shè)備(dummy slaver)是DMA控制器的附屬設(shè)備,虛擬從屬設(shè)備具有總線從設(shè)備接口,是系統(tǒng)總線上的從設(shè)備,與系統(tǒng)總線相連;虛擬從屬設(shè)備占用總線地址空間,在其地址空間內(nèi),允許DMA控制器等其他總線主設(shè)備對(duì)其進(jìn)行讀寫操作。虛擬從屬設(shè)備內(nèi)配置有默認(rèn)填充數(shù)據(jù),用于填充存儲(chǔ)器的內(nèi)部數(shù)據(jù),虛擬從屬設(shè)備支持寫操作,可以將外部需要丟棄的流數(shù)據(jù)直接寫入,實(shí)現(xiàn)丟棄。當(dāng)對(duì)虛擬從屬設(shè)備進(jìn)行讀操作時(shí),單周期可獲取預(yù)先配置的默認(rèn)填充數(shù)據(jù);當(dāng)對(duì)虛擬從屬設(shè)備進(jìn)行寫操作時(shí),單周期完成并直接丟棄寫入數(shù)據(jù),不具備存儲(chǔ)功能。
[0027]主控CPU用于產(chǎn)生數(shù)據(jù)源,并將產(chǎn)生的數(shù)據(jù)源通過系統(tǒng)總線寫入存儲(chǔ)器中,或者主控CPU用于消費(fèi)存儲(chǔ)器中的數(shù)據(jù)源,同時(shí),主控CPU為主控制中心,控制系統(tǒng)的運(yùn)行。系統(tǒng)在實(shí)時(shí)流數(shù)據(jù)傳送過程中,需要在存儲(chǔ)器中需要開辟兩塊存儲(chǔ)功能空間,首先是流數(shù)據(jù)緩存,流數(shù)據(jù)緩存由多個(gè)數(shù)據(jù)塊構(gòu)成;其次是DMA任務(wù)鏈表,通常由兩個(gè)任務(wù)鏈表構(gòu)成,實(shí)現(xiàn)乒乓操作,每個(gè)DMA任務(wù)鏈表中存放當(dāng)前DMA任務(wù)的基本要素:DMA搬運(yùn)的數(shù)據(jù)源端地址,DMA搬運(yùn)的數(shù)據(jù)終端地址,DMA搬運(yùn)傳輸控制,以及下一個(gè)任務(wù)鏈表的讀取地址。
[0028]為了更加清楚闡述本發(fā)明的流數(shù)據(jù)傳送方式,將系統(tǒng)總線根據(jù)傳輸通道的不同分為I號(hào)系統(tǒng)總線、2號(hào)系統(tǒng)總線和3號(hào)系統(tǒng)總線,I號(hào)系統(tǒng)總線分別與2號(hào)系統(tǒng)總線、主控CPU和存儲(chǔ)器進(jìn)行通信,2號(hào)系統(tǒng)總線分別與DMA控制器、虛擬從屬設(shè)備和外設(shè)接口進(jìn)行通信,3號(hào)系統(tǒng)總線分別與DMA控制器、虛擬從屬設(shè)備和存儲(chǔ)器進(jìn)行通信,I號(hào)系統(tǒng)總線和2號(hào)系統(tǒng)總線通過總線橋相連。DMA控制器通過2號(hào)和3號(hào)系統(tǒng)總線讀取虛擬從屬設(shè)備中的默認(rèn)填充數(shù)據(jù)到外設(shè)接口中,或者DMA控制器通過2號(hào)和3號(hào)系統(tǒng)總線將外設(shè)接口中的數(shù)據(jù)寫入虛擬從屬設(shè)備中,寫入虛擬從屬設(shè)備中的數(shù)據(jù)由虛擬從屬設(shè)備直接丟棄。
[0029]本發(fā)明的基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送系統(tǒng)的數(shù)據(jù)傳送方法,是基于上述提及的傳送系統(tǒng),即為傳送系統(tǒng)的工作流程,傳送方法包括兩種數(shù)據(jù)傳送方式,第一種為存儲(chǔ)器實(shí)時(shí)將流數(shù)據(jù)傳送到外設(shè)接口,即內(nèi)部數(shù)據(jù)的訪問;第二種為外設(shè)接口實(shí)時(shí)將流數(shù)據(jù)傳送到存儲(chǔ)器,即外部數(shù)據(jù)的訪問,以實(shí)現(xiàn)實(shí)時(shí)流數(shù)據(jù)的雙向通信。
[0030]在第一種數(shù)據(jù)傳送方式下,即存儲(chǔ)器實(shí)時(shí)將流數(shù)據(jù)傳送到外設(shè)接口,由主控CPU產(chǎn)生數(shù)據(jù)源,并將數(shù)據(jù)源通過I號(hào)系統(tǒng)總線寫入存儲(chǔ)器的流數(shù)據(jù)緩存中,配置虛擬從屬設(shè)備的默認(rèn)填充數(shù)據(jù),具體包括如下步驟:
[0031]步驟a:主控CPU配置啟動(dòng)DMA控制器,總線控制權(quán)由主控CPU轉(zhuǎn)移到DMA控制器;主控CPU配置DMA控制器內(nèi)的配置寄存器,建立數(shù)據(jù)傳送由存儲(chǔ)器到外設(shè)接口的數(shù)據(jù)通道,配置搬運(yùn)類型,DMA通道使能,中斷使能等全局配置,同時(shí)在存儲(chǔ)器中準(zhǔn)備DMA任務(wù)鏈表。
[0032]步驟b:主控CPU配置DMA任務(wù)鏈表的內(nèi)容,將數(shù)據(jù)源端地址指向存儲(chǔ)器,數(shù)據(jù)終端地址指向外設(shè)接口,啟動(dòng)DMA數(shù)據(jù)傳輸,DMA控制器通過3號(hào)系統(tǒng)總線讀取存儲(chǔ)器中的流數(shù)據(jù),并將流數(shù)據(jù)通過2號(hào)系統(tǒng)總線實(shí)時(shí)寫入到外設(shè)接口中,實(shí)現(xiàn)實(shí)時(shí)流數(shù)據(jù)的傳送;在流數(shù)據(jù)傳送過程中,一方面,主控CPU不斷的將產(chǎn)生流數(shù)據(jù)源存放到存儲(chǔ)器的流數(shù)據(jù)緩存中,另一方面,主控CPU接收DMA任務(wù)中斷,主控CPU實(shí)時(shí)檢測(cè)存儲(chǔ)器中流數(shù)據(jù)是否即將變空,當(dāng)檢測(cè)到的流數(shù)據(jù)不足以實(shí)時(shí)傳送時(shí),進(jìn)入步驟C,否則繼續(xù)實(shí)時(shí)傳送流數(shù)據(jù);
[0033]步驟c:主控CPU配置下一個(gè)DMA任務(wù)鏈表的內(nèi)容,將數(shù)據(jù)源端地址由存儲(chǔ)器改為虛擬從屬設(shè)備的地址,其它配置不變,DMA控制器通過3號(hào)系統(tǒng)總線讀取虛擬從屬設(shè)備中的默認(rèn)填充數(shù)據(jù),并將默認(rèn)填充數(shù)據(jù)通過2號(hào)系統(tǒng)總線實(shí)時(shí)寫入到外設(shè)接口中,彌補(bǔ)主控CPU產(chǎn)生的數(shù)據(jù)源不足的問題。當(dāng)主控CPU檢測(cè)到存儲(chǔ)器中的流數(shù)據(jù)充足可以實(shí)時(shí)傳送時(shí),返回步驟b,否則繼續(xù)實(shí)時(shí)傳送默認(rèn)填充數(shù)據(jù)。
[0034]第二種數(shù)據(jù)傳送方式,即外設(shè)接口實(shí)時(shí)將流數(shù)據(jù)傳送到存儲(chǔ)器,由與外設(shè)接口相連的外設(shè)產(chǎn)生數(shù)據(jù)源,主控CPU消費(fèi)數(shù)據(jù)源,主控CPU配置虛擬從屬設(shè)備中的寫入功能,具體包括如下步驟:
[0035]步驟d:主控CPU配置啟動(dòng)DMA控制器,總線控制權(quán)由主控CPU轉(zhuǎn)移到DMA控制器;主控CPU配置DMA控制器內(nèi)的配置寄存器,建立數(shù)據(jù)傳送由外設(shè)接口到存儲(chǔ)器的數(shù)據(jù)通道,配置搬運(yùn)類型,DMA通道使能,中斷使能等全局配置,同時(shí)在存儲(chǔ)器中準(zhǔn)備DMA任務(wù)鏈表。
[0036]步驟e:主控CPU配置DMA任務(wù)鏈表的內(nèi)容,將數(shù)據(jù)源端地址指向外設(shè)接口,數(shù)據(jù)終端地址指向存儲(chǔ)器,啟動(dòng)DMA數(shù)據(jù)傳輸,DMA控制器通過2號(hào)系統(tǒng)總線讀取外設(shè)接口中的流數(shù)據(jù),并將流數(shù)據(jù)實(shí)時(shí)通過3號(hào)系統(tǒng)總線寫入到存儲(chǔ)器中,實(shí)現(xiàn)實(shí)時(shí)流數(shù)據(jù)的傳送;在流數(shù)據(jù)傳送過程中,一方面,主控CPU不斷的消耗流數(shù)據(jù),另一方面,主控CPU接收DMA任務(wù)中斷,主控CPU實(shí)時(shí)檢測(cè)存儲(chǔ)器的存儲(chǔ)空間,當(dāng)檢測(cè)到存儲(chǔ)器存儲(chǔ)空間不充足時(shí),進(jìn)入步驟f,否則繼續(xù)實(shí)時(shí)傳送流數(shù)據(jù);
[0037]步驟f:主控CPU配置下一個(gè)DMA任務(wù)鏈表的內(nèi)容,將數(shù)據(jù)終端地址由存儲(chǔ)器改為虛擬從屬設(shè)備的地址,DMA控制器通過2號(hào)系統(tǒng)總線讀取外設(shè)接口中流數(shù)據(jù),并將流數(shù)據(jù)通過3號(hào)系統(tǒng)總線反復(fù)寫入到虛擬從屬設(shè)備中,實(shí)現(xiàn)流數(shù)據(jù)的直接丟棄,彌補(bǔ)存儲(chǔ)器存儲(chǔ)空間不足的問題。當(dāng)主控CPU檢測(cè)到存儲(chǔ)器存儲(chǔ)空間充足時(shí),返回步驟e,否則繼續(xù)實(shí)時(shí)將流數(shù)據(jù)寫入虛擬從屬設(shè)備中。
[0038]參照?qǐng)D2,本發(fā)明的基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送系統(tǒng)的另一種解決方案,與上述實(shí)施方案不同的是,本實(shí)施例中的虛擬從屬設(shè)備集成到DMA控制器中,可以省去系統(tǒng)總線從設(shè)備接口,直接作為DMA數(shù)據(jù)傳送通道上特定地址空間的節(jié)點(diǎn)。
[0039]本發(fā)明的基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送系統(tǒng),包括主控CPU、DMA控制器、存儲(chǔ)器、系統(tǒng)總線和外設(shè)接口,DMA控制器通過系統(tǒng)總線控制存儲(chǔ)器與外設(shè)接口之間的實(shí)時(shí)數(shù)據(jù)傳送,所述DMA控制器內(nèi)設(shè)有用于提供默認(rèn)填充數(shù)據(jù)及丟棄寫入數(shù)據(jù)的虛擬從屬設(shè)備,虛擬從屬設(shè)備占用總線地址空間,虛擬從屬設(shè)備設(shè)有數(shù)據(jù)接口,數(shù)據(jù)接口與DMA控制器的內(nèi)部總線相連;DMA控制器讀取虛擬從屬設(shè)備中的默認(rèn)填充數(shù)據(jù)到外設(shè)接口中,或者DMA控制器將外設(shè)接口中的數(shù)據(jù)寫入虛擬從屬設(shè)備中,寫入虛擬從屬設(shè)備中的數(shù)據(jù)由虛擬從屬設(shè)備直接丟棄。
[0040]此時(shí)虛擬從屬設(shè)備作為DMA控制器的虛擬附屬子模塊,DMA控制器對(duì)虛擬從屬設(shè)備進(jìn)行讀寫訪問時(shí),不需要進(jìn)行總線接口協(xié)議轉(zhuǎn)換,可以進(jìn)一步減少系統(tǒng)總線上的讀寫操作,更有利于節(jié)約總線資源和功耗。該實(shí)施方案的工作流程請(qǐng)參照本發(fā)明的方法,在此不再贅述。
[0041 ] 上述說明中,凡未加特別說明的,均采用現(xiàn)有技術(shù)中的技術(shù)手段。
【權(quán)利要求】
1.一種基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送系統(tǒng),包括主控CPU、DMA控制器、存儲(chǔ)器、系統(tǒng)總線和外設(shè)接口,DMA控制器通過系統(tǒng)總線控制存儲(chǔ)器與外設(shè)接口之間的實(shí)時(shí)數(shù)據(jù)傳送,其特征在于,所述傳送系統(tǒng)還包括用于提供默認(rèn)填充數(shù)據(jù)及丟棄寫入數(shù)據(jù)的虛擬從屬設(shè)備,虛擬從屬設(shè)備占用總線地址空間,虛擬從屬設(shè)備設(shè)有總線從設(shè)備接口,總線從設(shè)備接口與系統(tǒng)總線相連;DMA控制器通過系統(tǒng)總線讀取虛擬從屬設(shè)備中的默認(rèn)填充數(shù)據(jù)到外設(shè)接口中,或者DMA控制器通過系統(tǒng)總線將外設(shè)接口中的數(shù)據(jù)寫入虛擬從屬設(shè)備中,寫入虛擬從屬設(shè)備中的數(shù)據(jù)由虛擬從屬設(shè)備直接丟棄。
2.一種基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送系統(tǒng),包括主控CPU、DMA控制器、存儲(chǔ)器、系統(tǒng)總線和外設(shè)接口,DMA控制器通過系統(tǒng)總線控制存儲(chǔ)器與外設(shè)接口之間的實(shí)時(shí)數(shù)據(jù)傳送,其特征在于,所述DMA控制器內(nèi)設(shè)有用于提供默認(rèn)填充數(shù)據(jù)及丟棄寫入數(shù)據(jù)的虛擬從屬設(shè)備,虛擬從屬設(shè)備占用總線地址空間,虛擬從屬設(shè)備設(shè)有數(shù)據(jù)接口,數(shù)據(jù)接口與DMA控制器的內(nèi)部總線相連;DMA控制器讀取虛擬從屬設(shè)備中的默認(rèn)填充數(shù)據(jù)到外設(shè)接口中,或者DMA控制器將外設(shè)接口中的數(shù)據(jù)寫入虛擬從屬設(shè)備中,寫入虛擬從屬設(shè)備中的數(shù)據(jù)由虛擬從屬設(shè)備直接丟棄。
3.如權(quán)利要求1或2所述的基于DMA的實(shí)時(shí)流數(shù)據(jù)傳送系統(tǒng)的數(shù)據(jù)傳送方法,所述傳送方法包括兩種數(shù)據(jù)傳送方式,第一種為存儲(chǔ)器實(shí)時(shí)將流數(shù)據(jù)傳送到外設(shè)接口,第二種為外設(shè)接口實(shí)時(shí)將流數(shù)據(jù)傳送到存儲(chǔ)器,其特征在于,所述第一種數(shù)據(jù)傳送方式包括如下步驟: 步驟a:主控CPU配置啟動(dòng)DMA控制器,總線控制權(quán)由主控CPU轉(zhuǎn)移到DMA控制器;步驟b =DMA控制器通過系統(tǒng)總線讀取存儲(chǔ)器中的流數(shù)據(jù),并將流數(shù)據(jù)實(shí)時(shí)寫入到外設(shè)接口中,實(shí)現(xiàn)實(shí)時(shí)流數(shù)據(jù)的傳送;在流數(shù)據(jù)傳送過程中,主控CPU實(shí)時(shí)檢測(cè)存儲(chǔ)器中流數(shù)據(jù),當(dāng)檢測(cè)到的流數(shù)據(jù)不足以實(shí)時(shí)傳送時(shí),進(jìn)入步驟C,否則繼續(xù)實(shí)時(shí)傳送流數(shù)據(jù); 步驟c =DMA控制器讀取虛擬從屬設(shè)備中的默認(rèn)填充數(shù)據(jù),并將默認(rèn)填充數(shù)據(jù)實(shí)時(shí)寫入到外設(shè)接口中,當(dāng)主控CPU檢測(cè)到存儲(chǔ)器中的流數(shù)據(jù)充足可以實(shí)時(shí)傳送時(shí),返回步驟b,否則繼續(xù)實(shí)時(shí)傳送默認(rèn)填充數(shù)據(jù); 第二種數(shù)據(jù)傳送方式包括如下步驟: 步驟d:主控CPU配置啟動(dòng)DMA控制器,總線控制權(quán)由主控CPU轉(zhuǎn)移到DMA控制器;步驟e =DMA控制器通過系統(tǒng)總線讀取外設(shè)接口中的流數(shù)據(jù),并將流數(shù)據(jù)實(shí)時(shí)寫入存儲(chǔ)器中,實(shí)現(xiàn)實(shí)時(shí)流數(shù)據(jù)的傳送;在流數(shù)據(jù)傳送過程中,主控CPU實(shí)時(shí)檢測(cè)存儲(chǔ)器的存儲(chǔ)空間,當(dāng)檢測(cè)到存儲(chǔ)空間不充足時(shí),進(jìn)入步驟f,否則繼續(xù)實(shí)時(shí)傳送流數(shù)據(jù); 步驟f =DMA控制器通過系統(tǒng)總線將從外設(shè)接口中實(shí)時(shí)讀取的流數(shù)據(jù)反復(fù)寫入到虛擬從屬設(shè)備中,將寫入流數(shù)據(jù)直接丟棄,當(dāng)主控CPU檢測(cè)到存儲(chǔ)器存儲(chǔ)空間充足時(shí),返回步驟e,否則繼續(xù)實(shí)時(shí)將流數(shù)據(jù)寫入虛擬從屬設(shè)備中。
【文檔編號(hào)】G06F13/28GK103678205SQ201310751601
【公開日】2014年3月26日 申請(qǐng)日期:2013年12月30日 優(yōu)先權(quán)日:2013年12月30日
【發(fā)明者】張奇, 董東升 申請(qǐng)人:杭州士蘭微電子股份有限公司