阅读:1826回复:9
Windriver写PCI9054的主模式DMA驱动的问题!
数据来源是FIFO,PCI9054作进行主模式DMA,但是看了PLX提供的Visual C++原码却始终不明白对于外部数据源使用FIFO情况下,DMA Channel 0 Local Address Register该写进去什么啊?
进行DMA操作时的Local Memory 是指的什么啊?(对于外部用FIFO) 万分感谢! |
|
沙发#
发布于:2003-01-16 13:00
不管是什么外设,总归是要有个地址的吧.
|
|
|
板凳#
发布于:2003-01-16 16:16
用的是同步FIFO啊,FIFO没有地址线啊,请教斑竹怎么解决啊??
那么local memory的address信息怎么知道啊???? 多谢了! |
|
地板#
发布于:2003-01-19 11:43
FIFO没有地址,但你可以人为的定一个啊,
比如将某些地址线接成你FIFO的片选来实现! |
|
地下室#
发布于:2003-01-20 20:52
FIFO好像没有片选信号啊!
在管脚上没有查到片选信号! 请支招! |
|
5楼#
发布于:2003-01-20 21:29
你可以试着找到FIFO的允许信号,用LA的高位地址线通过组合逻辑电路来产生一个“地址”信号(相当于片选信号)去控制你的FIFO上的允许信号,而低位地址线可以不接,这样只有在你设定的地址范围内才会选中FIFO进行操作,这不就等于是‘片选’信号了吗?
|
|
6楼#
发布于:2003-01-22 20:27
同步FIFO的读时钟,写时钟,读使能,写使能,输出使能
而使能信号不就可以看作片选了吗? |
|
7楼#
发布于:2003-01-22 21:40
是啊,这的确可以作为片选信号,我也是这样做的。
我现在疑惑的是在写DMA的Windriver程序时,它提供的DMA函数需要一个local bus 地址,也就是本地端存储地址,从哪儿读取数据。 我用的是FIFO,所以我不知道该如何设置这个参数,即local memory 地址怎么写啊??难道写“FFFFFFFF”吗? 请大家支着!谢谢! |
|
8楼#
发布于:2003-01-22 21:44
Windriver具体用到的函数是:
BOOL P9054_DMAReadWriteBlock (P9054_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf, DWORD dwBytes, BOOL fIsRead, P9054_MODE mode, P9054_DMA_CHANNEL dmaChannel) 有疑惑的就是dwLocalAddr这个参数怎么设置,不设置我也没有办法发起DMA操作啊? 谢谢了! |
|
9楼#
发布于:2003-03-09 20:58
随便写个什么值,还可以把DMA寄存器设为固定地址,只要控制好fifo的片选就行。
|
|