阅读:2162回复:3
关于自主分配连续地址空间进行dma问题。
现有一块9080 pci卡可进行dma.但速率较低,驱动是用2000ddk做的。在分配dma分页寄存器时,ADDRESS_AND_SIZE_TO_SPAN_PAGES函数仅返回2,也就是说一次dma只有2*page_size=8k大小.我认为这是效率较低的问题所在,所以想放弃该函数,而用MmAllocateContiguousMemory自己分配连续地址空间,大约想分配64k,不知这么做可否成功?或dma效率低还会由什么原因造成。谢谢了!
|
|
|
沙发#
发布于:2001-08-23 19:04
可能不太行,由于进行DMA操作时,其DMA所对应的地址空间的有一定的范围,是已指定的,所以一般分配是通过AllocateCommonBuffer来进行的。
|
|
|
板凳#
发布于:2001-08-24 11:55
AllocateCommonBuffer大约可以分多大?这样是不是比直接用系统分配要提高不少效率?虽说多用了资源。系统分配的分页寄存器为2是不是也是正常的?因为如果不在MN_START_DEVICE中申请空间,则后来再分配时,至多也只能分配一两页的连续空间?谢谢!
|
|
|
地板#
发布于:2001-09-29 21:39
我也遇到速率低的问题,用逻辑分析仪分析时序发现,每个数据块(块很小,如128 BYTE)的传输分了很多次,且每次之间间隔了较长时间,我想可能是控制9080内部FIFO的寄存器没写对,但不知是哪个寄存器用来控制FIFO的写入和读出?
|
|