阅读:1329回复:9
PCI9054如何从local processor 进行与host 的DMA?
我看了DS自带的DMA例子,知道了一点从host发起的block DMA过程,
用KDmaTransfer定义Ready的回调函数(不知道什么时候会调用,反正第一次和最后一次一定会调用的), 初始时可以写入 PCI first address,local first address, size ,再启动就可以, 然后等待中断,中断DPC执行 KDmaTransfer->continue (不是只有全部传输结束了才会中断吗?哪为什么还要continue?) -------------------------------------------―――――――- 如果要从local发起(因为想让local processor 发一段数据给计算机),怎样直接进行block DMA呢?如何才能得到PCI first address呢?难道先发一个中断给Host,然后让Host发起? |
|
|
沙发#
发布于:2004-07-06 08:56
大哥,给个思路也行啊~~
----------------------------------------------------- 有分吗?当然有:) |
|
|
板凳#
发布于:2004-07-07 16:02
没人理我,回家了~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
地板#
发布于:2004-07-19 09:29
DATASHEET上说的很清楚,实际上如果用了9054的DMA控制器,那对LOCAL,计算机端不是已经对等了?!
|
|
|
地下室#
发布于:2004-07-24 11:03
我也想用local 直接发起dma传输,而pc负责把缓冲区的地址写到9054寄存器。我想问一下:如果local用cpld来写9054的寄存器来启动dma操作会麻烦吗,感觉要有很多控制线。
|
|
5楼#
发布于:2004-07-25 17:13
chylml,我后来就没有再试~~
你做了结果如何啊?? |
|
|
6楼#
发布于:2004-07-26 10:42
我没有试阿,因为我的中断频率较慢,所以是这个方法:local先发一个中断给Host,然后让Host发起
|
|
7楼#
发布于:2004-07-26 21:51
chylml,现在只能这样了,郁闷!~~~~~~~~~~~``
|
|
|
8楼#
发布于:2004-07-27 13:35
DMA传输长度、首地址、传输方向用计算机配置,DMA启动寄存器用Local Process配置。
|
|
9楼#
发布于:2004-07-27 22:50
____________________________---
DMA启动寄存器用Local Process配置 _________________________________ 就是读写不起来 |
|
|