社区
驱动开发/核心开发
帖子详情
基于WDF驱动开发的DMA传输问题
qq_40538908
2019-01-25 10:32:25
大家好,刚接触驱动开发,有两个问题想要请教各位
1.对于具有分散/聚集能力的设备,DMA传输时只需将用户缓冲内存地址写进DMA控制器,不用拷贝数据是吗?
2.WdfDmaTransactionExecute函数具体做了什么,数据是如何流向的?
查了好多资料,都没有细节描述,很是头疼,提前谢谢诸位了
...全文
361
回复
打赏
收藏
基于WDF驱动开发的DMA传输问题
大家好,刚接触驱动开发,有两个问题想要请教各位 1.对于具有分散/聚集能力的设备,DMA传输时只需将用户缓冲内存地址写进DMA控制器,不用拷贝数据是吗? 2.WdfDmaTransactionExecute函数具体做了什么,数据是如何流向的? 查了好多资料,都没有细节描述,很是头疼,提前谢谢诸位了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Windows平台USB
驱动
开发
入门必看
本文深入剖析Windows平台USB
驱动
开发
全流程,涵盖设备枚举机制、描述符动态协商原理、控制
传输
三次握手可靠性、批量
传输
异步优化实践、
WDF
框架避坑要点及INF/签名常见故障排查。强调协议时序精度、硬件响应时限、内存与
DMA
安全、端点状态同步等关键技术细节,指出90%所谓‘
驱动
问题
’实为配置或签名失误。
驱动
程序(4)
WDF
下
DMA
传输
的
驱动
程序代码详细说明之driver.c
本文将详细解析driver.c文件中关于
WDF
(Windows Driver Framework)下的
DMA
传输
驱动
程序代码,涵盖DriverEntry、PCIe_EvtDeviceAdd和Initialize
DMA
等关键回调例程。在DriverEntry中注册PCIe_EvtDeviceAdd例程,初始化设备和
驱动
对象。PCIe_EvtDeviceAdd用于设备枚举,设置同步模式,创建设备并配置MSI中断。由于
WDF
MSI中断
问题
,采用WDM重新实现MSI流程。Initialize
DMA
为
DMA
传输
准备,创建
DMA
Enabler、CommonBuffer和
DMA
Transaction对象,设置数据缓冲区对齐和地址。
WDF
驱动
开发
-
DMA
(一)
本文详细介绍了Kernel-Mode Driver Framework (KMDF)在Windows系统中对
DMA
设备的支持,包括总线主控
DMA
和系统模式
DMA
操作。阐述了
DMA
任务、
传输
的概念,以及
驱动
程序如何通过
DMA
事务对象和框架API实现I/O请求的处理。
WDF
DMA
一些概念(一)
本文介绍了在
WDF
框架下,如何确保
DMA
操作的缓存一致性,特别是在Intel Itanium系统中。Map寄存器用于系统地址和物理地址的转换,它们是共享资源,由框架动态分配和管理。当设备不支持 Scatter-Gather (S/G) 或
传输
超过设备寻址能力时,Map寄存器成为关键。在
驱动
程序的EvtProgram
Dma
回调中,框架提供的Map寄存器地址被用来编程
DMA
。当
DMA
传输
完成,框架通知标准Windows
DMA
实现层,确保缓存的一致性。
WDF
驱动
开发
-
DMA
(四)
本文深入探讨了系统模式
DMA
的工作原理,介绍了在KMDF版本1.11及更高版本中,如何在基于Windows8或更高版本的SoC上支持系统模式
DMA
。文章详细解释了创建系统模式
DMA
配置文件的过程,包括调用特定函数进行配置、提供可选回调函数、接收
传输
完成通知、取消
DMA
事务等。此外,还介绍了如何设置单一
传输
DMA
事务以及如何保留
DMA
资源。
驱动开发/核心开发
21,620
社区成员
21,709
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章