TMS320F28388D: CPU能够对同一地址进行读写

Part Number: TMS320F28388D
Other Parts Discussed in Thread: C2000WARE

您好!
      我在考虑定义一个数组用来存放数据,我希望CPU1与CPU2都能够去读写这个数组,我的想法是否可行,我看了memcfg_ex1_arm_management的例程只有将ARMGS分配给CPU1或CPU2,能否它俩都分配通一个地址?
      如果有的相关例程,请提供给我,谢谢!

  • 您好,

    您可以看看下面的资源是不是您想要的,请查看 C2000Ware SDK 文件夹中路径为 C2000Ware_5_02_00_00\driverlib\f2838x\examples\c28x_dual\memcfg 的 RAM 管理示例。该示例解释了如何为 CPU2 和 CPU1 内核分配共享 RAM。

  • 您好,
         感谢您的答复,这个例程我看过,在这个例程中,ARMGS0被配置为了让CPU2读写,我做过测试,CPU1只能读取;而ARMGS1只能被CPU1读写,CPU2只能读取它,我想配置的代码为:

        //
        // Give memory access to GS0 and GS14 RAM to CPU2
        //
        MemCfg_setGSRAMControllerSel((MEMCFG_SECT_GS0 | MEMCFG_SECT_GS14),
                                 MEMCFG_GSRAMCONTROLLER_CPU2);
    
        //
        // Give memory access to GS1 and GS15 RAM to CPU1
        //
        MemCfg_setGSRAMControllerSel((MEMCFG_SECT_GS1 | MEMCFG_SECT_GS15),
                                 MEMCFG_GSRAMCONTROLLER_CPU1);


    其中数组的定义为:
    uint16_t cpu1RArray[256]; // Mapped to GS0 of shared RAM owned by CPU2
    uint16_t cpu1RWArray[256]; // Mapped to GS1 of shared RAM owned by CPU1
    #pragma DATA_SECTION(cpu1RArray,"SHARERAMGS0");
    #pragma DATA_SECTION(cpu1RWArray,"SHARERAMGS1");


    我想要知道,能否定义一个CPU1与CPU2均可读写的数组

  • 您好,

    我想您可以参考看看此链接,e2e.ti.com/.../5238710

  • 你好,
    这个连接介绍的是如何将ARMGS分配给不同的CPU,我想要知道能否能够共用ARMGS,这样可以将数组放在共用的ARMGS中,CPU1与CPU2均能够去读写这个数组

  • 您好,

    请确认程序中的两个变量在共享 RAM 中都被分配到相同的存储器地址。 下面的论坛将展示如何验证这一点

    e2e.ti.com/.../4044296

    如果分配到相同的存储器位置并对两个 CPU 具有 R/W 访问权限、则两个 CPU 都可以写入相同的数据。

    指导原则是、通常不建议也不建议使用 IPC 以便在 CPU 之间进行通信、拥有两个 CPU 可以在任何时候更改的相同数据可能会引发仲裁问题