请教PCI卡的DMA方式问题

武汉白云黄鹤站∶精华区
发信人: tanky (灌篮高手), 信区: DriverProgram
标  题: 【汇总】请教PCI卡的DMA方式问题
发信站: 武汉白云黄鹤站 (2003年11月16日11:57:20 星期天), 站内信件
 
发信人:  DcruiseT (巡航)
发信站:  武汉白云黄鹤站 (2001年03月08日17:48:15 星期四)
 
    在程序中,我怎么得到PCI卡使用的是哪一个通道.是不是象I/O方
式从卡上的寄存器得到I/O地址一样?
    另外,谁有DMA原理方面的资料,告诉我.谢了
 
──────────────────────────────────────
发信人:  luoluo (luoluo)
发信站:  武汉白云黄鹤站 (2001年03月08日18:25:32 星期四)
 
   其实pci 总线协议里都不提dma 传输, 要实现存储器到存储器的数据
传输,pci 卡必须支持主控方式. 卡上的pci 桥必须要有dma 控制器,所以
就不存在占用dma 通道的问题.
 
【 在 DcruiseT (巡航) 的大作中提到: 】
∶     在程序中,我怎么得到PCI卡使用的是哪一个通道.是不是象I/O方
∶ 式从卡上的寄存器得到I/O地址一样?
∶     另外,谁有DMA原理方面的资料,告诉我.谢了
 
──────────────────────────────────────
发信人:  DcruiseT (巡航)
发信站:  武汉白云黄鹤站 (2001年03月09日13:43:53 星期五)
 
    这样一说,我有点云里雾里了,那你的意思是我要控制PCI桥上的DMA
控制器?比如所传数据块的地址,长度,以及传输标志需要写在PCI卡的
寄存器上.那我需要做的是什么?只需要申请DMA缓冲区,I/O方式向卡的
寄存器写相应信息就行了?
    另外,我看的关于虚拟设备驱动程序的书是不是没用,好象书上都牵
扯到通道.
 
【 在 luoluo (luoluo) 的大作中提到: 】
∶    其实pci 总线协议里都不提dma 传输, 要实现存储器到存储器的数据
∶ 传输,pci 卡必须支持主控方式. 卡上的pci 桥必须要有dma 控制器,所以
∶ 就不存在占用dma 通道的问题.
∶ 【 在 DcruiseT (巡航) 的大作中提到: 】
∶ :     在程序中,我怎么得到PCI卡使用的是哪一个通道.是不是象I/O方
∶ : 式从卡上的寄存器得到I/O地址一样?
∶ :     另外,谁有DMA原理方面的资料,告诉我.谢了
 
 
──────────────────────────────────────
发信人:  imagestorm (hifi)
发信站:  武汉白云黄鹤站 (Sat Mar 10 21:39:21 2001) 
 
【 在 DcruiseT (巡航) 的大作中提到: 】
∶     这样一说,我有点云里雾里了,那你的意思是我要控制PCI桥上的DMA 
∶ 控制器?比如所传数据块的地址,长度,以及传输标志需要写在PCI卡的 
∶ 寄存器上.那我需要做的是什么?只需要申请DMA缓冲区,I/O方式向卡的 
∶ 寄存器写相应信息就行了? 
∶     另外,我看的关于虚拟设备驱动程序的书是不是没用,好象书上都牵 
∶ 扯到通道. 

你的想法没错,得看你做什么东西了,是自己做的板子?用的是什么桥芯片?
 
你得申请一块物理地址连续的内存! 
∶  
∶ 【 在 luoluo (luoluo) 的大作中提到: 】 
∶ :    其实pci 总线协议里都不提dma 传输, 要实现存储器到存储器的数据 
∶ : 传输,pci 卡必须支持主控方式. 卡上的pci 桥必须要有dma 控制器,所以 
∶ : 就不存在占用dma 通道的问题. 
∶ : 【 在 DcruiseT (巡航) 的大作中提到: 】 
∶ : :     在程序中,我怎么得到PCI卡使用的是哪一个通道.是不是象I/O方 
∶ : : 式从卡上的寄存器得到I/O地址一样? 
∶ : :     另外,谁有DMA原理方面的资料,告诉我.谢了 
∶  
∶  
 
