给几个核的程序分别加上断点,当都停在断点的时候,在memory browser中,输入相同的地址,为什么各个核看到不同的值?
尝试使用CACHE_invL1d函数和CACHE_wbInvL1d函数,发现问题依旧,请问这是什么原因?哪位大侠知道?万分感激!
Hu pc:
譬如我在1核执行
*((volatile char *)(0x0C053E58u))=1;
在1核的memory browser中输入0x0C053E58u,看到它的值是1
在2核的memory browser中输入0x0C053E58u,却发现它的值并不是1。
这是怎么回事呢?
Hu pc:
回复 Hu pc:
难道这个问题,论坛上的众大神们都不会么?
恳请会的大神帮忙解答!谢谢!
Andy Yin1:
回复 Hu pc:
在memory browser中将L1D CACHE或者L2 CACHE的钩去掉看看,应该是cache一致性导致的,SL2默认是 cacheable区域。
leeen:
回复 Andy Yin1:
给1核下完程序,我用1核看起内存,查看地址0X00808CE8,按偏移地址计算,如果我用其他核看该地址应该为0X11808CE8,但是我发现两种情况下看到的值不一样。而且只有这个地址的值不一样。我检查map文件,这个地址存放的是$$ IO$,这是什么原因啊?
Andy Yin1:
回复 leeen:
你的cmd中这一块memory放的是什么?不建议跨核访问LL2,如果有需要建议使用SL2及DDR
leeen:
回复 Andy Yin1:
这段空间存放的是一个独立的在1核上运行的程序段,内容是trgmsg.obj(.text_writemsg),查看map文件,内容部一致的地址的内容为C$$ IO $$。自己核查看0X00008CF8的值是0C6E,如果用一核或是其他核看地址0X11008CF8就是3C6F。
我想做的是用0核独立运行,与PC机通信,把一个程序添加到1核的LL2里,让一核运行起来。请问andy我这个思路能实现吗?