请教 VDMA三帧缓存, PS端直接对DDR地址写图,只有第一帧被显示
本帖最后由 ackyee 于 2022-12-10 13:47 编辑如题,不论PS 端 对 2 和3帧所在地址如何进行修改, 图像永远都显示第一个 缓存区的图片,有点纳闷
PS端可以让图像跳下一帧的吗?
初始化的时候也 设置了三帧缓存了
Xil_Out32((VDMA_BASEADDR + 0x030), 0x108B);// enable circular mode使能循环模式
Xil_Out32((VDMA_BASEADDR + 0x0AC), VIDEO_BASEADDR1); // start address
Xil_Out32((VDMA_BASEADDR + 0x0B0), VIDEO_BASEADDR0); // start address
Xil_Out32((VDMA_BASEADDR + 0x0B4), VIDEO_BASEADDR2); // start address
Xil_Out32((VDMA_BASEADDR + 0x0A8), (H_STRIDE*3)); // h offset (H_STRIDE* 3) bytes
Xil_Out32((VDMA_BASEADDR + 0x0A4), (H_ACTIVE*3)); // h size (H_ACTIVE * 3) bytes
Xil_Out32((VDMA_BASEADDR + 0x0A0), V_ACTIVE); // v size (V_ACTIVE)
/*****************从DDR读数据设置(MM2S)**********************/
Xil_Out32((VDMA_BASEADDR + 0x000), 0x8B); // enable circular mode
Xil_Out32((VDMA_BASEADDR + 0x05c), VIDEO_BASEADDR1); // start address
Xil_Out32((VDMA_BASEADDR + 0x060), VIDEO_BASEADDR0); // start address
Xil_Out32((VDMA_BASEADDR + 0x064), VIDEO_BASEADDR2); // start address
Xil_Out32((VDMA_BASEADDR + 0x058), (H_STRIDE*3)); // h offset (H_STRIDE * 3) bytes
Xil_Out32((VDMA_BASEADDR + 0x054), (H_ACTIVE*3)); // h size (H_ACTIVE * 3) bytes
Xil_Out32((VDMA_BASEADDR + 0x050),V_ACTIVE); // v size (V_ACTIVE) 你vdma要配置成3个buf,然后在中断里指向其它buf才行。它不会自动切换。 wye11083 发表于 2022-12-10 13:53
你vdma要配置成3个buf,然后在中断里指向其它buf才行。它不会自动切换。
(引用自2楼)
如果是 PL端直接读写的话就不需要 切换buf了对吧, VDMA 我已经配置成3个buf了
我刚百度了好久 都没找到指向buf 的命令,我再找找看。 我这种PS图像刷完直接切换的应该不需要 额外中断了,直接刷完 切换就好,60hz情况下屏幕的撕裂应该还好 ackyee 发表于 2022-12-10 14:00
如果是 PL端直接读写的话就不需要 切换buf了对吧, VDMA 我已经配置成3个buf了
我刚百度了好久 都没 ...
(引用自3楼)
必须要帧结束中断里切buf。vdma不支持自动增加,或者你找找有没有配置。另外注意vdma的帧序号好像是gray coding,不是0,1,2,0,1,2这种。 wye11083 发表于 2022-12-10 14:03
必须要帧结束中断里切buf。vdma不支持自动增加,或者你找找有没有配置。另外注意vdma的帧序号好像是gray...
(引用自4楼)
我刚刚查到你说的那种切换顺序 可以在VDMA 模块的 slave 那个选项里修改。 VDMA 的中断我查查怎么触发, 我好像 BLOCKDESIGN 里没有连接VDMA中断
ackyee 发表于 2022-12-10 14:14
我刚刚查到你说的那种切换顺序 可以在VDMA 模块的 slave 那个选项里修改。 VDMA 的中断我查查怎么触发 ...
(引用自5楼)
输出还好。输入得手搓bd配置把status搞出来。。 本帖最后由 ackyee 于 2022-12-10 16:49 编辑
wye11083 发表于 2022-12-10 14:27
输出还好。输入得手搓bd配置把status搞出来。。
(引用自6楼)
还有一个问题PS端朝DDR缓存区 写完整的 1080P 图片 需要3秒钟才能完成,这个速度正常吗用的for 循环 ackyee 发表于 2022-12-10 16:46
还有一个问题PS端朝DDR缓存区 写完整的 1080P 图片 需要3秒钟才能完成,这个速度正常吗用的for 循环 ...
(引用自7楼)
你用o2编译。。。
页:
[1]