Other Parts Discussed in Thread: C2000WARE
器件型号: TMS320F28377D
主题: C2000WARE 中讨论的其他器件
您好的团队、
有 2 个芯片通过 EMIF1 与 28377 板连接、我想使用 CPU1 和 CPU2 单独写入。 因此、EMIF1 的主器件必须在两个 CPU 之间传输。 我的问题是、如何以安全的方式转移主设备? 我指出、如果 CPU2 保持了 EMIF1 的主器件、则会忽略 CPU1 的写入操作。
我在 C2000Ware_5_05_00_00\driverlib\f2837xd\examples\dual\emif 中找到了双核写入 EMIF1 示例。 但我认为这不是一种安全的方法。
// in cpu1's main.c
while(HWREGH(EMIF1CONFIG_BASE + MEMCFG_O_EMIF1MSEL) !=
EMIF_MASTER_CPU1_G)
{
EMIF_selectMaster(EMIF1CONFIG_BASE, EMIF_MASTER_CPU1_G);
}
// what if CPU2 grab the master when CPU1 running in this function??
errCountLocal = readWriteMemCPU1(ASRAM_CS2_START_ADDR_CPU1,
ASRAM_CS2_SIZE);
errCountGlobalCPU1 = errCountGlobalCPU1 + errCountLocal;
// in cpu2's main.c
while(HWREGH(EMIF1CONFIG_BASE + MEMCFG_O_EMIF1MSEL) !=
EMIF_MASTER_CPU2_G)
{
EMIF_selectMaster(EMIF1CONFIG_BASE, EMIF_MASTER_CPU2_G);
}
每个 CPU 都会执行一个 while 循环来检查它是否成功获取主器件。 如果 CPU1 首次抓取主器件、则 CPU2 仍可以在 CPU1 执行写入操作时抓取主器件。 我是否理解正确、以及如何安全地在 CPU1 和 CPU2 之间传输主器件?