dma映射.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
dma映射

DMA控制器硬件结构 1 DMA通道使用的地址 3 DMA操作函数 4 DMA映射 6 (1)建立一致 DMA 映射 7 (2)建立流式 DMA 映射 8 (3)分散/集中映射 10 DMA池 11 一个简单的使用DMA 例子 16 DMA控制器硬件结构 DMA允许外围设备和主内存之间直接传输 I/O 数据, DMA 依赖于系统。每一种体系结构DMA传输不同,编程接口也不同。 数据传输可以以两种方式触发:一种软件请求数据,另一种由硬件异步传输。 在第一种情况下,调用的步骤可以概括如下(以read为例): (1)在进程调用 read 时,驱动程序的方法分配一个 DMA 缓冲区,随后指示硬件传送它的数据。进程进入睡眠。 (2)硬件将数据写入 DMA 缓冲区并在完成时产生一个中断。 (3)中断处理程序获得输入数据,应答中断,最后唤醒进程,该进程现在可以读取数据了。 第二种情形是在 DMA 被异步使用时发生的。以数据采集设备为例: (1)硬件发出中断来通知新的数据已经到达。 (2)中断处理程序分配一个DMA缓冲区。 (3)外围设备将数据写入缓冲区,然后在完成时发出另一个中断。 (4)处理程序利用DMA分发新的数据,唤醒任何相关进程。 网卡传输也是如此,网卡有一个循环缓冲区(通常叫做 DMA 环形缓冲区)建立在与处理器共享的内存中。每一个输入数据包被放置在环形缓冲区中下一个可用缓冲区,并且发出中断。然后驱动程序将网络数据包传给内核的其它部分处理,并在环形缓冲区中放置一个新的 DMA 缓冲区。 驱动程序在初始化时分配DMA缓冲区,并使用它们直到停止运行。 DMA控制器依赖于平台硬件,这里只对i386的8237 DMA控制器做简单的说明,它有两个控制器,8个通道,具体说明如下: 控制器1: 通道0-3,字节操作, 端口为 00-1F 控制器2: 通道 4-7, 字操作, 端口咪 C0-DF - 所有寄存器是8 bit,与传输大小无关。   - 通道 4 被用来将控制器1与控制器2级联起来。 - 通道 0-3 是字节操作,地址/计数都是字节的。 - 通道 5-7 是字操作,地址/计数都是以字为单位的。 - 传输器对于(0-3通道)必须不超过64K的物理边界,对于5-7必须不超过128K边界。 - 对于5-7通道page registers 不用数据 bit 0, 代表128K页 - 对于0-3通道page registers 使用 bit 0, 表示 64K页 DMA 传输器限制在低于16M物理内存里。装入寄存器的地址必须是物理地址,而不是逻辑地址。  对于0-3通道来说地址对寄存器的映射如下: A23 ... A16 A15 ... A8 A7 ... A0 (物理地址) | ... | | ... | | ... | | ... | | ... | | ... | | ... | | ... | | ... | P7 ... P0 A7 ... A0 A7 ... A0 | Page | Addr MSB | Addr LSB | (DMA 地址寄存器) 对于5-7通道来说地址对寄存器的映射如下: A23 ... A17 A16 A15 ... A9 A8 A7 ... A1 A0 (物理地址) | ... | \ \ ... \ \ \ ... \ \ | ... | \ \ ... \ \ \ ... \ (没用) | ... | \ \ ... \ \ \ ... \ P7 ... P1 (0) A7 A6 ... A0 A7 A6 ... A0 | Page | Addr MSB | Addr LSB | (DMA 地址寄存器) 通道 5-7 传输以字为单位, 地址和计数都必须是以字对齐的。 在include/asm-i386/dma.h中有i386平台的8237 DMA控制器的各处寄存器的地址及寄存器的定义,这里只对控制寄存器加以说明: DMA Channel Control/Status Register (DCSRX) 第31位 表明是否开始 第30位 选定Descriptor和Non-Descriptor模式 第29位 判断有无中断 第8位 请求处理 (Request Pending) 第3位 Channel是否运行 第2位 当前数据交换是否完成 第1位 是否由D

文档评论(0)

75986597 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档