Dma發送方法
2023-05-13 21:36:46 2
專利名稱:Dma發送方法
技術領域:
本發明涉及一種通信技術,特別是涉及一種DMA (Direct Memory Access,直接存儲器存取)發送方法。
背景技術:
隨著航空電子系統架構的不斷升級,計算機技術的飛速發展,單板計算機的處理能力大幅提高,系統的通信瓶頸將不再是處理模塊,而是模塊與模塊間、系統與系統之間的數據通信帶寬。航空電子總線技術正越來越被大家所關注。IEEE 1394B等一些高速串行總線正被逐漸應用到先進的航空電子系統設計中,它具有高速(最高支持3. 2Gbps)、熱插拔、 點對點傳輸、易擴展、傳輸距離遠等顯著優點。根據在軍事和航空交通領域中的應用,在IEEE 1394B總線的基礎上,SAE (Society of Automotive Engineers,美國機動車工程師學會)於2004年12月制定了 AS5643標準, 規範了 1394B數據總線網絡在軍事和航空飛行器領域中的應用,定義了相關操作方式和信息流格式。AS5643標準定義了 CC (Control Computer,控制計算機)節點和REMOTE (遠程) 節點。CC節點以固定的頻率發送幀開始包(ST0F,Start Of Frame)作為網絡中所有節點收發數據的時間基準。其他的REMOTE節點以STOF包為時間基準,按照CC節點規定的發送偏移和接收偏移來時間觸發該節點的收發操作。原有的模塊間數據傳輸模式(如ARINC629 總線傳輸速度2Mbps和155 總線傳輸速度1Mbps,ARINC^9總線傳輸速度100Kbps)存在速度慢、耗費系統資源和不易擴展的不足。
發明內容
本發明所要解決的技術問題是提供一種DMA發送方法,其實現了連續發送多個數據包,按照AS5643標準,實現AS5643網絡的大容量數據的傳輸,並確保系統的確定性、實時性和可靠性。本發明是通過下述技術方案來解決上述技術問題的一種DMA發送方法,其特徵在於,其包括以下步驟步驟301,根據應用層確定每個周期發送數據包長度和個數,個數記為N ;步驟302,為每個數據包創建描述符;步驟303,判斷是否為第一個描述符,是則轉至步驟304,否則轉至步驟311 ;步驟304,把當前描述符作為新描述符隊列的首尾;步驟305,把鏈路層上下文控制寄存器中的RUN位清零,表示結束對描述符的處理;步驟306,根據鏈路層上下文控制寄存器中的有效位來查看上一步驟執行的結果, 表示是否已經結束描述符的處理,「 1」表示正在處理,要繼續等待,「0」表示已經結束處理, 一直等到描述符處理結束;步驟307,把描述符地址寫入鏈路層命令指針寄存器中,用於通知DMA控制器首個2 描述符的地址;步驟308,把鏈路層上下文控制寄存器中的RUN位置「1」,表示開始對描述符進行處理;步驟309,判斷N個數據包是否發送完成,是則轉至步驟314直接退出,否則轉至步驟 310 ;步驟310,集中準備DMA發送描述符,不再等待DMA發送完成中斷;直接轉至步驟 302為下一個數據包準備描述符;步驟311,如果不是第一個描述符,則把當前描述符添加到描述符隊列中,作為描述符隊列的尾;步驟312,把描述符地址寫入鏈路層命令指針寄存器中,用於通知DMA控制器描述符的地址;步驟313,由於不是第一個描述符,把鏈路層上下文控制寄存器中的WAKE位置 「1」,通知DMA控制器可以繼續處理描述符;步驟314,完成發送N個數據包,退出。優選地,所述步驟301之前就對數據包長度進行優化。
優選地,所述步驟302將數據包地址賦給描述符。優選地,所述每個數據包的發送都要調用鏈路層中的DMA控制器。本發明的積極進步效果在於本發明利用IEEE1394B總線構建的網絡基礎上,以異步數據流包為載體,按照AS5643標準實現協議的過程中採用DMA收發機制,實現AS5643 網絡的大容量數據的傳輸,並突出系統的確定性、實時性和可靠性。本發明在異步發送DMA 實現過程中,為實現數據包連續無間隔的發送,採用在每周期的發送時間槽內集中準備描述符列表,不等待DMA發送完成中斷,再由DMA控制器連續地發送大容量數據包,保證確定性和實時性;同時,本發明對發送數據包長度進行了優化,並採用每周期集中對接收數據包進行解析處理,再釋放接收緩衝區的方法,為實現連續數據包的完整可靠地接收。基於以上對DMA收發機制的改進和優化,提高了網絡傳輸速度和帶寬利用率,從而提高整個系統的傳輸和處理能力。
圖1為本發明AS5643網絡節點的協議層結構示意圖;圖2為本發明AS5643數據幀格式定義的示意圖;圖3為本發明連續發送N個數據包的DMA發送流程圖;圖4為本發明物理層修改協商速度流程圖;圖5為本發明整個DMA收發驗證結構圖。
具體實施例方式下面結合附圖給出本發明較佳實施例,以詳細說明本發明的技術方案。要實現大容量數據在AS5643網絡中確定、實時、可靠地傳輸,如圖1所示,按照數據包從應用層、事務層、鏈路層到物理層的數據流向順序,由上到下分別對DMA收發進行改進和優化。以下方式對CC節點和REMOTE節點都適用。
一、應用層數據包長度優化包括以下內容為了減少丟包率,增加帶寬利用率,本發明從發送節點的應用層就對數據包長度進行優化。AS5643協議的幀格式如圖2所示,假設有效消息長度為M Bytes (根據AS5643 標準規定M最小為8Bytes,以下單位都為Bytes),則AS5643協議包長A = M+16 (ASM包頭)+16 (包尾)+4 (健康狀態字)+4 (心跳計數器)=M+40,1394B協議包長=A+8 (1394包頭)+4 (1394CRC) = A+12 = M+52,在400Mbps速度模式下,異步包最長2048,即A不能大於 2048,M不能大於2008。中斷接收每個包的時間(單位為Ps)如下式(1)Tr 一 Tint+T1394bHeadDecode+TAS5643HeadDecode+TAS5643MDecode ..................^^ (1)其中,Tint表示中斷機制本身處理時間,包括上下文保存切換、查找中斷源以及調用處理函數等,T1394bHeadDe。。de表示對1394B數據包頭解析的時間,TAS5643HeadDe。。de表示對AS5643 包頭解析的時間,T
AS5643MDecode
表示對AS5643有效消息解析的時間。在Tr中,TAS5643B3ecode與包的大小M有關,假設記接收節點處理器端數據包的處理能
力係數為κ,κ越大表TJ^處 裡目邑力越尋碧,貝丨J TAS5643MDecode 一 ^K, Tint+T1394bHeadDecode+TAS5643HeadDecode 為
固定值記為Tf。而每個數據包的發送時間Ts= (M+52)*8/400,也只與包大小M有關。則要使 Tr ( Ts,即 Tf+MK ( (M+52)*8/400,計算得(1_50K)M 彡(50Tf_52),最後得到 M 值的範
圍分兩種情況如果處理器處理能力弱,則K大,即當(1-50K) 0時,則M的範圍為如下式(3)(50Tf-52)/(l-50K)彡 M 彡 2008...........................式(3)基於以上分析,要提高帶寬利用率,保證數據包不丟失,本發明按照以上分析做了以下優化。a.不管接收節點處理能力強或弱,在滿足式( 和式( 前提下保證不丟包,發送節點儘量用大包。這樣減少了等時接收DMA中斷次數,也提高了有效消息在整個1394B數據包中的比例,提高帶寬利用率。如圖2所示,1394B協議包長=M+52,例如有效消息長度 M為52,其實際的帶寬利用率最大只能到50%。b.如果接收節點處理器端處理能力弱,或者數據解析複雜,如式(2)中, (50Tf-52) / (1-50K)很小甚至小於8 (AS5643標準規定M最小值),發送節點已經不能改進, 則根據AS5643標準中固定幀周期的特性,在每個周期該通道所有數據包接收完成後再對接收數據包進行集中解析,然後釋放接收緩衝區,不佔用接收DMA中斷的時間,即式(1)改進為 Tr = Tint。二、事務層DMA發送流程優化包括以下內容為了縮短發送包與包之間的時間間隔,提高帶寬利用率,本發明從事務層對發送流程進行優化。每次發送一個數據包都要調用鏈路層中的DMA控制器,在協議初始化中已經申請一組描述符,用於滿足為每個數據包申請一個DMA描述符。圖3是本發明連續發送N個數據包的DMA發送流程圖。本發明包括以下主要步驟步驟S301,根據應用層確定每個周期發送數據包長度和個數,個數記為N ;在步驟 301之前就對數據包長度進行優化。
步驟S302,為每個數據包創建描述符,其中把數據包地址賦給描述符;步驟S303,判斷是否為第一個描述符,是則轉至步驟S304,否則轉至步驟S311 ;步驟S304,把當前描述符作為新描述符隊列的首尾;步驟S305,把鏈路層ContextControl (上下文控制)寄存器中的RUN位清零,表示結束對描述符的處理;步驟S306,根據ContextControl寄存器中的ACTIVE (有效)位來查看上一步驟執行的結果,表示是否已經結束描述符的處理,「 1」表示正在處理,要繼續等待,「0」表示已經結束處理,一直等到描述符處理結束;步驟S307,把描述符地址寫入鏈路層CommandPtr (命令指針)寄存器中,用於通知 DMA控制器首個描述符的地址;步驟S308,把鏈路層ContextControl寄存器中的RUN位置「 1」,表示開始對描述符進行處理;步驟S309,判斷N個數據包是否發送完成,是則轉至步驟S314直接退出,否則轉至步驟S310 ;步驟S310,虛線為優化前流程,每發送一個包要等待DMA發送完成中斷,導致整個網絡帶寬利用率低下,本發明集中準備DMA發送描述符,不再等待DMA發送完成中斷,即採用不等待DMA發送完成中斷,而是直接轉至步驟S302為下一個數據包準備描述符;步驟S311,如果不是第一個描述符,則把當前描述符添加到描述符隊列中,作為描述符隊列的尾;步驟S312,把描述符地址寫入鏈路層CommandPtr寄存器中,用於通知DMA控制器描述符的地址;步驟S313,由於不是第一個描述符,把鏈路層ContextControl寄存器中的WAKE位置「1」,通知DMA控制器可以繼續處理描述符;步驟S314,完成發送N個數據包,退出。以上步驟實現了連續發送多個數據包,極大地縮短了數據包與數據包的間隔。三、鏈路層DMA類型選擇包括以下內容本發明採用1394B異步數據流模式作為數據包載體,該數據包的特性介於異步數據包和等時數據包之間。它擁有等時數據包相同的格式和特性,也一樣需要得到一個通道號,但它與異步數據包一樣是在公平間隔內發送,而等時數據包是在等時總線間隔期內發送。因此異步數據流包具有了以下優點a.消除了每次等時傳輸開始時,必須向等時資源管理器申請所需帶寬的要求。b.突破了等時傳輸中在一個等時間隔(125 μ S)內一個通道只能發送一個數據包的限制,確保大容量數據包的連續發送;c.規避了異步傳輸時請求——響應一一確認複雜過程,確保實時性。針對以上異步數據流包的特點,採用異步發送DMA,發揮它與異步數據包發送一樣在公平間隔內發送的優勢,實現連續發送,大幅提高帶寬利用率。考慮到格式與等時數據包一樣,不需要向請求節點發送響應包,因此採用等時接收DMA來接收異步數據流包。四、物理層速度設置包括以下內容要實現DMA控制器正常工作,充分發揮DMA的優勢,還必須還要有物理層硬體上的支持。AS5643標準規定了網絡的埠最大速度為400Mbps,如果是800Mbps或以上,有可能影響數據包的完整性。如圖4所示,設置埠速度的步驟如下步驟S401,設置物理層寄存器中的埠狀態寄存器,設置MaX_p0rt_Speed(最大埠速度)為S400,即400Mbps ;步驟S402,要使埠重新協商速度,埠復位不能採用上下電節點復位的方式,本發明採用的方法是先設置埠狀態寄存器中的Dis為1,禁止埠 ;步驟S403,把埠狀態寄存器中的Dis位清零,重新使能該埠 ;步驟S404,激活該埠後,埠間的速度重新協商,以兩個埠最大埠速度的小值作為新的協商速度,即S400。同時在DMA由IEEE 1394B鏈路層控制器來發起,通過PCI總線與主機端直接存儲器訪問,主機端PCI空間必須開啟預取功能,對其讀寫速度至少要達到400Mbps,如圖1所示,避免PCI速度成為整個系統傳輸速度的瓶頸。為了驗證在AS5643協議中的採用本發明對DMA發送方法優化後的效果,整個DMA 收發驗證結構圖如圖5所示,DMA收發驗證結構是根據AS5643標準構建的網絡,由一個CC 節點、四個REMOTE節點和一個FireSpy3810總線協議分析儀組成。每個節點的硬體條件都相同,為CPU為內核頻率320MHz的MPC8270處理器,PCI的參數為33MHz和32bit,SDRAM 的參數為64MB和64bit,1394B物理層晶片的型號為TSB81BA3型,1394B鏈路層晶片的型號為 TSB82AA2 型。首先驗證事務層發送DMA流程改進效果。STOF幀周期設為20ms,CC節點每個周期連續發送32個有效消息長度為M(Bytes)的包,這裡固定為2008Bytes,由REMOTE節點1 接收。利用FireSpy3810總線協議分析儀來驗證性能和效果。結果及分析見表1。其中的速度理論值400Mbps為AS5643標準規定的埠協商速度,包間隔理論值2060*8/400 = 41. 2 μ s,即數據包實際在線上佔用的傳輸時間,實際包間隔是從FireSpy3810總線協議分析儀時序圖中所得。表1異步發送DMA流程優化前後對比
包間隔(單位|as,理論值為41.2μδ)實際傳輸速度(單位 Mbps,理論值為佔空比400Mbps)改進前161. 32060*8/161. 3 = 102. 11 2.9改進後42. 22060*8/42. 2 = 390.51 0. 024比較其中的佔空比,很明顯,用以上異步DMA發送機制及其優化來實現AS5643協議的發送,極大的提高了整個網絡的數據傳輸速度,已經能夠接近理論帶寬,大大提高了帶寬利用率,很好滿足了 AS5643標準中規定的實時性和確定性。其次,驗證應用層發送DMA數據包長度優化進行驗證測試。具體地,通過REMOTE NODEl對來自CC NODE連續發送的32個AS5643協議包進行接收,以發送包大小M為參數,
7通過發送時間Ts(FireSpy3810獲取)和接收Τ,時間(主處理器端定時器測定,包括數據解析時間,如數據包校驗及拷貝)的對比,以及凡(接收到的包個數)來測試驗證。表2異步發送DMA數據包長度優化對比
權利要求
1.一種DMA發送方法,其特徵在於,其包括以下步驟步驟301,根據應用層確定每個周期發送數據包長度和個數,個數記為N ; 步驟302,為每個數據包創建描述符;步驟303,判斷是否為第一個描述符,是則轉至步驟304,否則轉至步驟311 ; 步驟304,把當前描述符作為新描述符隊列的首尾;步驟305,把鏈路層上下文控制寄存器中的RUN位清零,表示結束對描述符的處理; 步驟306,根據鏈路層上下文控制寄存器中的有效位來查看上一步驟執行的結果,表示是否已經結束描述符的處理,「 1」表示正在處理,要繼續等待,「0」表示已經結束處理,一直等到描述符處理結束;步驟307,把描述符地址寫入鏈路層命令指針寄存器中,用於通知DMA控制器首個描述符的地址;步驟308,把鏈路層上下文控制寄存器中的RUN位置「1」,表示開始對描述符進行處理;步驟309,判斷N個數據包是否發送完成,是則轉至步驟314直接退出,否則轉至步驟310 ;步驟310,集中準備DMA發送描述符,不再等待DMA發送完成中斷;直接轉至步驟302為下一個數據包準備描述符;步驟311,如果不是第一個描述符,則把當前描述符添加到描述符隊列中,作為描述符隊列的尾;步驟312,把描述符地址寫入鏈路層命令指針寄存器中,用於通知DMA控制器描述符的地址;步驟313,由於不是第一個描述符,把鏈路層上下文控制寄存器中的WAKE位置「 1 」,通知DMA控制器可以繼續處理描述符;步驟314,完成發送N個數據包,退出。
2.如權利要求1所述的DMA發送方法,其特徵在於,所述步驟301之前就對數據包長度進行優化。
3.如權利要求1所述的DMA發送方法,其特徵在於,所述步驟302將數據包地址賦給描述符。
4.如權利要求1所述的DMA發送方法,其特徵在於,所述每個數據包的發送都要調用鏈路層中的DMA控制器。
全文摘要
本發明公開一種DMA發送方法,其包括以下步驟步驟301,根據應用層確定每個周期發送數據包長度和個數;步驟302,為每個數據包創建描述符;步驟303,判斷是否為第一個描述符;步驟304,把當前描述符作為新描述符隊列的首尾;步驟305,把上下文控制寄存器中的RUN位清零;步驟306,根據上下文控制寄存器中的有效位來查看上一步驟執行的結果;步驟307,把描述符地址寫入鏈路層命令指針寄存器中;步驟308,把上下文控制寄存器中的RUN位置「1」;步驟309,判斷N個數據包是否發送完成;步驟310,集中準備DMA發送描述符;還有步驟311至步驟314。本發明實現連續發送多個數據包,實現大容量數據的傳輸。
文檔編號H04L12/56GK102420763SQ20111040421
公開日2012年4月18日 申請日期2011年12月7日 優先權日2011年12月7日
發明者樓俊榮 申請人:中國航空無線電電子研究所