我得5933作为主控设备,由板卡设置5933,发起传输,dma传输,我得问题是在设置目标地址时如何确定?因为我不可能随便设置一个值的,否则驱动程序或应用程序怎么知道到那去取数啊?困扰了我很久了,在版上问了很多边也没人讲清楚!!!
回复(10) 2002-11-29 09:30 来自版块 - 板卡设计
表情
mengzi对不起,我未认真看问题。你的那种应用最好应用在嵌入式,由卡上的cpu启动DMA,因为在这种情况下,你可以写入存储器的任意的物理地址,只要你能确保这个地址不会破坏数据即可,而且这个物理地址是很直接的,但在Windows下存储管理采用的是虚拟内存机制,要想显式获得一块安全的地址连续的...(2003-02-12 19:13)
mengzi根据驱动模型,首先是在用户程序分配一块缓冲区,然后通过DeviceIoControl()将缓冲区的指针(虚拟地址)传递进内核,这一步必须是IRP排队的,然后再通过一个什么函数,锁定该用户缓冲区并将虚拟地址映射为CPU核心虚拟地址,然后再通过一个映射函数,获取第一个连续的缓冲区地址...(2003-02-12 18:48)
ming_ming_s我没做过由外部cpu设置目标地址的DMA控制方式,不过我觉得应该有两种解决的办法: 1、由于在驱动中申请的缓冲区地址只有主机CPU才知道,所以,如果目标地址必须由外CPU来写(DMA外加接口启动方式),那么只有在DMA初始化时通过两个CPU之间的通信来使外CPU获取该目标地址,...(2003-02-11 10:11)
kxgchina竟然没人指导!!!5555,太惨了!!(2002-12-04 11:14)
lifeship5933 我不太熟悉,但感觉上是有区城望5933的某个存储dma目标地址的寄存器写入目标地址,当然,这里的目标地址是由驱程分配的一块共享内存地址,(2002-12-03 19:53)
kxgchina你终于来了,呵呵 我得5933作为主控设备,由板卡设置5933,发起传输,使用dma传输,(s5933作为主控设备是不是有两种发起方式嘛!一个是pci局部总线启动5933,也就是设置目标地址,和数据量的值;另一个是所谓的外接口启动,就是由板卡上的cpu设置目标地址和数据量值)我...(2002-12-02 15:23)
Dragon2008龙兄来吧!!! 帮忙啊!!!救命啊!!!!! 我对你的问题的描述还不是太清楚,能否再详细点。 (2002-12-02 13:15)
kxgchina龙兄来吧!!! 帮忙啊!!!救命啊!!!!!(2002-11-30 11:29)
kxgchina楼上的大哥,你说的不对吧!我没有申请内存空间的话,那怎么传输数据给pc机啊?(2002-11-29 18:17)
stroll系统会根据你的配置信息分配给你一个基地址。用这个作为目标地址就可以了。(2002-11-29 13:55)

返回顶部