版块
论坛
喜欢
话题
应用
搜索
登录
注册
wangjisheng的个人空间
访问量
0
新鲜事
帖子
资料
http://bbs3.driverdevelop.com/index.php?m=space&uid=39274
有关于DMA(50分)
我在用CY7C09449作DMA, m_Dma.Initialize(&dd, m_Lower.TopOfStack()); m_Buffer.Initialize(&m_Dma,2048); //获得DMA的公用缓冲区的物理地址和线性地址DmaBuf...
全文
回复
(
7
)
2003-08-24 21:46
来自版块 -
非USB硬件驱动开发
◆
◆
表情
告诉我的粉丝
提 交
zytzjx
:
CY7C09449这个你为什么要用DS做呢,你买这个芯片的时候,他提供一个DDK的驱动,自己只要改一下就可以用的,他是用例子的。改好的驱动可以给我看一下吗,我在学习用DS写驱动。
(2003-11-12 16:23)
回复
wangjisheng
:
问题似乎解决了,可以将获得的物理地址在转换成虚拟地址传给应用程序,就可以了,多谢大家,
(2003-08-28 18:52)
回复
xtli_21
:
可以这样用: 先根据获取的系统虚拟地址创建一个MDL 1.pMdl =IOAllocateMdl( DmaBufferLinAddress,..............); 2.MmBuildMdlForNonPagedPool( pMdl ); 3.pToUser = ...
(2003-08-28 16:30)
回复
wangjisheng
:
我将虚拟地址传到应用程序了,并且在驱动程序的中断中启动dma传输,然后通知应用程序将虚拟地址指向的地址中的数据存盘,得到的却和我传输的数据不一样,我还是觉得我不能直接对虚拟地址直接操作,有作过的吗?给我一个程序我看看,好吗?
(2003-08-25 14:47)
回复
AllenZh
:
也就是在特定的线程上下文中使用
(2003-08-25 12:15)
回复
AllenZh
:
我在用CY7C09449作DMA, m_Dma.Initialize(&dd, m_Lower.TopOfStack()); m_Buffer.Initialize(&m_Dma,2048); //获得DMA的公用缓冲区的物理地址和线性地址...
(2003-08-25 12:14)
回复
fwzfwz1
:
物理地址可以用;线性地址(虚拟地址)应该不能用,因为驱动中的内核虚拟地址和应用程序中的用户虚拟地址不在一个上下文中。
(2003-08-25 10:53)
回复
wangjisheng
加关注
写私信
0
关注
0
粉丝
112
帖子
返回顶部