完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好:
本人使用的是6747芯片,CCS3.3工具,做了如下工作: 1、使用EDMA将EMIFA上接口的数据传输到SDRAM上(0xC0000000~0xC0001000); 2、传输完成后产生中断,在中断中处理接受到的数据。 3、在memory中读取数据,发现数据未更新,而将memory下面的 “L2 Cache" 等勾掉后,此时数据显示的是传输后的数据,应该是数据已经传到memory中,但是Cache中未更新; 4、欲使用memory中已经更新的数据,定义"volatile unsigned int * " 型指针指向上述memory(0xC0000000~0xC0001000)进行读取操作: unsigned int u4Data = (volatile unsigned int*)(0xC0000000); 碰到问题如下: 上述的u4Data读到的数据是EDMA传输更新前的数据,应该是Cache中的数据,而不是memory的值,即与"memory"中勾上“L2Cache”等是显示的数据一致。 不知我理解上有何误区,望乞指导。 |
|
相关推荐
2 个讨论
|
|
1. 你对现象的理解是正确的。
2. 但#4的方法对于问题的本身没有任何关系。加了volatile只是告知编译器要从memory取值,不要从寄存器取值,只与编译相关。与Cache本身没有关系,加了这条指令后,产生的汇编从绝对物理地址load数据,但Cache首先判断到这个地址已经在Cache里,会直接从Cache里将对应地址的值取出,除非这个地址不在Cache里,所以这里还是要做Cache invalid操作。 参考下面两编关于Cache的文档: www.ti.com/.../sprug82a www.ti.com/.../sprufk5a http://processors.wiki.ti.com/index.php/Main_Page Think Over Before Asking. http://www.catb.org/~esr/faqs/smart-questions.html#goal |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
404 浏览 0 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
930 浏览 1 评论
537 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
413 浏览 1 评论
969 浏览 0 评论
63浏览 3评论
CC3100BOOST使用CC3200lunchXL进行烧录
912浏览 2评论
156浏览 2评论
198浏览 2评论
176浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-29 20:18 , Processed in 0.769348 second(s), Total 46, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号