20楼#
发布于:2002-10-31 17:27
我的意思就是用KeSynchronizeExecution()函数把rps作成中断同步例程!在DDK帮助里面看看这个函数!因为我当初也是你那样写的,就是有错!后来这样改了,就好了! :D :cool: :cool:
|
|
21楼#
发布于:2002-10-31 17:37
通过设备对象可以拿到中断对象吗? 设备扩展中应该保留中断对象的指针 |
|
|
22楼#
发布于:2002-10-31 17:38
我的意思就是用KeSynchronizeExecution()函数把rps作成中断同步例程!在DDK帮助里面看看这个函数!因为我当初也是你那样写的,就是有错!后来这样改了,就好了! :D :cool: :cool: 有道理,应该这样,否则rps可以被中断似乎会出问题 |
|
|
23楼#
发布于:2002-10-31 18:59
非常感谢热心的各位,我会试试看 :)
不过有一点要指出的是,这里的rps是不会被中断的,因为rps是被7146读入芯片内,由7146执行的risc指令,是属于7146的指令,指令是由7146控制的dma从内存中读入,一旦读入运行后,脱离计算机的,我也就是看重这一点才采用rps来控制debi数据的读取的 :) |
|
24楼#
发布于:2002-10-31 19:02
还有,对这个两页面现象有没有一个可能的解释呢,不然,我×不瞑目 :( :( :mad: :mad:不管可能性有多大
|
|
25楼#
发布于:2002-11-01 08:42
只要你在低于DIRQL上对硬件操作,就会被ISR例程打断!实际上只要你的driver里面有ISR,你用softice一看就知道,ISR是不停的被调用!(而不管是不是你的板卡来了中断!)在rps运行期间被isr打断,就有可能出现你这样的错误!
|
|
26楼#
发布于:2002-11-01 11:52
感觉与BT878传输方式的差不多。
我做的与你有一点不一样: 就是在DMA传输之前,把中断事件传入到DRIVER中。 |
|
|
27楼#
发布于:2002-11-01 12:01
感觉与BT878传输方式的差不多。 是把数据保存好后再启动下一次dma吗,这样做我这里也可以,可是我的dpc总是延迟太大,而我的数据源很容易溢出:(所以我想用rps脱离cpu启动dma,保证两次dma间的延迟最小 |
|
28楼#
发布于:2002-11-05 09:12
郁闷 :(
是7146的mmu出的问题,scatter/gather没控制好,有没有人遇到过7146的这个问题,唉 :( :( 不过不用mmu就可以了,问题算是绕过去了,不爽啊。 不过还是多谢大家参与 :) |
|
29楼#
发布于:2002-11-05 09:31
关于两个页面的数据错误:
因为后面的数据是正确的,所以可能是你捕捉数据的指令开始位置出错。 mmu的功能用来做什么啊! |
|
30楼#
发布于:2002-11-05 10:04
关于两个页面的数据错误: 哥们休假归来了?: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 若说开始位置写成其他页面了,那它有没有理由两个页面后还能回来。唉,虽然绕过了,可还是于心不甘 :( |
|
上一页
下一页