完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好。我现在正在进行一个项目,其中在一些情况下,我需要把数据块从一个RAM区域转移到另一个RAM区域。为了加快进程,我尝试使用DMA传输,因为代码需要尽可能快地运行。我的问题是,当访问传输目的地的数据时,传输似乎有问题。更具体地说,我传输VRAM数据(用于游戏模拟器),然后渲染,发送到帧缓冲区,然后传输到屏幕。当显示当前帧时,似乎我通过DMA传输的部分数据要么是零,要么是腐败的。如果在for循环中手动传输数据,则不会发生这种情况。也许我配置DMA控制器不正确或某些事情,但是我已经阅读了数据表,看起来还可以。我已经实现了等待状态,直到DMA传输完成,甚至延迟100毫秒,以确保DMA传输完成(不在下面的代码中),但结果是相同的。DMA在我代码的其他地方也正常工作,但是后来我用手动传输代替它,以避免出现任何问题。我使用的设备是PIC32MZ2048EFH100,相关代码如下。DMA传输函数:当这里被调用时会出现问题:
|
|
相关推荐
4个回答
|
|
这可能是由高速缓存引起的。在DMA访问的任何数据缓冲器上,使用y-AtAtditTyx((相干))。
|
|
|
|
你应该读这个:HTTP:/WW1.MICCHIP.COM/DeLoSs/En/AppNoSe/90001600 C.PDF.你想要什么样的速度?
|
|
|
|
您可以使用BuffiTeNoSuxTiNuxMIPSyCache(int opcode,Valu*ADDR)来刷新(以确保源内存是最新的)或无效(以确保目的地被重新加载);在源代码和目的地内存中,每16字节(1高速缓存行)必须调用该指令一次。OP代码在MIPS指令集手册中。谷歌“MIPS®架构的程序员II-卷:MIPS32®指令集手册”。搜索缓存指令的PDF。有趣的运算代码是:-0B100-命中无效-缓存Cache 0B101-命中写回无效-写缓存行到RAM如果脏和无效的0B110 -击中写回-写高速缓存行到RAM如果脏,你必须测试它是WOR。这是使用连贯性的麻烦。
|
|
|
|
谢谢大家的回复。当我有机会的时候,我会玩一下缓存刷新程序,试着找出我应该选择哪个选项。
|
|
|
|
只有小组成员才能发言,加入小组>>
5362 浏览 9 评论
2093 浏览 8 评论
1992 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3274 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2305 浏览 5 评论
870浏览 1评论
757浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
699浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
750浏览 0评论
644浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-24 10:58 , Processed in 1.028361 second(s), Total 51, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191