──────────────────────────────────────
发信人:  DcruiseT (巡航)
发信站:  武汉白云黄鹤站 (2001年03月12日10:38:10 星期一)
 
    板子由项目组其他人完成,关于数据加密及认证.
    你为什么会提到用什么桥芯片?与这有关吗?目前我不知道他们用
什么桥芯片.
    关于DMA的物理连续内存,我的想法是使用vtoolsd的VDMABuffer类.
从它的帮助信息,感觉应该可以.
    现在的问题是在外设与Buffer之间DMA传输时,能不能被中断打断,
会有什么后果?因为我的设想是有时外设不需要Buffer上的全部数据,它
已经可以返回数据及状态了(比如错误信息).         
【 在 imagestorm (hifi) 的大作中提到: 】
∶ 【 在 DcruiseT (巡航) 的大作中提到: 】
∶ :     这样一说,我有点云里雾里了,那你的意思是我要控制PCI桥上的DMA
∶ : 控制器?比如所传数据块的地址,长度,以及传输标志需要写在PCI卡的
∶ : 寄存器上.那我需要做的是什么?只需要申请DMA缓冲区,I/O方式向卡的
∶ : 寄存器写相应信息就行了?
∶ :     另外,我看的关于虚拟设备驱动程序的书是不是没用,好象书上都牵
∶ : 扯到通道.
∶ 你的想法没错,得看你做什么东西了,是自己做的板子?用的是什么桥芯片?
∶ 你得申请一块物理地址连续的内存! 
∶ : 
∶ .................(以下省略)
 
 
──────────────────────────────────────
发信人:  luoluo (luoluo)
发信站:  武汉白云黄鹤站 (2001年03月12日18:22:33 星期一)
 
   桥芯片就是指完成pci 总线到局部总线转换的接口芯片.
   硬件上应提供保证,使dma 数据传输时不会产生中断.
 
【 在 DcruiseT (巡航) 的大作中提到: 】
∶     板子由项目组其他人完成,关于数据加密及认证.
∶     你为什么会提到用什么桥芯片?与这有关吗?目前我不知道他们用
∶ 什么桥芯片.
∶     关于DMA的物理连续内存,我的想法是使用vtoolsd的VDMABuffer类.
∶ 从它的帮助信息,感觉应该可以.
∶     现在的问题是在外设与Buffer之间DMA传输时,能不能被中断打断,
∶ 会有什么后果?因为我的设想是有时外设不需要Buffer上的全部数据,它
∶ 已经可以返回数据及状态了(比如错误信息).         
∶ 【 在 imagestorm (hifi) 的大作中提到: 】
∶ : 你的想法没错,得看你做什么东西了,是自己做的板子?用的是什么桥芯片?
∶ .................(以下省略)
 
──────────────────────────────────────
发信人:  wngl (wngl)
发信站:  武汉白云黄鹤站 (2001年03月13日11:08:58 星期二)
 
【 在 wngl (wngl) 的大作中提到: 】
∶ 【 在 imagestorm (hifi) 的大作中提到: 】
∶ : 你的想法没错,得看你做什么东西了,是自己做的板子?用的是什么桥芯片?
∶ : 你得申请一块物理地址连续的内存! 
如何分配,要求是比较大的一块,2M左右吧,如何分配,怎样访问?
我只会用ddk.
 
∶ : .................(以下省略)
 
──────────────────────────────────────
发信人:  wngl (wngl)
发信站:  武汉白云黄鹤站 (2001年03月14日15:57:15 星期三)
 
【 在 imagestorm (hifi) 的大作中提到: 】
∶ 【 在 DcruiseT (巡航) 的大作中提到: 】
∶ :     这样一说,我有点云里雾里了,那你的意思是我要控制PCI桥上的DMA
∶ : 控制器?比如所传数据块的地址,长度,以及传输标志需要写在PCI卡的
∶ : 寄存器上.那我需要做的是什么?只需要申请DMA缓冲区,I/O方式向卡的
∶ : 寄存器写相应信息就行了?
∶ :     另外,我看的关于虚拟设备驱动程序的书是不是没用,好象书上都牵
∶ : 扯到通道.
∶ 你的想法没错,得看你做什么东西了,是自己做的板子?用的是什么桥芯片?
∶ 你得申请一块物理地址连续的内存! 
 
