请教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 (巡航) 的大作中提到: 】
∶ :     板子由项目组其他人完成,关于数据加密及认证.
∶ .................(以下省略)
 
 
──────────────────────────────────────

华中地区网络中心 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值