在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM處理器的HDLC通信的DMA實(shí)現(xiàn)

      基于ARM處理器的HDLC通信的DMA實(shí)現(xiàn)

      作者: 時(shí)間:2012-11-16 來源:網(wǎng)絡(luò) 收藏

      1.3 緩沖描述符(BD)

      緩沖描述符是S3C5410B使用的一種數(shù)據(jù)結(jié)構(gòu),通常構(gòu)成循環(huán)鏈表。H引擎可以直接讀取結(jié)構(gòu)的信息,用戶通過填寫這些結(jié)構(gòu)中的域去控制H的運(yùn)行行為。如圖2所示,每個(gè)BD包括4個(gè)域:

      ①數(shù)據(jù)緩存指針(data buffer pointer)。第31位標(biāo)識(shí)主權(quán)(ownership)關(guān)系,表示當(dāng)前的BD在(1)控制器和CPU(0)之間的所屬關(guān)系,通常在發(fā)送和接收時(shí)要對(duì)其檢查。對(duì)于數(shù)據(jù)長度,通常在發(fā)送時(shí)寫入BD的幀長度域,DMA引擎會(huì)根據(jù)其發(fā)送相應(yīng)長度的數(shù)據(jù)。接收數(shù)據(jù)長度會(huì)自動(dòng)寫入這個(gè)域。

      ②保留域。發(fā)送BD(Tx),低8位表示發(fā)送控制(如前同步信號(hào)、CRC模式、BIG/LITTLE端選擇等);接收BD(Rx),保留未用。

      ③長度域。發(fā)送BD,用戶寫入發(fā)送幀的數(shù)據(jù)長度;接收BD,DMA控制器寫入接收幀的數(shù)據(jù)長度。

      ④Next BD指針。指向下一個(gè)BD,收發(fā)BD各自構(gòu)成一組BD鏈。

      HDMA控制器在使用過一個(gè)BD后,會(huì)自動(dòng)讀入下一個(gè)BD,裝入HDMA指針寄存器(HDMAXxPTR)。使用指針gpXxBDStart,指示當(dāng)前的可用BD位置。在設(shè)備中定義為全局變量(X表示T或R)。

      1.4 重要的數(shù)據(jù)類型

      BD結(jié)構(gòu)的定義如圖2所示。

      typedef struct BD{

      U32 BufferData Ptr;

      //數(shù)據(jù)緩存區(qū)指針,其中第31位標(biāo)識(shí)BD的所有權(quán)

      U32 Reserved;

      //發(fā)送BD控制位,定義發(fā)送時(shí)操作的模式,接收BD保留

      U32 StatusLength;

      //運(yùn)行狀態(tài),在ISR中檢測,也定義對(duì)應(yīng)的數(shù)據(jù)緩存區(qū)的長度

      struct BD *NextBD;

      //下一個(gè)BD指針

      }sBuffer Descriptor;

      HDLC幀(Frame)定義(如表1):

      typedef struct HDLCFRAME{

      U8 address[4]; //地址

      U8 control; //控制信息通道為FFH

      U8 information[1505]; //信息域,有效的數(shù)據(jù)

      }sHdlcFrame;

      HDLC設(shè)備結(jié)構(gòu)定義:

      typedef struct HDLC_Device {

      U32 HDLC_Port; /號(hào)

      U32 HDLC_Baud; //HDLC波特率

      U32 HDLC_Data_format;

      //HDLC數(shù)據(jù)格式,NRZ,NRZI,F(xiàn)M0,F(xiàn)M1,Manchester

      //……時(shí)鐘選擇(發(fā)送/接收時(shí)鐘源)……

      sBufferDescriptor gpTxBDStart;/*當(dāng)前的發(fā)送BD指針Start of TX BDs*/

      sBufferDescriptor *gpRxBDStart; /*當(dāng)前的接收BD指針Start of RX BDs */

      //……狀態(tài)統(tǒng)計(jì)信息(Abort,CRC error,Null list)……

      }Hdle_End_Device;

      由于在中斷服務(wù)程序入口無法傳遞參數(shù),故定義設(shè)備為全局變量,程序設(shè)計(jì)中使用指針傳遞,提高效率。



      關(guān)鍵詞: ARM處理器 HDLC通信 DMA

      評(píng)論


      相關(guān)推薦

      技術(shù)專區(qū)

      關(guān)閉