不一定要连续的物理地址吧?不是有传说中的Scatter/Gather么?而且传给设备的也不
是物理地址而是逻辑地址,是由映射寄存器映射的。
大概是这样吧,我也不清楚,有没有人懂这片,给说说。
 
∶ : 
∶ .................(以下省略)
 
──────────────────────────────────────
发信人:  lakonikos (我是土人)
发信站:  武汉白云黄鹤站 (2001年03月14日16:22:10 星期三)
 
就俺的理解,如果要传输大数据,且长时间,不要scatter/gather模式
也可以吧,还不如弄整块buffer在内存,一直到传完了,再去掉。只是
在申请时要耗一点时间,实时性总比s/g要好一点吧。
在vtoolsd里面有相应的函数。
【 在 wngl (wngl) 的大作中提到: 】
∶ 【 在 imagestorm (hifi) 的大作中提到: 】
∶ : 你的想法没错,得看你做什么东西了,是自己做的板子?用的是什么桥芯片?
∶ : 你得申请一块物理地址连续的内存! 
∶ 不一定要连续的物理地址吧?不是有传说中的Scatter/Gather么?而且传给设备的也不
∶ 是物理地址而是逻辑地址,是由映射寄存器映射的。
∶ 大概是这样吧,我也不清楚,有没有人懂这片,给说说。
∶ : .................(以下省略)
 
 
──────────────────────────────────────
发信人:  ry (天堂鸟●即将工作)
发信站:  武汉白云黄鹤站 (2001年03月14日18:35:24 星期三)
 
【 在 wngl (wngl) 的大作中提到: 】
∶ 【 在 imagestorm (hifi) 的大作中提到: 】
∶ : 你的想法没错,得看你做什么东西了,是自己做的板子?用的是什么桥芯片?
∶ : 你得申请一块物理地址连续的内存! 
∶ 不一定要连续的物理地址吧?不是有传说中的Scatter/Gather么?而且传给设备的也不
∶ 是物理地址而是逻辑地址,是由映射寄存器映射的。
 
我觉得应该是物理地址才对,否则,当外部的主控设备占用了总线之后,它怎么知道
什么是逻辑地址?
 
∶ 大概是这样吧,我也不清楚,有没有人懂这片,给说说。
∶ : .................(以下省略)
 
──────────────────────────────────────
发信人:  lakonikos (我是土人)
发信站:  武汉白云黄鹤站 (2001年03月14日22:49:46 星期三)
 
好像是线性地址,记得好像在pci的规范中说它会根据基址寄存器将linear地址
转化为物理地址。
 
【 在 ry (天堂鸟●即将工作) 的大作中提到: 】
∶ 【 在 wngl (wngl) 的大作中提到: 】
∶ : 不一定要连续的物理地址吧?不是有传说中的Scatter/Gather么?而且传给设备的也不
∶ : 是物理地址而是逻辑地址,是由映射寄存器映射的。
∶ 我觉得应该是物理地址才对,否则,当外部的主控设备占用了总线之后,它怎么知道
∶ 什么是逻辑地址?
∶ : 大概是这样吧,我也不清楚,有没有人懂这片,给说说。
 
 
──────────────────────────────────────
发信人:  wngl (wngl)
发信站:  武汉白云黄鹤站 (2001年03月15日09:03:50 星期四)
 
【 在 wngl (wngl) 的大作中提到: 】
nod,我印象中也是这样。只是很不解这基址寄存器是在那里实现的。谁指点一下。
还有,这个东西和scatter/gather中的映射寄存器(map reg)有什么关系,是不是同一个
东西?
 
∶ 【 在 lakonikos (我是土人) 的大作中提到: 】
∶ : 好像是线性地址,记得好像在pci的规范中说它会根据基址寄存器将linear地址
∶ : 转化为物理地址。
 
──────────────────────────────────────
发信人:  ry (天堂鸟●即将工作)
发信站:  武汉白云黄鹤站 (2001年03月15日10:09:37 星期四)
 
【 在 wngl (wngl) 的大作中提到: 】
∶ 【 在 wngl (wngl) 的大作中提到: 】
∶ nod,我印象中也是这样。只是很不解这基址寄存器是在那里实现的。谁指点一下。
 
