完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
主要问题可以归纳为:
多核共享一个全局变量flag,flag存放在MSMC中。 core0同时发中断给core2、core3、core5,三个核对flag做更新。 cache一致性的问题已经考虑过应该没问题。 三个核同时操作同一变量也是通过信号量来实现的。 而且昨天程序的结果还是正确的。 今天对程序做了修改,程序就不行了,修改不涉及到上述内容(增加了些变量定义和初始化)。 以上为背景。 主要问题是:增加一个变量的定义后,结果就会有变化?不知道为什么会有这样的问题,一个变量的定义会造成这样的影响? 卡在这个地方了。。。 |
|
相关推荐
4个回答
|
|
已经解决,预取缓存的问题,还是属于cache一致性的问题吧。
|
|
|
|
bb qiuhua 你好, 请教你是怎样解决多核共享同一变量问题的?cache coherence 问题我也考虑了,但就是不对,于是我将flag所在空间noncacheable了,这样就不存在cache coherence 问题了,但是结果依然不对。能否参考一下你具体怎么做的?感激不敬 |
|
|
|
60user56 发表于 2018-6-21 16:00 huge q 你好, 我也是刚刚接触DSP,很多东西仅仅是刚入门。 我的共享变量是放在MSMC中,被L1D Cache。另外MSMC默认打开了预取功能。 所以我需要考虑L1D Cache和MSMC预取两个部分(L2Cache在我程序中不需要考虑),关键代码贴出,希望对你有帮助,仅供参考~ ① 读操作过程: CACHE_invL1d((void*)&fill_wait,64,CACHE_NOWAIT); //读之前invalidate,保证读到的数据是从MSMC中取得 CACHE_invL1dWait(); ② 写操作过程: CACHE_invL1d((void*)&fill_wait,64,CACHE_NOWAIT); //读之前invalidate,保证读到的数据是从MSMC中取得 CACHE_invL1dWait(); CSL_XMC_invalidatePrefetchBuffer(); //使预取缓存失效 fill_wait |= 0x2; //更新我的变量 CACHE_wbInvL1d((void*)&fill_wait,64,CACHE_NOWAIT); //回写并invalidate,将更新后的值及时写回MSMC CACHE_wbInvL1dWait(); 论坛中很多帖子都讲这个,搜索一下吧。 建议你单步调试下,先定位问题。 |
|
|
|
bf7560 发表于 2018-6-21 16:15 谢谢bb qiuhua 的建议和帮助,新手上路不容易呀, |
|
|
|
只有小组成员才能发言,加入小组>>
358 浏览 1 评论
551 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
797 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
667 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1142 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
95浏览 29评论
384浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
268浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
217浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
75浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-31 04:02 , Processed in 0.995903 second(s), Total 85, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号