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.

[参考译文] TDA4VL-Q1:MCU1-0 和 MCU2_1/A72 内核通信

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1587607/tda4vl-q1-mcu1-0-and-mcu2_1-a72-core-communication

器件型号: TDA4VL-Q1

要在同一缓存行内共享存储器数据结构、需要执行以下步骤:  

typedef 结构
  INT A;
  int b;
  int c;
} test_t;


1. MCU 1_0 事件触发 ID 为 128 的硬件锁定后、首先执行 cacheInc 的操作、然后写入 a=1 或 2、然后执行 cacheWb 操作以释放 128 硬件锁定  
2.在 MCU2_1 周期中、通过 first caching Inc 获得 ID 为 128 的硬件锁、然后写入 b=0、再通过缓存 WB 释放 128 硬件锁  
3. a72 核循环访问仅限于 a.  
问题描述:
1. MCU1_0 写入 A=1  
2. MCU2_1 访问 A=1 确定  
3. a72 访问 A=1 确定  
4. MCU1_0 写入 A=2  
5. MCU2_1 访问 A=2 确定  
6. a72 访问 A=1 失败  
7. a72 继续访问 A=1 失败  
8. MCU2_1 访问 A=2 确定  
9. MCU2_1 访问 A=1 失败  
10. a72 访问 A=1 失败  
11. MCU2_1 访问 A=1 失败  
12、MCU1_0 访问 A 也失败 1

为什么会覆盖为历史数据 1?

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

    您好、

    该结构 test_t 存储在哪里?

    此致、

    Brijehs

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

    该数据结构的数据存储在 MCU1-0、MCU2_1 和 A72 的共享存储器中、物理地址为 0x98000000。 A72 已将此区域的设备树配置为 compatible =“ dma heap carveout“;

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

    该数据结构的数据存储在 MCU1-0、MCU2_1 和 A72 的共享存储器中、物理地址为 0x98000000。 A72 已将此区域的设备树配置为 compatible =“ dma heap carveout“;

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

    但是、 所有内核上是否都已缓存/未缓存此区域?  

    此致、

    Brijesh

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

    您好、

    此区域中的所有内核均配备高速缓存。

    此致

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

    您是否使用存储器屏障指令来确保在内核上完成写入?  

    此致、

    Brijesh

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

    您好、

    我们确认 MCU1_0 和 MCU2_1 都具有读写操作
    CSL_armR5CacheInv 和 CSL_armR5CacheWb 的操作已经在上一个过程中进行了说明。 不使用 A72 内核、A72 内核通过硬件维护来保持高速缓存一致性。当然、我们还可以为 A72 内核与 MCU1-0 和 MCU2_1 之间的类似操作提供一种方法、我们将对其进行验证。

    以下屏幕截图说明了其他帖子中的 A72 缓存一致性:

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

    您好、

    是的、但 在这里您观察到了 mcu1_0 和 mcu2_0 之间的问题? 因此、在这两个内核之间、必须执行缓存操作 、但如果您没有在任何一个代码上观察到正确的值、可能会出现某个序列问题、您可能会尝试再次读取它。  

    此致、

    Brijesh

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

    、、我们当前的问题是、MCU 1_0 向 DDR 写入 A 后、MCU 2_1 也从 DDR 访问正确的值(MCU 2_1 在同一高速缓存行中为其他变量分配了值)、但 A72 内核定期访问历史值(不从 DDR 同步到高速缓存、因此访问是历史值、仅 A72 访问)、在一段时间后、DDR 也成为 A72 内核缓存的历史值。 那么、哪一个 DDR 中的值被写入作为历史值? 为什么重写? 请注意理解第一个帖子中提出的问题。