我认为,基址寄存器是在PCI桥中的一个存储空间,其中的内容是在系统加电时
由BIOS写入的。
 
∶ 还有,这个东西和scatter/gather中的映射寄存器(map reg)有什么关系,是不是同一个
∶ 东西?
 
──────────────────────────────────────
发信人:  ry (天堂鸟●即将工作)
发信站:  武汉白云黄鹤站 (2001年03月15日10:10:16 星期四)
 
【 在 lakonikos (我是土人) 的大作中提到: 】
∶ 好像是线性地址,记得好像在pci的规范中说它会根据基址寄存器将linear地址
∶ 转化为物理地址。
 
物理地址是指分段的那种的,如果是,那么就是线性地址了。
 
∶ 【 在 ry (天堂鸟●即将工作) 的大作中提到: 】
∶ : 我觉得应该是物理地址才对,否则,当外部的主控设备占用了总线之后,它怎么知道
∶ : 什么是逻辑地址?
 
──────────────────────────────────────
发信人:  lakonikos (我是土人)
发信站:  武汉白云黄鹤站 (2001年03月15日12:28:36 星期四)
 
线性地址是一个长整型。它这个物理地址好像就是flat 的,只用一个段
就可以了。写pci的寄存器,应当是谢linear地址。
 
【 在 ry (天堂鸟●即将工作) 的大作中提到: 】
∶ 【 在 lakonikos (我是土人) 的大作中提到: 】
∶ : 好像是线性地址,记得好像在pci的规范中说它会根据基址寄存器将linear地址
∶ : 转化为物理地址。
∶ 物理地址是指分段的那种的,如果是,那么就是线性地址了。
 
 
──────────────────────────────────────
发信人:  besty (论文,两万1了)
发信站:  武汉白云黄鹤站 (2001年03月15日14:38:45 星期四)
 
概念错误,基地址寄存器保存的是物理地址
【 在 lakonikos (我是土人) 的大作中提到: 】
∶ 线性地址是一个长整型。它这个物理地址好像就是flat 的,只用一个段
∶ 就可以了。写pci的寄存器,应当是谢linear地址。
∶ 【 在 ry (天堂鸟●即将工作) 的大作中提到: 】
∶ : 物理地址是指分段的那种的,如果是,那么就是线性地址了。
 
──────────────────────────────────────
发信人:  wngl (wngl)
发信站:  武汉白云黄鹤站 (2001年03月15日14:42:12 星期四)
 
这个线性地址是专门为pci访问内存而准备的么?
它与保护模式下分页机制进行前的线性地址有没有什么关系?
 
【 在 lakonikos (我是土人) 的大作中提到: 】
∶ 线性地址是一个长整型。它这个物理地址好像就是flat 的,只用一个段
∶ 就可以了。写pci的寄存器,应当是谢linear地址。
∶ 【 在 ry (天堂鸟●即将工作) 的大作中提到: 】
∶ : 物理地址是指分段的那种的,如果是,那么就是线性地址了。
 
──────────────────────────────────────
发信人:  wngl (wngl)
发信站:  武汉白云黄鹤站 (2001年03月15日14:47:07 星期四)
 
能说说pci规范哪里讲述了这一概念么?
 
【 在 lakonikos (我是土人) 的大作中提到: 】
∶ 好像是线性地址,记得好像在pci的规范中说它会根据基址寄存器将linear地址
∶ 转化为物理地址。
∶ 【 在 ry (天堂鸟●即将工作) 的大作中提到: 】
∶ : 我觉得应该是物理地址才对,否则,当外部的主控设备占用了总线之后,它怎么知道
∶ : 什么是逻辑地址?
 
──────────────────────────────────────
发信人:  imagestorm (hifi)
发信站:  武汉白云黄鹤站 (Tue Mar 20 11:53:25 2001) 
 
我想你还是没发时间看书和资料:
 
你说你不知道别人用什么芯片,这样的话怎么可能编驱动了,你知道写哪个寄存器吗?你知

 
想让芯片工作在DMA方式下该如何配置吗?
 
为什么会有中断,
 
你必须分配一块物理地址连续的内存区域,把这个物理地址传给桥芯片,你的中断是指什么
意思,
 
好运!
 
