0. 背景

Zynq FPGA的优势之一就是PS端与PL端基于高带宽的协同设计,以简化系统的硬件架构和提高系统的集成度和整体性能。例如:在某些硬件加速应用场合,PL端需要与DDR3存储芯片进行高速率的数据交互,且通常都采用DMA方式实现的。

PS端集成DMA控制器硬件单元CDMA,PL端有AXI DMA软核可以使用。整个数据交互通信链路的节点包含5个。

CPU <——>  Dcache  <——>  DDR3  <——>  XDMA <——>  Stream FIFO(PL)

在无操作系统的Zynq应用中,Dcache技术的应用的优点是提高CPU访问DDR3内存的速率;但会带来一个潜在的问题:cache数据发生更新时,不能马上同步更新到DDR中,反之亦然。例如:CPU拟通过Dcache间接读取DDR3内存起始地址为0x0010_0000,长度为0x100,共计256个数据;该起始地址处开始的256个数据已被PL端刚更新过,但是Dcache尚未通过PS程序进行同步更新,则CPU从当前Dcache拿到的数据就是未更新过的数据,从而造成数据交互错误。

1. 解决方法

常见的解决方法有两种:关闭cache或更新cache

方法一:直接关闭Dcache功能;即CPU直接与DDR内存数据交互,不需要Cache的介入;该方法的弊端为:降低CPU处理数据的性能;

故,该方法不建议。例如:某人在用水果刀削苹果吃的时候,不小心被割破手指了,此人觉得是水果刀的原因,就放弃使用水果刀,以后都直接啃苹果吃。工具或策略本身无对错,错在使用它们的人,如果用在合适的场景,则会事半功倍;反之,。。。。。。

方法二:程序中,调用函数,更新cache

Xil_DcacheFlushRange(Address, Length) 该函数功能:将Cache关联地址的数据写入到DDR中,并把Cache里的数据清空;

Xil_DcacheInvalidRange(Address, Length)该函数功能:将当前Cache制定地址和长度的缓存的数据无效,则CPU就直接从DDR3中对应地址处获取数据。

3. 参考博文

链接1:https://blog.csdn.net/weixin_38712697/article/details/99693531

链接2:https://blog.csdn.net/gxjfllwc/article/details/90741934?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-7.essearch_pc_relevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-7.essearch_pc_relevant

Zynq DMA与Dcache一致性调试相关推荐

  1. DMA及cache一致性的学习心得

    这里提到的DMA设备是非PCI设备 在framebuffer的prob函数中,用到了这样一个函数,下面分析下它的作用 /* *    s3c_fb_map_video_memory(): *   分配 ...

  2. DMA及cache一致性的学习心得 --dma_alloc_writecombine

    来源:http://xmxohy.blog.163.com/blog/static/53469584201082734630713/ 先理解cache的作用 CPU在访问内存时,首先判断所要访问的内容 ...

  3. zynq DMA 函数XAxiDma_SimpleTransfer的用法

    1 代码理解和使用 在使用zynq中DMA控制器的时候,会用到XAxiDma_SimpleTransfer这个函数.学习zynq中的例子程序,大概明白了这个函数的用法. 这个函数只能用在DMA控制器配 ...

  4. ZYNQ DMA Modelsim仿真与速度测试

    1.DMA配置与寄存器说明 DMA配置为Direct Register Mode (Simple DMA ),DMA分为两个方向:一是S2MM,即PL to PS:二上MM2S,即PS to PL.D ...

  5. ZYNQ linux dma驱动及其单向读写

    一,DMA相关定义和注意事项 DMA是Direct Memory Access 的缩写,也就是内存到内存,不通过 CPU.DMA 的可以支持内存到外设.外设到内存.内存到内存的数据交互,必要时节省径多 ...

  6. 关于ICache和DCache

    从不同地方总结摘录而来,附上原文链接原文:https://blog.csdn.net/qq_34888036/article/details/80872186 ICache和DCache是一种内存,虽 ...

  7. Zynq-7000 AMP运行模式下的软件切换及多版本固化运行

    Zynq平台AMP运行模式下的软件切换及多版本固化运行 1. Zynq双裸核AMP运行环境构建 1 1.1 Zynq架构概要 1 1.2 Zynq启动与配置 2 1.2.1 启动流程概述 3 1.2. ...

  8. ZYNQ Cache一致性问题和使用

    一,Cache原理 CPU和主存之间也存在多级高速缓存,一般分为3级,分别是L1, L2和L3.我们的代码都是由2部分组成:指令和数据.L1 Cache比较特殊,每个CPU会有2个L1 Cache.分 ...

  9. linux zynq ps dma,Zynq PS DMA控制器应用笔记

    Zynq-7000系列器件PS端的DMA控制器采用ARM的IP核DMA-330(PL-330)实现.有关DMA控制器的硬件细节及相关指令集.编程实例内容参考ARM官方文档: DDI0424D:dma3 ...

最新文章

  1. 2_vuex状态管理器
  2. 存储过程学习笔记(SQL数据库
  3. gin使用自定义结构绑定表单数据
  4. 为何采用双亲委派机制
  5. URL去重的几种方法
  6. LINUX --基本概念和操作
  7. python和rpa_什么是RPA
  8. E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用) E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-front
  9. 可视化webpart基础开发——TreeView控件读取文档库中的所有文件夹和文件(递归方法读取) ....
  10. Linux系统简介与准备
  11. CSP202009-2 风险人群筛查(100分)【序列处理】
  12. Windows Phone 地图定位 及导出GPX文件
  13. IDEA 中添加@author注释(live templates)
  14. three.js 实现露珠滴落动画
  15. 全球芯片短缺可能很快变成供过于求的危机
  16. A Benchmark and Simulator for UAV Tracking(论文翻译)
  17. 75道程序员面试逻辑思维题及答案解析
  18. 一份合格的软件需求规格说明书的要求
  19. 实践数据湖iceberg 第九课 合并小文件
  20. mxGraph实现鱼骨图(因果图)

热门文章

  1. qt语音类QTextToSpeech
  2. postman汉化教程(历史老版本)
  3. 北京车牌租赁中的不可不了解的法律问题,看了绝不后悔
  4. uni-app扫码添加声音
  5. [转] 史上最搞笑的成语谜语
  6. 3D MAX 常见小问题集合三
  7. MFC 对话框背景图片
  8. revit服务器地址修改,BIM软件小技巧:Revit软件中如何更改项目原点
  9. 永磁同步电机的矢量控制策略(六)一一一SPWM控制
  10. 查询哪个部门的平均工资比公司的平均工资高