武汉白云黄鹤站∶精华区
发信人: 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 (巡航) 的大作中提到: 】
∶ : 板子由项目组其他人完成,关于数据加密及认证.
∶ .................(以下省略)
──────────────────────────────────────
华中地区网络中心