国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      數(shù)據(jù)接收/發(fā)送方法和裝置的制作方法

      文檔序號:6463302閱讀:310來源:國知局
      專利名稱:數(shù)據(jù)接收/發(fā)送方法和裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及數(shù)據(jù)傳輸技術(shù)領(lǐng)域,尤其涉及一種用于直接存儲器訪問
      (DMA, Direct Memory Access)的數(shù)據(jù)接"t/發(fā)送方法、裝置。
      背景技術(shù)
      DMA是一種高速的數(shù)據(jù)傳輸操作,允許在外部設(shè)備和存儲器之間直接 讀寫數(shù)據(jù),既不通過中央處理單元(CPU),也不需要CPU干預(yù)。整個數(shù)據(jù) 傳輸操作是在一個稱為"DMA控制器"的控制下進行的。目前,可以采用以下 兩種方式進行DMA l喿作
      a、 定長傳輸,即發(fā)送方將發(fā)送的數(shù)據(jù)按照發(fā)送方和接收方約定好的固定 長度拆分,不足固定長度就填充無效數(shù)據(jù)至固定長度。采用定長傳輸時,由 于接收方提前知道發(fā)送方發(fā)送的每一幀數(shù)據(jù)的長度,因此可以利用鏈?zhǔn)紻MA 將多個固定接收長度的DMA配置描述符做成循環(huán)鏈表,形成一條DMA循 環(huán)接收鏈;在DMA根據(jù)前一個配置描述符的配置接收完一幀數(shù)據(jù)后,根據(jù) 下一個DMA配置描述符^4項自動重新配置并啟動DMAJ妄收下一幀it據(jù)。
      這里所述的無效數(shù)據(jù)是指,僅僅用于填充位置的數(shù)據(jù)而不是實際要發(fā)送 的數(shù)據(jù)。相對于無效數(shù)據(jù)而言,實際要發(fā)送的數(shù)據(jù)可以稱為有效數(shù)據(jù)。無效 數(shù)據(jù)一般具有特殊的形式,以明顯區(qū)別于有效數(shù)據(jù)。
      b、 頭標(biāo)識傳輸,即發(fā)送方在發(fā)送數(shù)據(jù)時,先發(fā)送一段用于指示待發(fā)送 數(shù)據(jù)長度的標(biāo)識頭再發(fā)送數(shù)據(jù);接收方根據(jù)標(biāo)識頭的指示可以相應(yīng)地配置 DMA寄存器的長度以接收發(fā)送方發(fā)送的數(shù)據(jù)。
      無論采用哪種方式進行DMA操作都存在不足之處。定長傳輸難以同時 兼顧系統(tǒng)負擔(dān)和傳輸效率,頭標(biāo)識傳輸存在丟失翁:據(jù)的風(fēng)險。

      發(fā)明內(nèi)容
      有鑒于此,本發(fā)明解決的技術(shù)問題是提供一種用于DMA的數(shù)據(jù)接4t/發(fā) 送方法,既可以兼顧系統(tǒng)負擔(dān)和傳輸效率還可以消除丟失數(shù)據(jù)的風(fēng)險。為此,本發(fā)明提供的技術(shù)方案如下 一種數(shù)據(jù)接收方法,包括
      建立含兩個DMA配置描述符的配置描述符循環(huán)g; 利用DMA鏈?zhǔn)侥J叫纬裳h(huán)接收鏈,設(shè)置表頭為當(dāng)前配置描述符,啟 動DMA;
      響應(yīng)DMA接收數(shù)據(jù)完成中斷;
      根據(jù)指示位的值和接收數(shù)據(jù)的長度,重新配置所述當(dāng)前配置描述符并重 新設(shè)置指示位的狀態(tài),設(shè)置下一個結(jié)點為當(dāng)前配置描述符; 再次等待DMA接收數(shù)據(jù)完成中斷。
      在一些實施例中,當(dāng)所述指示位為第一預(yù)i殳值時,比4交w和2xm-n 以確定重新配置所述當(dāng)前配置描述符中的傳輸長度,比較w和m - n以確定 重新設(shè)置的指示位的值;
      當(dāng)所述指示位為第二預(yù)設(shè)值時,重新配置所述當(dāng)前配置描述符中的傳輸 長度為m,比較w和2 x m - n以確定重新設(shè)置的指示位的值;
      當(dāng)所述指示位為第三預(yù)設(shè)值時,重新配置所述當(dāng)前配置描述符中的傳輸 長度為m,重新設(shè)置指示位的值;
      其中,w表示接收數(shù)據(jù)中標(biāo)識頭所指示的數(shù)據(jù)長度,m表示各DMA配 置描述符傳輸長度的初始值,n表示接收數(shù)據(jù)中標(biāo)識頭的長度。
      在一些實施例中,如果w大于2xm-n,則重新配置所述第一個DMA 寄存器的長度為w + n-2xm;否則,重新配置所述當(dāng)前配置描述符中的傳 輸長度為m。
      在一些實施例中,如果w大于m-n,則重新設(shè)置指示位為第二預(yù)設(shè)值; 否則,重新設(shè)置指示位為第一預(yù)設(shè)值;
      在一些實施例中,如果w大于2xm-n,則重新設(shè)置指示位為第三預(yù)設(shè) 值;否則,重新設(shè)置指示位為第一預(yù)設(shè)值。
      在一些實施例中,按m^sx (tl+t2) -b配置各配置描述符中傳輸長度 6勺牙刀i臺^f直;
      其中,s表示數(shù)據(jù)傳輸速率,tl表示響應(yīng)中斷所需要的時間,t2表示從 中斷響應(yīng)到配置DMA配置描述符完成所需要的時間,b表示通信口硬件接收緩存大小。
      一種數(shù)據(jù)發(fā)送方法,包括 在待發(fā)送的數(shù)據(jù)之前打上標(biāo)識頭;
      根據(jù)標(biāo)識頭的長度、待發(fā)送數(shù)據(jù)的長度和接收方DMA配置描述符中傳 輸長度的初始值,確定所要填充的無效數(shù)據(jù)的長度; 發(fā)送所述標(biāo)識頭、待發(fā)送的數(shù)據(jù)和填充的無效數(shù)據(jù)。 在一些實施例中,當(dāng)w〈m-n時,所要填充的無效數(shù)據(jù)的長度為m-n
      —w;
      當(dāng)m-n^w〈2xm-n時,所要i真充的無刻:tt悟的長度為2 x m - n - w; 當(dāng)2xm-n^w〈3xm-n時,所要i真充的無歲文凄U居的長度為3 x m — n
      —w;
      當(dāng)w^3xm-n時,所要填充的無效數(shù)據(jù)的長度為0;
      其中,w表示待傳輸數(shù)據(jù)的長度,m表示接收方DMA配置描述符中傳 輸長度的初始值,n表示標(biāo)識頭的長度。
      一種數(shù)據(jù)接收裝置,包括有一個DMA寄存器組和一個用于控制DMA 寄存器組的控制單元,其中,
      所述控制單元,用于建立含兩個DMA配置描述符的配置描述符循環(huán)鏈 表,利用DMA鏈?zhǔn)侥J叫纬裳h(huán)接收鏈;還用于在DMA根據(jù)當(dāng)前配置描 述符的配置接收數(shù)據(jù)完成后,根據(jù)指示位的值和接收數(shù)據(jù)的長度,重新配置 該配置描述符傳輸長度并重新設(shè)置指示位的狀態(tài)。
      一種數(shù)據(jù)發(fā)送裝置,包括
      第一單元,用于在待發(fā)送的數(shù)據(jù)之前打上標(biāo)識頭;
      第二單元,用于根據(jù)標(biāo)識頭的長度、待發(fā)送數(shù)據(jù)的長度和接收方DMA 配置描述符中傳輸長度的初始值,確定所要填充的無效數(shù)據(jù)的長度;和
      第三單元,用于發(fā)送所述標(biāo)識頭、待發(fā)送的數(shù)據(jù)和填充的無效數(shù)據(jù)。
      在本發(fā)明中,將長度固定的數(shù)據(jù)幀和長度可變的數(shù)據(jù)幀相結(jié)合傳輸數(shù) 據(jù),利用長度固定的數(shù)據(jù)幀傳輸部分數(shù)據(jù),利用長度可變的數(shù)據(jù)幀傳輸另一 部分的數(shù)據(jù)。相對于現(xiàn)有的定長傳輸而言,由于只采用兩個長度固定的數(shù)據(jù) 幀因此可以降低長度固定的數(shù)據(jù)幀對傳輸效率的影響,還會降低處理器的負擔(dān),從而可以很好地兼顧系統(tǒng)負擔(dān)和傳輸效率。相對于現(xiàn)有的標(biāo)識頭傳輸而 言,由于可以在接收下一段數(shù)據(jù)的緩沖時間內(nèi)根據(jù)標(biāo)識頭所指示的數(shù)據(jù)長度
      完成對DMA配置描述符的重新設(shè)置,從而避免了數(shù)據(jù)丟失。本發(fā)明有效地 綜合了現(xiàn)有的定長傳輸和頭標(biāo)識傳輸?shù)膬?yōu)點,利用鏈?zhǔn)紻MA,通過動態(tài)的 配置DMA接收長度,實現(xiàn)數(shù)據(jù)的不定長傳輸。這樣既兼顧了系統(tǒng)負擔(dān)和傳 輸效率又消除了數(shù)據(jù)丟失的風(fēng)險。


      圖l是本發(fā)明提出的一種數(shù)據(jù)傳輸格式; 圖2是一個用于接收方的數(shù)據(jù)接收方法的實施例流程圖; 圖3是另一個用于接收方的數(shù)據(jù)接收方法的實施例流程圖; 圖4是一個用于發(fā)送方的發(fā)送數(shù)據(jù)方法的實施例流程圖; 圖5是一個用于接收方的數(shù)據(jù)接收裝置的實施例示意圖; 圖6是一個用于發(fā)送方的數(shù)據(jù)發(fā)送裝置的實施例示意圖。
      具體實施例方式
      采用定長傳輸方式進行DMA操作時,如果數(shù)據(jù)幀的長度設(shè)置得越短, 傳輸數(shù)據(jù)的長度大于數(shù)據(jù)幀的長度,則所需要的DMA傳輸次數(shù)越多,在接 收方DMA在數(shù)據(jù)傳輸過程中完成的中斷次數(shù)就越多,處理器響應(yīng)中斷的次 數(shù)也就越多,處理器的負擔(dān)也就越大。反之,如果數(shù)據(jù)幀的長度設(shè)置得越長, 傳輸數(shù)據(jù)的長度小于數(shù)據(jù)幀的長度,則需要填充的無效數(shù)據(jù)就越多,有效數(shù) 據(jù)的傳輸效率也就越低。因此,采用定長傳輸方式進行DMA操作時,難以 同時兼顧系統(tǒng)負擔(dān)和傳輸效率。
      采用頭標(biāo)識傳輸方式進行DMA操作時,因為只有標(biāo)識頭長度是固定的 而數(shù)據(jù)段長度不固定,且數(shù)據(jù)段長度要等到標(biāo)識頭接收并解析完成才能確定。 而接收方從完成標(biāo)識頭的接收到完成DMA的配置,其間的時間間隔會受到 接收方系統(tǒng)的負荷狀態(tài)影響,接收方系統(tǒng)的負荷越重,配置DMA的時延就 越長。當(dāng)發(fā)送方啟動DMA發(fā)送數(shù)據(jù)時,接收方?jīng)]有及時完成DMA的重新 配置,必然會造成數(shù)據(jù)丟失。本發(fā)明提供的用于DMA的數(shù)據(jù)接4t/發(fā)送方法,既可以兼顧系統(tǒng)負擔(dān)和 傳輸效率還可以消除丟失數(shù)據(jù)的風(fēng)險。
      采用本發(fā)明提供的方法時,應(yīng)該預(yù)先在發(fā)送方和接收方統(tǒng)一約定數(shù)據(jù)的 傳輸格式。在一個實施例中,接收方按照圖1所示的傳輸格式接收數(shù)據(jù)。在 圖l所示的傳輸格式中,包括前面兩個長度固定的數(shù)據(jù)幀和后面一個長度可 變的數(shù)據(jù)幀。對于長度固定的數(shù)據(jù)幀,其長度都為m字節(jié)。
      以下,將第一個長度固定的數(shù)據(jù)幀稱為標(biāo)識幀,將其它長度固定的數(shù)據(jù) 幀稱為緩存幀,將長度可變的數(shù)據(jù)幀稱為數(shù)據(jù)段。
      標(biāo)識幀包括標(biāo)識頭和一賴:數(shù)據(jù),其中前n個字節(jié)為標(biāo)識頭,用于指示傳 輸數(shù)據(jù)的長度,如果傳輸數(shù)據(jù)的長度為w則標(biāo)識頭指示的長度也為w;后m -n個字節(jié)為數(shù)據(jù),n^m??梢钥闯?,當(dāng)傳輸數(shù)據(jù)的長度w小于或等于m-n時,在標(biāo)識幀中就可以完成所有數(shù)據(jù)的傳輸,在這種情況下也就不再需要 緩存幀和數(shù)據(jù)段。當(dāng)m - n <w x m - n時,利用標(biāo)識幀和緩存幀即可完成 數(shù)據(jù)的傳輸,在這種情況下不再需要后面的數(shù)據(jù)段。其中。當(dāng)w〉2xm-n 時,需要利用標(biāo)識幀、緩存幀和數(shù)據(jù)l爻來傳輸lt據(jù)。
      在接收方, 一種可選的接收方式是采用鏈?zhǔn)紻MA接收數(shù)據(jù)。在接收方 可以將兩個DMA配置描述符做成循環(huán)鏈表形成循環(huán)接收鏈,每個DMA配 置描述符初始傳輸長度都是m字節(jié)。這樣,可以保證當(dāng)一次DMA傳輸完成 后重新配置當(dāng)前配置描述符時,DMA已在接收下一段數(shù)據(jù)。DMA接收下一 段數(shù)據(jù)的時間可以作為重新配置當(dāng)前配置描述符的緩沖時間。
      圖2示出了一個用于接收方的數(shù)據(jù)接收方法的實施例流程。
      在步-驟201,初始配置。
      所述初始配置包括建立含兩個DMA配置描述符的配置描述符循環(huán)鏈 表;利用DMA鏈?zhǔn)侥J叫纬裳h(huán)接收鏈,設(shè)置表頭為當(dāng)前配置描述符;將 特定的指示位Flag的值設(shè)置為0。
      其中,可以根據(jù)內(nèi)存緩存和外設(shè)硬件緩存等配置兩個DMA配置描述符, 并設(shè)置它們的傳輸長度為m。將這兩個DMA配置描述符做成循環(huán)鏈表,使 用鏈?zhǔn)紻MA模式利用該循環(huán)^4做成循環(huán)接收鏈。
      通過Flag的值,可以得知接收的是位于傳輸格式中哪個位置的數(shù)據(jù)。其中, 一種Flag值與位置的對應(yīng)關(guān)系可以是 Flag = 0:標(biāo)識幀; Flag=l:緩存幀; Flag = 2:數(shù)據(jù)段。
      完成初始配置后,等待DMA接收數(shù)據(jù)完成中斷。
      DMA^妄收凄t據(jù)完成中斷到來時,在步驟202,響應(yīng)DMA接收lt據(jù)完成 中斷。
      由于根據(jù)Flag的值可以得知接收的是位于傳輸格式中哪個位置的數(shù)據(jù), 因此可以根據(jù)Flag的值決定后續(xù)的操作。
      當(dāng)Flag-O時,表示接收的是標(biāo)識幀,在這種情況下
      在步驟203,比較w和2 x m - n以確定重新配置當(dāng)前配置描述符中的傳 輸長度。并且在步驟204,比較w和m-n以確定重新設(shè)置的Flag值。
      在步驟205,重新配置當(dāng)前配置描述符中的傳輸長度和Flag的值。
      更具體地i兌
      如果w 〉 2 x m - n,重新配置當(dāng)前配置描述符中的傳輸長度為w + n - 2
      x m;
      如果w S2xm-n,則重新配置當(dāng)前配置描述符中的傳輸長度為m; 如果w 〉 m - n,則重新設(shè)置Flag為1; 如果w^m-n,則重新設(shè)置Flag為O。 當(dāng)Flag-l時,表示接收的是緩存幀,在這種情況下 在步驟206,比較w和2xm-n以確定重新設(shè)置的Flag的值。然后, 在步驟207,重新配置當(dāng)前配置描述符中的傳輸長度為m,重新設(shè)置Flag 的值。
      更具體地i兌
      如果w > 2 x m - n,則重新設(shè)置Flag為2; 如果w^2xm-n,則重新設(shè)置Flag為O。 當(dāng)Flag-2時,表示接收的是數(shù)據(jù)段,在這種情況下 在步驟208,重新配置當(dāng)前配置描述符中的傳輸長度為m,重新設(shè)置Flag 為0。重新配置當(dāng)前配置描述符中的傳輸長度,并重新設(shè)置Flag的值后, 在步驟209,設(shè)置接收鏈中的下一個結(jié)點為當(dāng)前配置描述符。 然后再次等待DMA接收數(shù)據(jù)完成中斷。
      下面,對利于上述實施例接收數(shù)據(jù)的一次完整流程進行具體說明。 在接收方配置完成DMA的傳輸長度和工作模式之后,當(dāng)發(fā)送方發(fā)送數(shù)
      據(jù)給接收方時,接收方將依次接收發(fā)送方發(fā)送的標(biāo)識幀、緩存幀和數(shù)據(jù)段。 4妻收完成標(biāo)識幀后,響應(yīng)DMA4妻收完成中斷,此時Flag-0。 由于Flag = 0,此時將比較w和2 x m - n以確定重新配置當(dāng)前配置描述
      符中的傳輸長度,并且比較w和m - n以確定重新設(shè)置的Flag值。
      如果w〉2xm-n,則說明傳輸數(shù)據(jù)很長,發(fā)送方會利用標(biāo)識幀、緩存
      幀和數(shù)據(jù)段來傳輸數(shù)據(jù),因此需要將當(dāng)前配置描述符中的傳輸長度重新配置
      為w + n- 2xm。
      如果w^2xm-n,則說明傳輸數(shù)據(jù)不是很長,發(fā)送方不會利用數(shù)據(jù)段 傳輸數(shù)據(jù),只要將當(dāng)前配置描述符中的傳輸長度重新配置為m即可。
      如果w〉m-n,則說明需要在下一次中斷接收緩存幀,此時需要將Flag 重新設(shè)置為1;
      如果w ^m - n,則說明不需要接收纟爰存幀,此時應(yīng)該重新設(shè)置Flag為0, 這種情況也可以視為保持Flag值不變。
      重新配置當(dāng)前配置描述符中的傳輸長度和Flag的值后,設(shè)置接收鏈中的 下一個結(jié)點為當(dāng)前配置描述符。
      接收完緩存幀后,響應(yīng)DMA接收完成中斷,此時Flag-l。
      由于Flag-l,因此不會利用當(dāng)前配置描述符接收數(shù)據(jù)段,只要將當(dāng)前 配置描述符中的傳輸長度重新配置為m即可。但是,需要通過比較w和2 x m - n以確定是否會接收數(shù)據(jù)段。
      如果w〉2xm-n,則說明需要在下一次中斷接收數(shù)據(jù)段,此時需要將 Flag設(shè)置為2;
      如果w S 2 x m - n,則說明不需要接收數(shù)據(jù)段,此時將Flag設(shè)置為0。 重新配置當(dāng)前配置描述符中的傳輸長度和Flag的值后,設(shè)置接收鏈中的 下一個結(jié)點為當(dāng)前配置描述符。說明書第8/13頁
      可以保證當(dāng) 一次DMA傳輸完成后重新配置當(dāng)前配置描述符時,DMA已 在接收下一段數(shù)據(jù)。DMA接收下一段數(shù)據(jù)的時間可以作為重新配置當(dāng)前配 置描述符的緩沖時間。
      這里需要指出的是,完成下一段數(shù)據(jù)的接收前,應(yīng)該保證對當(dāng)前配置描 述符的配置也全部完成,這樣才能避免丟失數(shù)據(jù)。
      可以看出,DMA接收下一段數(shù)據(jù)的時間可以作為重新配置當(dāng)前配置描 述符的緩沖時間。根據(jù)發(fā)送方和接收方傳輸預(yù)定,標(biāo)識幀、緩存幀和數(shù)據(jù)段 均不小于m,故緩沖時間與m有關(guān),m越大則緩沖時間越長,m越小則緩沖 時間越短。為保證接收方不會像頭標(biāo)識傳輸一樣可能因為無法及時重新配置 DMA而丟失數(shù)據(jù),m的設(shè)置必須保證緩沖時間大于接收方從響應(yīng)中斷到完 成配置描述符重新配置的時間。
      可以按m^sx (tl+t2) -b來設(shè)置緩存幀和標(biāo)識幀的長度,進而將各 DMA寄存器的初始長度配置為m。其中,s表示數(shù)據(jù)傳輸速率,tl表示響應(yīng) 中斷所需要的時間,t2表示從中斷響應(yīng)到配置DMA配置描述符完成所需要 的時間,b表示通信口硬件接收緩存大小。
      接收完數(shù)據(jù)段后,響應(yīng)數(shù)據(jù)接收完成中斷,此時Flag-2。
      由于Flag = 2,因此本次數(shù)據(jù)傳輸結(jié)束,應(yīng)該將當(dāng)前配置描述符中的傳 輸長度重新配置為m,并將Flag設(shè)置為0。
      重新配置當(dāng)前配置描述符中的傳輸長度和Flag的值后,設(shè)置接收鏈中的 下一個結(jié)點為當(dāng)前配置描述符。
      采用上述實施例時,將長度固定的數(shù)據(jù)幀和長度可變的數(shù)據(jù)幀相結(jié)合, 利用長度固定的數(shù)據(jù)幀傳輸部分數(shù)據(jù),利用長度可變的數(shù)據(jù)幀傳輸另一部分 的數(shù)據(jù)。相對于現(xiàn)有的定長傳輸而言,由于只采用兩個長度固定的數(shù)據(jù)幀因 此可以P爭低長度固定的數(shù)據(jù)幀對傳輸效率的影響,還會降低處理器的負擔(dān), /人而可以#:好地兼顧系統(tǒng)負擔(dān)和傳輸效率。相對于現(xiàn)有的標(biāo)識頭傳輸而言, 由于可以在接收緩存幀的緩沖時間內(nèi)根據(jù)標(biāo)識頭所指示的數(shù)據(jù)長度完成當(dāng)前 配置描述符的重新配置,從而避免了數(shù)據(jù)丟失。
      經(jīng)過分析可知,上述實施例有效地綜合了現(xiàn)有的定長傳輸和頭標(biāo)識傳輸 的優(yōu)點,因此采用上述實施例接收數(shù)據(jù)既可以兼顧系統(tǒng)負擔(dān)和傳輸效率還可以消除丟失數(shù)據(jù)的風(fēng)險。
      圖3示出了另一個可選實施例的流程。
      在步驟301,初始配置。
      步驟301的配置與步驟201相同,此不贅述。
      完成初始配置后,等待DMA接收數(shù)據(jù)完成中斷。DMA接收數(shù)據(jù)完成中 斷到來時,在步驟302,響應(yīng)DMA接收數(shù)據(jù)完成中斷。
      在步驟303,判斷Flag是否等于O。如果是,則執(zhí)行步驟304,否則執(zhí) 行步驟310。
      在步驟304,根據(jù)接收數(shù)據(jù)中標(biāo)識頭的指示獲得傳輸數(shù)據(jù)的長度w。 在步驟305,比專交w和m-n。如果w^m-n,則執(zhí)行步驟306;否貝寸, 執(zhí)行步驟307。
      在步驟306,重新配置當(dāng)前配置描述符的傳輸長度為m,重新設(shè)置Flag 為0,轉(zhuǎn)步驟316。
      在步驟307,比4交w和2xm-n。如果w^2xm-n,則執(zhí)行步驟308; 否則,執(zhí)行步驟309。
      在步驟308,重新配置當(dāng)前配置描述符的傳輸長度為m,重新設(shè)置Flag 為1,轉(zhuǎn)步驟316。
      在步驟309,重新配置當(dāng)前配置描述符的傳輸長度為w + n_2xm,重 新設(shè)置Flag為1,轉(zhuǎn)步驟316。
      在步驟310,判斷Flag是否等于l。如果是,則執(zhí)行步驟311,否則執(zhí)行 步驟315。
      在步驟311,重新配置當(dāng)前配置描述符的傳輸長度為m,轉(zhuǎn)步驟316。 在步驟312,比較w和2xm-n。如果w^2xm-n,則執(zhí)行步驟313; 否則,執(zhí)行步驟314。
      在步驟313,重新設(shè)置Flag為0。 在步驟314,重新設(shè)置Flag為2。
      在步驟315,重新配置當(dāng)前配置描述符的傳輸長度為m,重新設(shè)置Flag 為0。
      步驟316,將接收鏈中的下一個結(jié)點設(shè)為當(dāng)前配置描述符。重新配置當(dāng)前配置描述符中的傳輸長度和Flag的值后,設(shè)置接收鏈中的 下一個結(jié)點為當(dāng)前配置描述符。
      然后再次等待DMA接收數(shù)據(jù)完成中斷。
      圖4示出了一個用于發(fā)送方的發(fā)送凄t據(jù)方法實施例。
      在步驟401,在待發(fā)送的數(shù)據(jù)之前打上標(biāo)識頭。
      在步驟402,根據(jù)標(biāo)識頭的長度、待發(fā)送數(shù)據(jù)的長度和接收方DMA配 置描述符中傳輸長度的初始值,確定所要填充的無效數(shù)據(jù)的長度。 在步驟403,發(fā)送所述標(biāo)識頭、待發(fā)送的數(shù)據(jù)和填充的無效數(shù)據(jù)。 其中, 一個可選的確定所要填充的無效數(shù)據(jù)的長度的方式是 當(dāng)w < m - n時,所要填充的無效數(shù)據(jù)的長度為m - n - w; 當(dāng)m-n^w〈2xm-n時,所要i真充的無歲文iii居的長度為2 x m - n - w; 當(dāng)2xm — n^w〈3xm-n時,所要i真充的無歲丈凄ii居的長度為3 x m — n
      一 w;
      當(dāng)w^3xm-n時,所要填充的無效數(shù)據(jù)的長度為0。 在一個具體的應(yīng)用場景中在兩個處理器之間利用高速串口進行通信,
      串口通訊速率為16Mbps,傳輸?shù)臄?shù)據(jù)包含控制命令字和視頻數(shù)據(jù)流兩種, 最大數(shù)據(jù)幀長度為49.5K字節(jié)。接收方處理器主頻為72MHz,高速串口硬件 接收緩存為4字節(jié),最大中斷響應(yīng)時間為20微秒。
      如果采用定長傳輸。假設(shè)定長長度為1K字節(jié)。那么當(dāng)以15幀/秒的速 率傳輸QCIF分辨率的RGB565數(shù)據(jù)時,1秒鐘數(shù)據(jù)量為742.5K字節(jié),1秒 鐘內(nèi)會有742.5次中斷,而當(dāng)在這1秒鐘之間同時傳輸20個命令字,每個命 令字為20字節(jié)時,1秒鐘傳輸?shù)臒o效數(shù)據(jù)量大約有20K字節(jié),占總帶寬的 1%。如果定長長度變短一些,中斷次凄t會更多;如果定長長度變長一些,帶 寬浪費會更多??梢姛o論定長長度設(shè)置為多少都難以兼顧系統(tǒng)負擔(dān)和傳輸效 率。
      如果采用頭標(biāo)識傳輸。則從頭標(biāo)識數(shù)據(jù)接收完成的中斷響應(yīng),到根據(jù)接 收到的頭標(biāo)識動態(tài)配置直接存儲器完成之間超過2微秒,接收方高速串口硬 件接收緩存就會溢出,而接收方最大中斷響應(yīng)時間遠大于^:秒。所以當(dāng)系統(tǒng) 忙時,該情況是極有可能發(fā)生的。而如果使用上述各實施例所示的方法,對于72MHz的處理器來說,動 態(tài)配置直接存儲器完成時間不超過l微秒。根據(jù)前面n和m的計算公式,可 設(shè)置n為2字節(jié),設(shè)置m為64字節(jié)。m的計算原理就是為了避免像頭標(biāo)識 傳輸一樣存在丟失數(shù)據(jù)的風(fēng)險。所以相比于頭標(biāo)識傳輸可見各實施例所示的 方法能解決丟失數(shù)據(jù)的風(fēng)險。
      當(dāng)以15幀/秒的速率傳輸QCIF分辨率的RGB565數(shù)據(jù)時,1秒鐘只有 45個中斷。而當(dāng)在這l秒鐘之間同時傳輸20個命令字,每個命令字為20字 節(jié)時,1秒鐘傳輸?shù)臒o效數(shù)據(jù)量大約有0.86K字節(jié),僅占總帶寬的0.043%。 相比于定長傳輸可見各實施例所示的方法能同時兼顧系統(tǒng)負擔(dān)和傳輸效率。
      圖5示出了一個用于接收方的數(shù)據(jù)接收裝置500,數(shù)據(jù)接收裝置500包 括一個DMA寄存器組51和一個用于控制DMA寄存器組51的控制單元52。
      控制單元52用于建立含兩個DMA配置描述符的配置描述符循環(huán)鏈表, 利用DMA鏈?zhǔn)侥J叫纬裳h(huán)接收鏈;還用于在DMA根據(jù)當(dāng)前配置描述符 的配置接收數(shù)據(jù)完成后,根據(jù)指示位的值和接收數(shù)據(jù)的長度,重新配置該配 置描述符傳輸長度并重新設(shè)置指示位的狀態(tài)。
      下面,對利于裝置500接收數(shù)據(jù)的一次完整流程進行具體說明。
      在接收方控制單元52配置完成DMA的傳輸長度和工作模式之后,當(dāng)發(fā) 送方發(fā)送數(shù)據(jù)給接收方時,在接收方DMA寄存器組51將依次接收發(fā)送方發(fā) 送的標(biāo)識幀、緩存幀和數(shù)據(jù)段。
      DMA寄存器組51接收完成標(biāo)識幀后,控制單元52響應(yīng)DMA接收完成 中斷,此時Flag-O。
      由于Flag = 0,此時控制單元52將比較w和2 x m - n以確定重新配置 當(dāng)前配置描述符中的傳輸長度,并且比4交w和m - n以確定重新i殳置的Flag 值。
      如果w〉2xm-n,則說明傳輸數(shù)據(jù)很長,發(fā)送方會利用標(biāo)識幀、緩存 幀和數(shù)據(jù)段來傳輸數(shù)據(jù),因此需要將當(dāng)前配置描述符中的傳輸長度重新配置 為w + n- 2xm。
      如果w^2xm-n,則說明傳輸數(shù)據(jù)不是很長,發(fā)送方不會利用數(shù)據(jù)段 傳輸數(shù)據(jù),只要將當(dāng)前配置描述符中的傳輸長度重新配置為m即可。如果w〉m-n,則說明需要在下一次中斷接收緩存幀,此時需要將Flag 重新設(shè)置為1;
      如果w ^ m - n,則說明不需要接收緩存幀,此時應(yīng)該重新設(shè)置Flag為0, 這種情況也可以視為保持Flag值不變。
      重新配置當(dāng)前配置描述符中的傳輸長度和Flag的值后,設(shè)置接收鏈中的 下一個結(jié)點為當(dāng)前配置描述符。
      DMA寄存器組51接收完緩存幀后,控制單元52響應(yīng)DMA接收完成中 斷,此時FlagM。
      由于Flag = 1,因此不會利用當(dāng)前配置描述符接收數(shù)據(jù)段,控制單元52 只要將當(dāng)前配置描述符中的傳輸長度重新配置為m即可。但是,需要通過比 較w和2xm-n以確定是否會接收數(shù)據(jù)段。
      如果w〉2xm-n,則說明需要在下一次中斷接收數(shù)據(jù)段,此時需要將 Flag設(shè)置為2;
      如果w^2xm-n,則說明不需要接收數(shù)據(jù)段,此時將Flag設(shè)置為O。
      重新配置當(dāng)前配置描述符中的傳輸長度和Flag的值后,設(shè)置接收鏈中的 下一個結(jié)點為當(dāng)前配置描述符。
      圖6示出了一個用于發(fā)送方的數(shù)據(jù)發(fā)送裝置600,數(shù)據(jù)發(fā)送裝置600包 括第一單元61、第二單元62和第三單元63。
      第一單元61用于在待發(fā)送的數(shù)據(jù)之前打上標(biāo)識頭。第二單元62用于根 據(jù)標(biāo)識頭的長度、待發(fā)送數(shù)據(jù)的長度和接收方DMA接收的初始長度,確定 所要填充的無效數(shù)據(jù)的長度。第三單元63用于發(fā)送所述標(biāo)識頭、待發(fā)送的數(shù) 據(jù)和填充的無效數(shù)據(jù)。
      其中, 一個可選的確定所要填充的無效數(shù)據(jù)的長度的方式是
      當(dāng)w〈m-n時,所要填充的無效數(shù)據(jù)的長度為m-n-w;
      當(dāng)m-n^w<2xm-n時,所要^真充的無j文凄t才居的長度為2 x m - n - w;
      當(dāng)2xm — n^w〈3xm-n時,所要i真充的無歲丈凄U居的長度為3 x m — n
      —w;
      當(dāng)w^3xm-n時,所要填充的無效數(shù)據(jù)的長度為0。
      本領(lǐng)域技術(shù)人員可以明白,這里結(jié)合所公開的實施例描述的各種示例性的方法步驟和裝置單元均可以電子石更件、軟件或二者的結(jié)合來實現(xiàn)。為了清 楚地示出硬件和軟件之間的可交換性,以上對各種示例性的步驟和單元均以 其功能性的形式進行總體上的描述。這種功能性是以硬件實現(xiàn)還是以軟件實 現(xiàn)依賴于特定的應(yīng)用和整個系統(tǒng)所實現(xiàn)的設(shè)計約束。本領(lǐng)域技術(shù)人員能夠針 對每個特定的應(yīng)用,以多種方式來實現(xiàn)所描述的功能性,但是這種實現(xiàn)的結(jié) 果不應(yīng)解釋為倒是背離本發(fā)明的范圍。
      利用通用處理器、數(shù)字信號處理器(DSP)、專用集成電路(ASIC)、現(xiàn) 場可編程門陣列(FPGA)或者其它可編程的邏輯器件、分立門或者晶體管 邏輯、分立硬件組件或者他們之中的任意組合,可以實現(xiàn)或執(zhí)行結(jié)合這里公 開的實施例描述的各種示例性的單元。通用處理器可能是微處理器,但是在 另一種情況中,該處理器可能是任何常規(guī)的處理器、控制器、微控制器或者 狀態(tài)機。處理器也可能被實現(xiàn)為計算設(shè)備的組合,例如,DSP和微處理器的 組合、多個微處理器、 一個或者更多結(jié)合DSP核心的微處理器或者任何其他 此種結(jié)構(gòu)。
      結(jié)合上述公開的實施例所描述的方法的步驟可直接體現(xiàn)為硬件、由處理 器執(zhí)行的軟件模塊或者這二者的組合。軟件模塊可能存在于RAM存儲器、 閃存、ROM存儲器、EPROM存儲器、EEPROM存儲器、寄存器、硬盤、 移動磁盤、CD-ROM或者本領(lǐng)域熟知的任何其他形式的存儲媒質(zhì)中。 一種典 型存儲媒質(zhì)與處理器耦合,從而使得處理器能夠從該存儲媒質(zhì)中讀信息,且 可向該存儲媒質(zhì)寫信息。在替換實例中,存儲々某質(zhì)是處理器的組成部分。處 理器和存儲i某質(zhì)可能存在于一個ASIC中。該ASIC可能存在于一個用戶站 中。在一個替換實例中,處理器和存儲々某質(zhì)可以作為用戶站中的分立組件存 在。
      提供所述公開的實施例,可以使得本領(lǐng)域技術(shù)人員能夠?qū)崿F(xiàn)或者^f吏用本 發(fā)明。對于本領(lǐng)域技術(shù)人員來說,這些實施例的各種修改是顯而易見的,并 且這里定義的總體原理也可以在不脫離本發(fā)明的范圍和主旨的勤出上應(yīng)用于 其他實施例。以上所述的實施例僅為本發(fā)明的較佳實施例而已,并不用以限 制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改 進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
      權(quán)利要求
      1、一種數(shù)據(jù)接收方法,其特征在于,包括建立含兩個DMA配置描述符的配置描述符循環(huán)鏈表;利用DMA鏈?zhǔn)侥J叫纬裳h(huán)接收鏈,設(shè)置表頭為當(dāng)前配置描述符,啟動DMA;響應(yīng)DMA接收數(shù)據(jù)完成中斷;根據(jù)指示位的值和接收數(shù)據(jù)的長度,重新配置所述當(dāng)前配置描述符并重新設(shè)置指示位的狀態(tài),設(shè)置下一個結(jié)點為當(dāng)前配置描述符;再次等待DMA接收數(shù)據(jù)完成中斷。
      2、 如權(quán)利要求l所述的方法,其特征在于當(dāng)所述指示位為第一預(yù)設(shè)值時,比較w和2xm-n以確定重新配置所 述當(dāng)前配置描述符中的傳輸長度,比較w和m-n以確定重新設(shè)置的指示位 的值;當(dāng)所述指示位為第二預(yù)設(shè)值時,重新配置所述當(dāng)前配置描述符中的傳輸 長度為m,比較w和2 x m - n以確定重新設(shè)置的指示位的值;當(dāng)所述指示位為第三預(yù)設(shè)值時,重新配置所述當(dāng)前配置描述符中的傳輸 長度為m,重新設(shè)置指示位的值;其中,w表示接收數(shù)據(jù)中標(biāo)識頭所指示的數(shù)據(jù)長度,m表示各DMA配 置描述符傳輸長度的初始值,n表示接收數(shù)據(jù)中標(biāo)識頭的長度。
      3、 如權(quán)利要求2所述的方法,其特征在于,如果w大于2xm-n,則 重新配置所述第一個DMA寄存器的長度為w + n - 2 x m;否則,重新配置 所述當(dāng)前配置描述符中的傳輸長度為m。
      4、 如權(quán)利要求2所述的方法,其特征在于,如果w大于m-n,則重新 設(shè)置指示位為第二預(yù)設(shè)值;否則,重新設(shè)置指示位為第一預(yù)設(shè)值。
      5、 如權(quán)利要求2所述的方法,其特征在于,如果w大于2xm-n,則 重新設(shè)置指示位為第三預(yù)設(shè)值;否則,重新設(shè)置指示位為第一預(yù)設(shè)值。
      6、 如權(quán)利要求2至5任一項所述的方法,其特征在于,按s x (tl+t2 ) -b配置各配置描述符中傳輸長度的初始值;其中,s表示數(shù)據(jù)傳輸速率,tl表示響應(yīng)中斷所需要的時間,t2表示從 中斷響應(yīng)到配置DMA配置描述符完成所需要的時間,b表示通信口硬件接收緩存大小。
      7、 一種數(shù)據(jù)發(fā)送方法,其特征在于,包括 在待發(fā)送的數(shù)據(jù)之前打上標(biāo)識頭;根據(jù)標(biāo)識頭的長度、待發(fā)送數(shù)據(jù)的長度和4妄收方DMA配置描述符中傳 輸長度的初始值,確定所要填充的無效數(shù)據(jù)的長度; 發(fā)送所述標(biāo)識頭、待發(fā)送的數(shù)據(jù)和填充的無效數(shù)據(jù)。
      8、 如權(quán)利要求7所述的方法,其特征在于當(dāng)w < m - n時,所要填充的無效數(shù)據(jù)的長度為m - n - w;當(dāng)m-n^w<2xm - n時,所要填充的無歲丈it悟的長度為2 x m - n - w;當(dāng)2xm-n^w〈3xm — n時,所要i真充的無歲丈it才居的長度為3 x m — n—w;當(dāng)w三3xm-n時,所要填充的無效凄史據(jù)的長度為0; 其中,w表示待傳輸數(shù)據(jù)的長度,m表示接收方DMA配置描述符中傳 輸長度的初始值,n表示標(biāo)識頭的長度。
      9、 一種數(shù)據(jù)接收裝置,包括有一個DMA寄存器組和一個用于控制DMA 寄存器組的控制單元,其特征在于,所述控制單元,用于建立含兩個DMA配置描述符的配置描述符循環(huán)鏈 表,利用DMA鏈?zhǔn)侥J叫纬裳h(huán)接收鏈;還用于在DMA根據(jù)當(dāng)前配置描 述符的配置接收數(shù)據(jù)完成后,根據(jù)指示位的值和接收數(shù)據(jù)的長度,重新配置 該配置描述符傳輸長度并重新設(shè)置指示位的狀態(tài)。
      10、 一種數(shù)據(jù)發(fā)送裝置,其特征在于,包括第 一單元,用于在待發(fā)送的數(shù)據(jù)之前打上標(biāo)識頭; 第二單元,用于根據(jù)標(biāo)識頭的長度、待發(fā)送數(shù)據(jù)的長度和接收方DMA 配置描述符中傳輸長度的初始值,確定所要填充的無效數(shù)據(jù)的長度;和 第三單元,用于發(fā)送所述標(biāo)識頭、待發(fā)送的數(shù)據(jù)和填充的無效數(shù)據(jù)。
      全文摘要
      一種數(shù)據(jù)接收方法,包括建立含兩個DMA配置描述符的配置描述符循環(huán)鏈表;利用DMA鏈?zhǔn)侥J叫纬裳h(huán)接收鏈,設(shè)置表頭為當(dāng)前配置描述符,啟動DMA;響應(yīng)DMA接收數(shù)據(jù)完成中斷;根據(jù)指示位的值和接收數(shù)據(jù)的長度,重新配置所述當(dāng)前配置描述符并重新設(shè)置指示位的狀態(tài),設(shè)置下一個結(jié)點為當(dāng)前配置描述符;再次等待中斷。本發(fā)明有效地綜合了現(xiàn)有的定長傳輸和頭標(biāo)識傳輸?shù)膬?yōu)點,利用鏈?zhǔn)紻MA,通過動態(tài)的配置DMA接收長度,實現(xiàn)數(shù)據(jù)的不定長傳輸。這樣既兼顧了系統(tǒng)負擔(dān)和傳輸效率又消除了數(shù)據(jù)丟失的風(fēng)險。本發(fā)明還公開一種數(shù)據(jù)接收裝置,一種數(shù)據(jù)發(fā)送方法和一種數(shù)據(jù)發(fā)送裝置。
      文檔編號G06F13/28GK101556564SQ20081010389
      公開日2009年10月14日 申請日期2008年4月11日 優(yōu)先權(quán)日2008年4月11日
      發(fā)明者堯 崔, 橋 鄒 申請人:聯(lián)芯科技有限公司;大唐移動通信設(shè)備有限公司;上海大唐移動通信設(shè)備有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1