完善资料让更多小伙伴认识你,还能领取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 的建议和帮助,新手上路不容易呀, |
|
|
|
只有小组成员才能发言,加入小组>>
400 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
261 浏览 1 评论
892 浏览 0 评论
TMS320F28377D:新做了以377d为芯片的板子,上电后芯片复位引脚出现方波请问如何解决?
2067 浏览 0 评论
TPS55340通电后输入端保险丝烧断,芯片输入和GND之间短路
3811 浏览 4 评论
CC3100BOOST使用CC3200lunchXL进行烧录
850浏览 2评论
88浏览 2评论
117浏览 2评论
99浏览 2评论
123浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-28 01:20 , Processed in 0.773825 second(s), Total 85, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191