This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

F28377D的双核共享问题

Other Parts Discussed in Thread: CONTROLSUITE

例如我在cpu1的工程里有一个变量,并把它声明为全局变量,但是在cpu2里怎么才能用这个变量呢,手册上说把cpu1的变量分配到共享内存里,cpu2就只能读取,不能写了,但是我需要在cpu2 的工程里,怎么用这个变量呢,直接把变量名字写出来就可以用吗?

  • 你可以在CPU2再加一个中间变量,将从CPU1读到的变量值赋给这个中间变量,可以在CPU2中修改中间变量的值,修改过之后再放回共享内存,将修改过之后的值赋给CPU1的变量。

  • 请问,在cpu2中定义了一个中间变量怎么能读取到cpu1的变量呢,以前没接触过双核,不知道共享内存怎么用 ,也不关注变量在RAM中的状态,以前都是用单核MCU,一个变量声明称全局变量,就不管了,现在应该怎么弄呢,谢谢

  • 你可以将共享内存中的变量赋值给定义的中间变量,这样就读取了CPU1的变量。这个中间变量放在CPU2TOCPU1RAM共享内存的话,在CPU1中就也可以读取CPU2中定义的这个中间变量。

  • Hank:

          您好!有两个问题请教

          1.您说的这个CPU2TOCPU1RAM 和 GSxRAM不是一个是吧。GSxRAM需要分配给某一个cpu。CPU2TOCPU1RAM不            一样吧。存在共享内存中是存在GSxRAM吗?

         2.假如我在cpu1的程序中定义了一个变量int a =1; ,将他放在共享内存GSxRAM或CPU2TOCPU1RAM中,在cpu2                 的程序里怎么能使用呢,直接用if(a == 1){}行吗,会直接报找不到变量吗?这些细节不太明白

  • 1,CPU2TOCPU1RAM是IPC message ram,GSRAM是共享内存,都可以传递数据。2,共享内存和IPC的例程你可以参考controlsuite中的RAM_management和cpu01_to_cpu02_ipcdrivers例程。