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.

[参考译文] F29H859TU-Q1:如何为 CPU1、CPU2、CPU3 定义共享变量

Guru**** 2815985 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1602939/f29h859tu-q1-how-to-define-a-share-variable-for-cpu1-cpu2-cpu3

器件型号: F29H859TU-Q1

您好的团队、

我向我的客户询问这个问题

我的客户希望定义一个供 CPU1、CPU2 和 CPU3 使用的共享全局变量、这意味着 CPU1/CPU2/CPU3 可以读取和写入此变量

根据我的理解、所有 CPU 都可以访问 RAM、尽管它具有不同的性能

image.png

我还注意到、对于某些 RAM、某些 CPU 没有程序总线

image.png

我写一个演示: led_ex2_blinky_cpu1_cpu2_cpu3_multi.zip 

演示在 LDA RAM 中定义变量

image.png

对于 CPU1 和 CPU2、变量具有相同的地址、似乎可以通过 CPU1/CPU2 进行读写

image.png

但对于 CPU3、它具有不同的地址

image.png

  1. 是否存在共享 RAM 可以通过 CPU1、CPU2、CPU3 读取和写入?
  2. 如果不是、我们是否有任何建议、说明客户如何实现他们的期望?

BRS

Shuqing

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    CPU3 项目中定义的共享变量是否也分配给与 CPU1/2 项目中相同的内存块?

    您也可以使用 c29clang 编译器 —  https://software-dl.ti.com/codegen/docs/c29clang/compiler_tools_user_guide/compiler_manual/c_cpp_language_implementation/attributes/variable_attributes.html#location 中的位置属性 

    <type> symbol __attribute__((location(address)));

    示例 — int xyz __attribute__(location (0x30000000))= 10;

    下面是访问权限及其相应的等待状态、对于共享变量、您只需要从 CPU 进行数据访问即可进行读取/写入。 程序访问是指 CPU 从这些存储器执行代码。

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Prarthan、

    感谢您的答复!

    我可以根据您的建议进行定义、CPU1/2/3 可以读取和写入

    Volatile int shared_var1 __attribute__((location (0x200E0844)))= 0;

    Volatile int shared_var2 __attribute__((location (0x200E083C)))= 0;

    Volatile int shared_var3 __attribute__((location (0x200E0840)))= 0;

    如果客户使用这种方式进行通信、是否有任何问题? 是否需要添加一些同步方案以避免访问违例?

    BRS

    Shuqing

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    为了确保读取和写入顺序正确、我们建议客户使用 IPC 模块跨内核通信。

    这应该没问题。

    谢谢