DMA使用注意事项-创新互联
1、DMA造成脏数据在使用DMA进行数据搬运时,当需要中途停止DMA的传输,需要先停止控制器的dma请求,再强制关闭DMA,最后再释放内存,否则有可能造成DMA搬运数据到释放过的内存中。
2、省电对DMA的影响
在使用DMA将数据从ram搬运到fifo后,释放省电锁之前,需要特别注意,不能仅仅依赖于DMA的完成中断,DMA的完成中断只表示DMA已经将所有数据都搬运进外设的fifo,不代码外设已经完成fifo中数据的传输。
必须添加FIFO是否有数据的判断,否则进省电后会导致fifo中未传输完成的数据丢失。
3、Cache对DMA的影响
在mem-->dev传输之前,需要先clean cache,保证cache中的数据到真正的RAM中后,再启动DMA;
在dev-->mem传输之后,需要invalid cache,保证每次读数据会重新从RAM中去取数据。(注意:A9处理器,invalidate操作仅会无效掉当前cache line,不会有其他操作;A53处理器,32位或者64位模式下,invalidate的cacheline如果是dirty的,cache在进行invalidate前会自动增加clean操作。)
DMA使用需要考虑cache一致性,而在cache一致性操作时,有可能将别人的空间误踩,所以在申请DMA空间时,需要注意地址和大小要进行cache line对齐。
4、MMU对DMA的影响
MMU完成虚拟地址和物理地址的映射,虚拟地址对CPU可见,对DMA不可见;物理地址对CPU不可见,对DMA可见。
1、配置DMA传输地址时,需要注意将物理地址转换为虚拟地址;
Linux上kmalloc出来的地址物理连续,地址转换后可给DMA使用,vmalloc出来的地址物理不连续,即使转换也不能给DMA使用。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站栏目:DMA使用注意事项-创新互联
文章位置:http://myzitong.com/article/joepj.html