【 在 DcruiseT (巡航) 的大作中提到: 】
∶     板子由项目组其他人完成,关于数据加密及认证. 
∶     你为什么会提到用什么桥芯片?与这有关吗?目前我不知道他们用 
∶ 什么桥芯片. 
∶     关于DMA的物理连续内存,我的想法是使用vtoolsd的VDMABuffer类. 
∶ 从它的帮助信息,感觉应该可以. 
∶     现在的问题是在外设与Buffer之间DMA传输时,能不能被中断打断, 
∶ 会有什么后果?因为我的设想是有时外设不需要Buffer上的全部数据,它 
∶ 已经可以返回数据及状态了(比如错误信息).          
∶ 【 在 imagestorm (hifi) 的大作中提到: 】 
∶ : 【 在 DcruiseT (巡航) 的大作中提到: 】 
∶ : :     这样一说,我有点云里雾里了,那你的意思是我要控制PCI桥上的DMA 
∶ : : 控制器?比如所传数据块的地址,长度,以及传输标志需要写在PCI卡的 
∶ : : 寄存器上.那我需要做的是什么?只需要申请DMA缓冲区,I/O方式向卡的 
∶ : : 寄存器写相应信息就行了? 
∶ : :     另外,我看的关于虚拟设备驱动程序的书是不是没用,好象书上都牵 
∶ : : 扯到通道. 
∶ : 你的想法没错,得看你做什么东西了,是自己做的板子?用的是什么桥芯片? 
∶ : 你得申请一块物理地址连续的内存!  
∶ : :  
∶ : .................(以下省略) 
∶  
 
──────────────────────────────────────
发信人:  DcruiseT (巡航)
发信站:  武汉白云黄鹤站 (2001年03月20日12:27:45 星期二)
 
    我确实不知他们用的什么芯片,但寄存器基址,以及DMA方式配置
的偏移量我知道。
    虽然有寄存器提供DMA是否传输完毕的信息,但开发硬件人员想用
硬中断,不过现在他们又不用了。
    谢谢赐教
 
【 在 imagestorm (hifi) 的大作中提到: 】
∶ 我想你还是没发时间看书和资料:
∶ 你说你不知道别人用什么芯片,这样的话怎么可能编驱动了,你知道写哪个寄存器吗?你知
∶ 道
∶ 想让芯片工作在DMA方式下该如何配置吗?
∶ 为什么会有中断,
∶ 你必须分配一块物理地址连续的内存区域,把这个物理地址传给桥芯片,你的中断是指什么
∶ 意思,
∶ 好运!
∶ 【 在 DcruiseT (巡航) 的大作中提到: 】
∶ :     板子由项目组其他人完成,关于数据加密及认证.
∶ .................(以下省略)
 
 
──────────────────────────────────────

华中地区网络中心 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
海思PCI DMA演示是一种在海思芯片平台上展示PCI DMA传输技术的演示项目。在这个演示项目中,通过使用PCI DMA传输技术,可以实现高速数据传输,提高系统性能和数据处理效率。 PCI DMA传输技术是一种通过直接内存访问(DMA)将数据从PCI设备传输到系统内存或从系统内存传输到PCI设备的技术。与传统的CPU拷贝方式相比,PCI DMA传输技术可以极大地减轻CPU的负担,实现高速、高效的数据传输。 在海思PCI DMA演示中,通过使用PCI DMA传输技术,可以实现以下功能: 1. 快速数据传输:利用PCI DMA技术,可以实现在海思芯片平台上的高速数据传输,实现高带宽、低延迟的数据处理。 2. 提高系统性能:由于PCI DMA技术可以减少CPU的负担,提高系统的处理能力和性能,使系统更加稳定、高效。 3. 支持大容量数据传输:PCI DMA传输技术可以支持大容量数据的传输,支持高分辨率、高清晰度的图像、音频等数据的传输和处理。 4. 灵活可配置:海思PCI DMA演示支持灵活的配置和调整,可以根据不同的应用需求进行参数设置,如传输数据的大小、传输模式等。 海思PCI DMA演示是海思公司为展示其芯片平台强大数据传输和处理能力而开发的一个演示项目。通过该演示项目,人们可以了解和体验PCI DMA传输技术在海思芯片平台上的应用和优势,为开发高性能、高效能的数据处理应用提供了参考和示范。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值