完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 一只耳朵怪 于 2018-5-28 17:42 编辑
Hello, 目前DM8148 DSP开发进行算法优化。 我将DDR3的数据搬移到L2内存段内。 一开始用memcpy()函数,数据搬移没有问题,算法运算结果正确。 然后用自己编写EDMA3_copy()函数搬移数据,同时也没有使DDR 该段外存cache使能,方法如下: for(i=0;i<256;i++) [ MAR->MAREG = 0; ] 数据搬移没有任何问题。 但是当DDR 该段外存cache使能后,重新运行该段代码,运算结果就不正确。 DDR 该段外存cache使能方法如下: for(i=0;i<256;i++) [ MAR->MAREG = 1; ] 我尝试修改使该传输数据的原地址和目标地址都是0x80对齐后,DDR 该段外存cache使能,重新运行代码,运算结果正常。 根据EDMA3文档,EDMA3传送中没有对源地址,目标地址对齐有专门要求。 能否解释这种现象原因? 谢先, BRS, Meng |
|
相关推荐
6个回答
|
|
Meng,
EDMA是搬移到DDR的物理地址,但是如果这个DDR地址是被cache的,有可能cache里的数据在回写的时候会把DDR里的数据冲掉。 建议你看看DSP Cache user guide。下面是一片中文文档,比较容易理解: |
|
|
|
物是人非aaa 发表于 2018-5-28 08:14 cache 一致性。 应为你的开辟或者使用的这段空间没有做cache 对齐处理。参考kmem_cache分配内存的原理。这个函数分配的内存大小都是和cache的最大访问位宽的倍数。 studying & working! |
|
|
|
物是人非aaa 发表于 2018-5-28 08:14 Hello Chris, 非常感谢您的回复。 目前程序中,L2中没有使用与其相关的cache_wb(),cache_inv(),cache_wbInv()这些函数。 L2与L1之间的一致性是自动维护的。 BRS, Meng |
|
|
|
tinlyxian 发表于 2018-5-28 08:27 Hello, 谢谢您的回复。 但是EDMA3操作中,没有说明,edma数据搬移必须地址对齐。 如果地址必须对齐,我没有DDR cache 没有使能时,数据搬移应该也不成功。 目前只是,在DDR cache使能时,EDMA3 数据搬移不成功。 但是对齐cache line size时,数据搬移成功。 非常感谢! BRS, Meng |
|
|
|
tinlyxian 发表于 2018-5-28 08:27 Hello , another question: 能否给一些信息,我从那儿可以得到kmem_cache()的相关文档,对其深入了解。 BRS, Meng |
|
|
|
wiki或者百度上都有,忘记说了还有一个叫回写(write back)或者更新的机制。 studying & working! |
|
|
|
只有小组成员才能发言,加入小组>>
332 浏览 1 评论
528 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
772 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
649 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1124 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
52浏览 29评论
86浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
244浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
196浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
54浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 15:33 , Processed in 1.062257 second(s), Total 87, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号