例如我在cpu1的工程里有一个变量,并把它声明为全局变量,但是在cpu2里怎么才能用这个变量呢,手册上说把cpu1的变量分配到共享内存里,cpu2就只能读取,不能写了,但是我需要在cpu2 的工程里,怎么用这个变量呢,直接把变量名字写出来就可以用吗?
Charles Ji:
回复 Hank Zhao:
请问,在cpu2中定义了一个中间变量怎么能读取到cpu1的变量呢,以前没接触过双核,不知道共享内存怎么用 ,也不关注变量在RAM中的状态,以前都是用单核MCU,一个变量声明称全局变量,就不管了,现在应该怎么弄呢,谢谢
例如我在cpu1的工程里有一个变量,并把它声明为全局变量,但是在cpu2里怎么才能用这个变量呢,手册上说把cpu1的变量分配到共享内存里,cpu2就只能读取,不能写了,但是我需要在cpu2 的工程里,怎么用这个变量呢,直接把变量名字写出来就可以用吗?
Hank Zhao:
回复 Charles Ji:
你可以将共享内存中的变量赋值给定义的中间变量,这样就读取了CPU1的变量。这个中间变量放在CPU2TOCPU1RAM共享内存的话,在CPU1中就也可以读取CPU2中定义的这个中间变量。
例如我在cpu1的工程里有一个变量,并把它声明为全局变量,但是在cpu2里怎么才能用这个变量呢,手册上说把cpu1的变量分配到共享内存里,cpu2就只能读取,不能写了,但是我需要在cpu2 的工程里,怎么用这个变量呢,直接把变量名字写出来就可以用吗?
Charles Ji:
回复 Hank Zhao:
Hank:
您好!有两个问题请教
1.您说的这个CPU2TOCPU1RAM 和 GSxRAM不是一个是吧。GSxRAM需要分配给某一个cpu。CPU2TOCPU1RAM不 一样吧。存在共享内存中是存在GSxRAM吗?
2.假如我在cpu1的程序中定义了一个变量int a =1; ,将他放在共享内存GSxRAM或CPU2TOCPU1RAM中,在cpu2 的程序里怎么能使用呢,直接用if(a == 1){}行吗,会直接报找不到变量吗?这些细节不太明白
例如我在cpu1的工程里有一个变量,并把它声明为全局变量,但是在cpu2里怎么才能用这个变量呢,手册上说把cpu1的变量分配到共享内存里,cpu2就只能读取,不能写了,但是我需要在cpu2 的工程里,怎么用这个变量呢,直接把变量名字写出来就可以用吗?
Hank Zhao:
回复 Charles Ji:
1,CPU2TOCPU1RAM是IPC message ram,GSRAM是共享内存,都可以传递数据。2,共享内存和IPC的例程你可以参考controlsuite中的RAM_management和cpu01_to_cpu02_ipcdrivers例程。