激情综合丁香-激情综合六月-激情综合婷婷亚洲图片-激情综合图区-激情综合网五月

ESM335x工控主板ISA總線DMA數據傳輸

 2018-6-5     作者:劉乾坤         

  在《EM335x主板ISA總線的高級應用》一文中介紹了WEC7版的ESM335x精簡ISA總線數據"塊"讀寫方法,對于多字節數據塊的連續讀寫,采用塊讀寫方式可以減少驅動程序API的調用次數,提高ISA總線的訪問效率。


  數據塊讀寫功能是通過設備驅動的DeviceIoControl來完成的,需要用到以下數據結構:

  

typedef struct 
  { 
    PBYTE pReadBuf;                  // ISA讀數據buffer, 只能一個buffer有效 
    PBYTE pWriteBuf;          // ISA寫數據buffer, 只能一個buffer有效 
    DWORD dwDataLength;      // length of data in byte 
    DWORD dwDataPortOfs;     // 讀寫的起始地址 = 0x00 – 0xFF 
    DWORD dwInc;                     // = 0: 固定地址, > 0: 讀寫后地址自動增加 
  } ISA_BLOCK_INFO, *PISA_BLOCK_INFO;


  在上述數據結構中:

  pReadBuf為進行讀操作時的數據buffer,讀操作具體為8-bit數據讀。注意:數據結構中,pReadBuf和pWrietBuf只能有一個有效。

  pWriteBuf為進行寫操作時的數據buffer,寫操作具體為8-bit數據讀。注意:數據結構中,pReadBuf和pWrietBuf只能有一個有效。

  dwDataPortOfs為讀寫的端口地址,范圍為0x00 – 0xFF。

  dwDataLength為本數據塊讀或寫的字節數。

  dwInc為每次讀寫后,地址的自動增量,dwInc = 0:表示固定地址讀寫,dwInc > 0: 表示每次讀寫后,地址會自動增加dwInc,作為下一次的讀寫地址。當地址超過0xFF時,會折回到地址0x00。


  數據塊讀寫方式雖然減少了頻繁調用系統API而產生的系統開銷,但數據讀寫過程還是需要CPU的全程參與,為了進一步提高CPU的利用效率,我們升級了ISA的驅動程序,實現了DMA方式的數據傳輸。基于支持DMA操作的ISA驅動,應用程序在調用DeviceIoControl進行塊讀寫操作時,如果訪問固定地址(即將設置參數dwInc為0),則驅動程序就會自動啟用DMA方式進行數據傳輸。


  采用DMA進行數據傳輸可以進一步提高ISA總線的數據傳輸速度,同時大大降低總線數據傳輸對CPU負載率的影響。當不使用DMA進行數據傳輸,ESM335x CPU全速運行時(CPU負載100%),ISA總線的讀寫速度在3MB/s左右,使用DMA方式后,ESM335x ISA總線速度可達到5MB/s左右,扣除驅動程序必要處理開銷,在應用層實測的數據塊讀速度為4.17MB/s、數據塊寫速度為4.5MB/s,而此時CPU的負載率在15%左右。

主站蜘蛛池模板: 国产精品福利视频萌白酱g| 草逼网址| 色妞干网| 114一级毛片免费| 亚洲欧美日韩高清在线看| 国产精品久久久久久影视| 国产婷婷综合丁香亚洲欧洲| 亚洲欧洲日韩国产一区二区三区 | 黄色片在线播放| 欧美 magnet| 中国一级特黄特级毛片| 污黄视频在线观看| 国产精品亚洲视频| 黄色录像毛片| 国产一区二区三区日韩欧美| 亚洲午夜片| 久久精品国产亚洲麻豆| 中国一级特黄真人毛片免| 亚洲爆操| 成人综合色站| 国产一级免费| 黄色毛片免费在线观看| 91天堂97年嫩模在线观看| 麻豆精品在线观看| 亚洲自偷精品视频自拍| 91视频中文字幕| 日本黄大片在线观看| 成人第一页| 自拍亚洲色图| 伊人久久久| 成人精品一级毛片| 伦理一区二区| 色视频在线观看视频| 免费观看黄色a一级视频播放| 国产高清免费不卡观看| 精品国产亚一区二区三区| 六月丁香激情网| 美女久久| 久久九九热re6这里有精品| 午夜性刺激免费视频| 3p久久|