edriver
驱动小牛
驱动小牛
  • 注册日期2002-03-04
  • 最后登录2006-09-15
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2002-10-31 17:27
我的意思就是用KeSynchronizeExecution()函数把rps作成中断同步例程!在DDK帮助里面看看这个函数!因为我当初也是你那样写的,就是有错!后来这样改了,就好了! :D :cool: :cool:
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2002-10-31 17:37
通过设备对象可以拿到中断对象吗?

设备扩展中应该保留中断对象的指针
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2002-10-31 17:38
我的意思就是用KeSynchronizeExecution()函数把rps作成中断同步例程!在DDK帮助里面看看这个函数!因为我当初也是你那样写的,就是有错!后来这样改了,就好了! :D :cool: :cool:


有道理,应该这样,否则rps可以被中断似乎会出问题
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
gung
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2008-04-21
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
23楼#
发布于:2002-10-31 18:59
非常感谢热心的各位,我会试试看 :)
不过有一点要指出的是,这里的rps是不会被中断的,因为rps是被7146读入芯片内,由7146执行的risc指令,是属于7146的指令,指令是由7146控制的dma从内存中读入,一旦读入运行后,脱离计算机的,我也就是看重这一点才采用rps来控制debi数据的读取的 :)
gung
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2008-04-21
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
24楼#
发布于:2002-10-31 19:02
还有,对这个两页面现象有没有一个可能的解释呢,不然,我×不瞑目 :( :( :mad: :mad:不管可能性有多大
edriver
驱动小牛
驱动小牛
  • 注册日期2002-03-04
  • 最后登录2006-09-15
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
25楼#
发布于:2002-11-01 08:42
只要你在低于DIRQL上对硬件操作,就会被ISR例程打断!实际上只要你的driver里面有ISR,你用softice一看就知道,ISR是不停的被调用!(而不管是不是你的板卡来了中断!)在rps运行期间被isr打断,就有可能出现你这样的错误!
Sunbeam
驱动小牛
驱动小牛
  • 注册日期2001-10-29
  • 最后登录2010-01-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
26楼#
发布于:2002-11-01 11:52
感觉与BT878传输方式的差不多。
我做的与你有一点不一样:
就是在DMA传输之前,把中断事件传入到DRIVER中。
堂堂正正做人,明明白白做事
gung
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2008-04-21
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
27楼#
发布于:2002-11-01 12:01
感觉与BT878传输方式的差不多。
我做的与你有一点不一样:
就是在DMA传输之前,把中断事件传入到DRIVER中。


是把数据保存好后再启动下一次dma吗,这样做我这里也可以,可是我的dpc总是延迟太大,而我的数据源很容易溢出:(所以我想用rps脱离cpu启动dma,保证两次dma间的延迟最小
gung
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2008-04-21
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
28楼#
发布于:2002-11-05 09:12
郁闷 :(
是7146的mmu出的问题,scatter/gather没控制好,有没有人遇到过7146的这个问题,唉 :( :(
不过不用mmu就可以了,问题算是绕过去了,不爽啊。
不过还是多谢大家参与 :)
mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
29楼#
发布于:2002-11-05 09:31
关于两个页面的数据错误:
         因为后面的数据是正确的,所以可能是你捕捉数据的指令开始位置出错。


mmu的功能用来做什么啊!
gung
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2008-04-21
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
30楼#
发布于:2002-11-05 10:04
关于两个页面的数据错误:
         因为后面的数据是正确的,所以可能是你捕捉数据的指令开始位置出错。


mmu的功能用来做什么啊!


哥们休假归来了?:D
项目作完了,老板该发奖金了吧,赫赫:D

mmu是memory manage unit,就是管理分页内存的dma传输的,就是给它个页地址索引表,它就可以管理dma传输地址,使驱动感觉就是个连续地址一样。
郁闷的是,我的缓冲区全是固定的,事先申请好后直到关机都不会变的,页地址索引表的内容也从来不会变的,真不知什么原因。
若说开始位置出错,如果说开始位置写成了两页面后的位置,那么错误就是
a b c d e f --> a b x x c d
而不是我看到的
a b c d e f --> a b x x e f
若说开始位置写成其他页面了,那它有没有理由两个页面后还能回来。唉,虽然绕过了,可还是于心不甘 :(
上一页 下一页
游客

返回顶部