<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于Linux嵌入式系統的ISA總線(xiàn)DMA的實(shí)現

基于Linux嵌入式系統的ISA總線(xiàn)DMA的實(shí)現

作者: 時(shí)間:2010-09-08 來(lái)源:網(wǎng)絡(luò ) 收藏

  0x003 0x0c3 Channel 1/5的Count Register

  0x004 0x0c4 Channel 2/6的Address Register

  0x005 0x0c5 Channel 2/6的Count Register

  0x006 0x0c6 Channel 3/7的Address Register

  0x007 0x0c7 Channel 3/7的Count Register

  0x008 0x0d0 Status Register Command Register

  0x009 0x0d2 Request Register

  0x00a 0x0d4 Single Channel Mask Register

  0x00b 0x0d6 Mode Register

  0x00c 0x0d8 Clear Flip-Flop Register

  0x00d 0x0da Temporary Register Reset controller

  0x00e 0x0dc Reset all channel masks

  0x00f 0x0de all-channels Mask Register

  各通道的Page Register在I/O端口空間中的地址如下:

   channel Page Register’sI/O port address

  0 0x087

  1 0x083

  2 0x081

  3 0x082

  4 0x08f

  5 0x08b

  6 0x089

  7 0x08a

  注意兩點(diǎn):

  1. 各DMA通道的Address Register是一個(gè)16位的寄存器,但其對應的I/O端口是8位寬,因此對這個(gè)寄存器的讀寫(xiě)就需要兩次連續的I/O端口讀寫(xiě)操作,低8位首先被發(fā)送,然后緊接著(zhù)發(fā)送高8位。

  2. 各DMA通道的Count Register:這也是一個(gè)16位寬的寄存器(無(wú)論對于8位DMA還是16位DMA),但相對應的I/O端口也是8位寬,因此讀寫(xiě)這個(gè)寄存器同樣需要兩 次連續的I/O端口讀寫(xiě)操作,而且同樣是先發(fā)送低8位,再發(fā)送高8位。往這個(gè)寄存器中寫(xiě)入的值應該是實(shí)際要傳輸的數據長(cháng)度減1后的值。在DMA傳輸事務(wù)期 間,這個(gè)寄存器中的值在每次DMA傳輸操作后都會(huì )被減1,因此讀取這個(gè)寄存器所得到的值將是當前DMA事務(wù)所剩余的未傳輸數據長(cháng)度減1后的值。當DMA傳 輸事務(wù)結束時(shí),該寄存器中的值應該被置為0。

  2.4 DMA通道的典型使用

  在一個(gè)典型的PC機中,某些DMA通道通常被固定地用于一些PC機中的標準外設,如下所示:

  Channel Size Usage

  0 8-bit Memory Refresh

  1 8-bit Free

  2 8-bit Floppy Disk Controller

  3 8-bit Free

  4 16-bit Cascading

  5 16-bit Fr ee

  6 16-bit Free

  7 16-bit Free

  2.5 啟動(dòng)一個(gè)DMA傳輸事務(wù)的步驟

  要啟動(dòng)一個(gè)DMA傳輸事務(wù)必須對8237進(jìn)行編程,其典型步驟如下:

  1.通過(guò)CLI指令關(guān)閉中斷。

  2.Disable那個(gè)將被用于此次DMA傳輸事務(wù)的DMA通道。

  3.向Flip-Flop寄存器中寫(xiě)入0值,以重置它。

  4.設置Mode Register。

  5.設置Page Register。

  6.設置Address Register。

  7.設置Count Register。

  8.Enable那個(gè)將被用于此次DMA傳輸事務(wù)的DMA通道。

  9.用STI指令開(kāi)中斷。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>