驱动开发中的DMA是什么

这篇具有很好参考价值的文章主要介绍了驱动开发中的DMA是什么。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        DMA是一种无须CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制。 使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来, 从而大大提高系统的吞吐率。 DMA通常与硬件体系结构, 特别是外设的总线技术密切相关。

        DMA方式的数据传输由DMA控制器(DMAC) 控制, 在传输期间, CPU可以并发地执行其他任务。当DMA结束后, DMAC通过中断通知CPU数据传输已经结束, 然后由CPU执行相应的中断服务程序进行后处理。

DMA与Cache一致性

        Cache和DMA本身似乎是两个毫不相关的事物。 Cache被用作CPU针对内存的缓存, 利用程序的空间局部性和时间局部性原理, 达到较高的命中率, 从而避免CPU每次都必须要与相对慢速的内存交互数据来提高数据的访问速率。 DMA可以作为内存与外设之间传输数据的方式, 在这种传输方式之下, 数据并不需要经过CPU中转。

        假设DMA针对内存的目的地址与Cache缓存的对象没有重叠区域 , DMA和Cache之间将相安无事。 但是, 如果DMA的目的地址与Cache所缓存的内存地址访问有重叠, 经过DMA操作, 与Cache缓存对应的内存中的数据已经被修改, 而CPU本身并不知道, 它仍然认为Cache中的数据就是内存中的数据, 那在以后访问Cache映射的内存时, 它仍然使用陈旧的Cache数据。 这样就会发生Cache与内存之间数据“不一致性”的错误。文章来源地址https://www.toymoban.com/news/detail-854916.html

到了这里,关于驱动开发中的DMA是什么的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows无法读取驱动器中的光盘

    在网上搜索了很多方法来解决下图的问题,一直失败。浪费了很多时间。后来发现,网上的方案可能恰恰是相反的思路。所以,留下个笔记吧。 1.打开本地服务管理器。按键盘的”Win+R\\\"组合键 打开“运行”窗口。输入“Services.msc”,单击“ 确定”。 // 2.找到:“Shell Hardwar

    2024年02月07日
    浏览(71)
  • Windows 10驱动开发入门(五):创建虚拟显示器 Indirect Display驱动开发

    在开发或者办公中,越大的屏幕看起来就显示越舒服了,通常我们的做法是有两块屏幕,这样显示的内容就变多了,可以很容易提高办公的效率。 在设置中 显示 中,如果我们有两块屏幕,在显示器中自然的会出现两个,在其中可以对两块屏幕进行相应的设置。 在这个驱动中

    2023年04月16日
    浏览(42)
  • Windows 驱动开发 新手入门(四)

    本系列所有文章 Windows 驱动开发 新手入门(一) Windows 驱动开发 新手入门(二) Windows 驱动开发 新手入门(三) Windows 驱动开发 新手入门(四) 本篇文章介绍一下设备对象,这是写驱动过滤的基础,比如键盘,串口等等的过滤。 PDO 是 Phsical Device Object 的缩写,直译就是物

    2023年04月08日
    浏览(48)
  • windows驱动开发7:应用程序和驱动程序的通信

    一、基础介绍 1.1 设备与驱动的关系 设备由驱动去创建,访问一个设备,是首先得访问驱动。如果驱动在卸载的时候没有删除符号,r3下也是不能去访问设备的。 驱动程序和系统其他组件之间的交互是通过给设备发送或者接受发给设备的请求来交互的。换句话说,一个没有任

    2023年04月08日
    浏览(51)
  • 【驱动开发】Windows过滤平台(WFP,Windows Filtering Platform)

    正题开始之前,先总结一下Windows的发展历程。 Windows1.0、2.0、3.0、3.1、3.2:16位。 Windows9x:包括 Windows 95 、 Windows 98 、 Windows Me 。 WindowsNT系列:包括 Windows NT 3.1 、 Windows NT 3.1 、 Windows NT 4.0 、 Windows 2000 、 Windows XP 、 Windows Server 2003 、 Windows Vista 、 Windows Server 2008 、 Windows

    2024年02月08日
    浏览(40)
  • Linux DMA子系统(3):DMA设备驱动(consumer)

    目录 1. 前言 2. 重要的结构体 2.1 struct dma_slave_config 2.2 struct dma_async_tx_descriptor 3. 设备驱动使用DMA Engine的方法 3.1 分配一个DMA从通道 3.2 设置DMA通道的具体参数 3.3 获取描述符 3.4 提交传输并启动传输 3.5 等待传输完成 4. 参考文章 上文从DMA控制器驱动的角度去分析了DMA Engin

    2024年02月03日
    浏览(42)
  • windows驱动开发8:虚拟摄像头方案

    一、摄像头框架 在业务场景中,有许多是需要应用能够通过摄像头的方式来访问相关的音视频数据,比如美颜、摄像头多路复用、IP摄像头接入视频会议等。这些功能通过虚拟摄像头的方式来实现,是一个比较通用的解决方案。那么如何及选用哪种技术方案来开发虚拟摄像头

    2024年02月02日
    浏览(43)
  • 什么是BDD测试(行为驱动开发测试)?

    BDD (Behavior Driven Development) 测 试 ,即  行为驱动开发测试 , 是一种基于用户行为和需求的软件测试方法。 通过将测试用例编写为自然语言脚本,BDD测试可以促进业务需求、开发和测试团队之间的沟通和协作,从而提高代码的可读性、可维护性和可重复性。 BDD测试的优点

    2024年03月27日
    浏览(42)
  • Linux DMA子系统(2):DMA控制器驱动(provider)

    目录 1. 前言 2. 重要的结构体 2.1 struct dma_device 2.2 struct dma_chan 2.3 struct virt_dma_chan 3. 重要的API 3.1 注册及注销API 3.2 cookie相关API 4. DMA控制器驱动的编写步骤 5. 参考文章 本文将从DMA控制器驱动(provider)的角度来介绍DMA Engine,包括重要的结构体和API接口。 DMA控制器驱动主要作用

    2023年04月09日
    浏览(39)
  • Windows 驱动程序签名教程(一) --- 开发测试篇

    1.使用微软WHQL签名 2.使用2013-2015年签发的驱动签名,已过期未吊销未拉黑(不知道什么时候打个补丁会修复). 1.使用微软WHQL签名 2.使用过期签名的sha1 sha256都可以正常跑 1.使用微软WHQL签名,SHA256的签名需要打补丁支持(KB3033929). 2.SHA1签名 1.Windows 10 可以直接 输入命令: 2.如果还不

    2024年02月15日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包