fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:1269回复:17

jst7792,用过pci9054dma的分散集中功能吗

楼主#
更多 发布于:2003-04-17 11:51
用过pci9054dma的分散集中功能吗,可否指教一二!!

最新喜欢:

jackywangwenjackyw...
有了驱动,人才有了力量。
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-04-17 12:32
用过,很好用,如果用的好,可以实现些很有趣的功能.
兄弟们,给点分吧
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-04-17 14:31
这方面我一点资料都没有,可否指点一下看那方面的资料。
或者提供一些参考。
有了驱动,人才有了力量。
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-04-17 15:52
其实就是一个链表结构,数据手册还有一些驱动的书上都有,没什么特别复杂的,有兴趣的话分析一下PLX的源代码.
兄弟们,给点分吧
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-04-22 11:42
分散集中时9054的寄存器如何设置,特别是descriper pointer resgister.谢谢!
有了驱动,人才有了力量。
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-04-22 14:57
有些记不清了,大概是这样:
根据你要传输的数据缓冲,取得S/G list,然后在内存页中开一块空间,初始化这个描述链表,表的每个单元组成对应于9054的4个相关寄存器(PCI地址,Local地址,传输量,下一描述表地址)最后一个单元需要把下一描述表地址写成0(end of chain).然后启动.
兄弟们,给点分吧
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-04-22 15:42
松涛,你看我得如下理解对不对:
9054的分散集中列表的每一个单元(描述表)必须是如下格式:
pci address
local address
transter size
next descriper pointer
这样我采用一个两维数组实现如何,其中第一维表示有几个连续块,
第二维就是如上结构。next descriper pointer的内容为下一个
描述表的地址。我这里用数组存放分散集中列表,故每一个
next descriper pointer的内容差四个双字。还有这里next descriper pointer的内容应为内核虚拟地址吧。
这样将第一个描述表的内容付给9054,并启动之,9054传输完以后,
就可以依次找到其他的描述表,并进行传输。


有了驱动,人才有了力量。
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-04-22 16:30
所有地址仍然还应当是物理地址.
存放链表的空间可以选择非分页内存或者是分页内存但一定要锁定.
兄弟们,给点分吧
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-04-23 11:28
松涛,不知你考虑过没有,即使申请一块非分页内存,其物理地址
也是不连续的,这样将其物理地址赋予9054dma 的descriper pionter register 会不会出问题?如果我用commonbuffer来存放分散集中列表,会不会更好? thinks!!
有了驱动,人才有了力量。
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-04-23 12:21
当然可以,物理不连续的也可以处理,反正是链表结构.
兄弟们,给点分吧
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-04-23 14:57
我之所以需要连续的物理空间,是因为我想使用数组结构,而不是
链表结构。
有了驱动,人才有了力量。
zhangyanping
驱动小牛
驱动小牛
  • 注册日期2003-02-23
  • 最后登录2004-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-04-23 15:08
fwzfwz1,你的二维最后一个变量是 next descriptor address,所以,你其实用的仍然是链表结构!

所以,你可以申请不连续的内存空间,只要启动DMA,这个链表就会自动找到不连续的块,看起来如同它们放在连续的空间一样。
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-04-23 20:52
虽然是一个链表结构,但是和一般的链表不一样。我用commombuffer
实现,不用考虑该链表的物理地址不连续。
有了驱动,人才有了力量。
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-04-24 14:21
松涛,我用ds编的9054的分散集中dma例程,用户程序一运行就死机。搞了两天了没头绪。本想发过去,让你看看,但是记得你没用过ds.可否将你用ddk做的发过来,一下参考。先谢过了!
有了驱动,人才有了力量。
zhangyanping
驱动小牛
驱动小牛
  • 注册日期2003-02-23
  • 最后登录2004-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-04-24 15:55
fwzfwz1,我也是有过这种情况,看一下,你是不是在开始DMA之前进行清中断了,还有局部地址是不是正确,以及描述符指针地址是不是正确!
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-04-24 21:33
其实本站上的PLXsdk3.3pro版本里的驱动源代码非常完善,下载下来仔细研究一下就行,我写的9054的代码有些都是拿来小改一下就ok的.他们的代码结构非常清楚,可读性比自己从头写的强多了.
兄弟们,给点分吧
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-04-25 09:38
谢谢提醒!!!
有了驱动,人才有了力量。
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2003-04-25 09:43
zhangyanping,我是参考windriver里的那一段关于分散集中的例子
实现的。可能还有些细节没搞清楚!think you!!
有了驱动,人才有了力量。
游客

返回顶部