[X]关闭

有关《CH03_AXI_DMA_OV5640摄像头采集系统》中DMA传输路径的疑惑

文档创建者:白猫警督
浏览次数:6141
最后更新:2018-09-12
 
图1 是  “CH03_AXI_DMA_OV5640摄像头采集系统” 例程对应的pdf教程的截图,我对图中画黄线的话有些困惑。
图2 是为了清楚描述我的疑惑,对图1进行了简化。

DMA传输包括两条路径:视频源->DDR 和 DDR -> 显示设备
我的理解是这样的:
1) 对于 视频源-> DDR 路径
    图像数据通过 OV_Sensor_ML、Video in to Axi-Stream 这两个模块,数据被写进 AXI_DMA 的 fifo中。fifo的宽度为8bit,深度从2^14~2^23。当写完一帧图像数据,同时产生tlast使能信号,这个tlast触发了s2mm_introut中断,ARM响应中断,启动一次简单的DMA传输,ARM通过AXI_LITE配置相关寄存器,随即 AXI DMA 把fifo中的数据搬到DDR中。本次传输结束。
2)对于DDR -> 显示设备路径
ARM是怎么判断一个合适的时机启动一次DMA传输呢?
mm2s_introut触发的条件是完成一次DDR->AXI DMA 的传输。这是不是会造成这样的后果:刚刚把一个BUFFER的数据搬走,中断触发了,启动一次新的DMA传输,而此时DDR中的新数据都已经取走了,结果把旧数据搬走了,并且死在这里了?

3)AXI DMA 中的fifo 是 有两个吗? 两个方向的DMA传输分别对应一个fifo?



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

发表评论已发布 8

uisrc

发表于 2018-8-31 22:46:47 来自手机 | 显示全部楼层

你的分析是有道理的,因为我是手机回复没有看代码,你可以看下,dma发送中断的信号是否是,人为用程序控制的,如果是那么就能解决你的疑惑。

白猫警督

发表于 2018-9-7 18:37:27 | 显示全部楼层

admin 发表于 2018-8-31 22:46
你的分析是有道理的,因为我是手机回复没有看代码,你可以看下,dma发送中断的信号是否是,人为用程序控制 ...

如果使用AXI-DMA软核,PS的控制指令穿过指令层,延时有些大。不打算使用AXI_DMA核了。正在开发AXI-Datamover。

白猫警督

发表于 2018-9-7 18:37:28 | 显示全部楼层

admin 发表于 2018-8-31 22:46
你的分析是有道理的,因为我是手机回复没有看代码,你可以看下,dma发送中断的信号是否是,人为用程序控制 ...

如果使用AXI-DMA软核,PS的控制指令穿过指令层,延时有些大。不打算使用AXI_DMA核了。正在开发AXI-Datamover。

uisrc

发表于 2018-9-8 12:37:35 | 显示全部楼层

直接用AXI4总线读写DDR更好,下面搞个例子
越努力越幸运!加油!

白猫警督

发表于 2018-9-10 09:10:12 | 显示全部楼层

admin 发表于 2018-9-8 12:37
直接用AXI4总线读写DDR更好,下面搞个例子

@admin,“下面搞个例子”的意思是您准备搞一个AXI4总线读写DDR的例程吗?能否给我看看,学习一下。

白猫警督

发表于 2018-9-12 19:25:53 | 显示全部楼层

已初步完成axi_datamover调试,并对PS+DDR+PL最大回环速率进行了测试。
回环数据流向:PS发起请求,请求PL读取DDR数据->PL响应请求,取走数据->PL把取出来的数据写入DDR->写入完成后,产生中断->PS响应中断,在中断服务函数里,发起下一次请求。
测试数据帧大小:802816 Bytes
测试1:
MM2S
                                                                     S2MM
Memeory Map Width = 32                                    Memeory Map Width = 32
Stream Width = 32                                                Stream Width = 32
Maximum Burst Size = 16                                     Maximum Burst Size = 16
Throughput = 309 MB/s
测试2:
MM2S                                                                     S2MM

Memeory Map Width = 64                                    Memeory Map Width = 64
Stream Width = 64                                                Stream Width = 64
Maximum Burst Size = 16                                     Maximum Burst Size = 16
Throughput = 610 MB/s

测试2:
MM2S                                                                     S2MM

Memeory Map Width = 64                                    Memeory Map Width = 64
Stream Width = 64                                                Stream Width = 64
Maximum Burst Size = 128                                    Maximum Burst Size = 128
Throughput = 797 MB/s

uisrc

发表于 2018-9-12 21:10:16 | 显示全部楼层

求代码,求笔记
越努力越幸运!加油!

uisrc

发表于 2018-9-12 21:10:19 | 显示全部楼层

求代码,求笔记
越努力越幸运!加油!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则