1、程序中多个核(core0、core1、core2)需要对同一个全局变量 T 操作,因此我将全局变量放在共享内存MSMC中
在cmd文件中 .data:load >> MSMCSRAM 。
#pragma DATA_SECTION ( T,".data" );
查看地址,确实在0X0C000000开始的共享内存中。
于是,我先用core0对T进行读写操作,然后用IPC触发core1,core1能正确读出core0修改后的T,然后用core1对T进行读写操作,然后用IPC触发core2,core2却不能读出core1修改后的T,读出来的仍旧是core0修改后的T。
请问这是什么原因,对共享内存的操作有什么特别的要求吗?
2、如果不用#pragma将T定义到共享内存中,T将默认存放在 以 0x0080000地址开始的空间中,查看memory map,这段地址是 Local L2 SRAM,请问这个L2存放在什么地方,有人说是core0的L2,但是我看core0的L2有专门的地址(0x10800000)。如果不是的话,这个local L2是什么呢,位置在哪,能不能被多核共享呢?
两个问题,比较急,谢谢!