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.

[参考译文] TMS320F28377D-EP:CLA 与 CPU 之间针对 CLA/CPU MSGRAM 的仲裁方案

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1249921/tms320f28377d-ep-access-arbitration-scheme-between-cla-and-cpu-for-the-cla-cpu-msgram

器件型号:TMS320F28377D-EP

您好!

有人能更准确地解释一下 CLA 到 CPU MSGRAM 和 CPU 到 CLA MSGRAM 的访问仲裁工作原理。

我们以 CLA 任务在100us 运行、CPU 任务在1ms 运行为例。

我 想确保 CLA 不会在 CPU 读取它的同时写入 MSGRAM。

我的理解是、访问仲裁与本地共享存储器相同、如下所述:

因此、关于轮询仲裁、上面的插图可能有点简化、但实际上意味着 CLA 不会覆盖或更新共享变量、除非 CPU 先读取它、以便访问仲裁令牌返回到 CLA。 换句话说、在这种特殊情况下、CPU 是否会使 CLA 更新速率停顿? 如何工作?

当 CLA 和 CPU 同时尝试访问同一存储器区域时、会发生什么情况?

我将非常感谢详尽的 解释。

非常感谢。

劳伦特

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

    您好,Laurent

    我 想确保 CLA 不会在 CPU 读取时写入 MSGRAM。

    在  技术参考手册(第6.4.1节) CLA 一章的 CLA 消息 RAM 部分中、存在一个仲裁机制、该机制遵循"系统控制"一章的存储器控制器模块一节中提到的内容。  由于这种仲裁、不应在同一消息 RAM 上同时执行读取和写入操作。

    [quote userid="527782" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1249921/tms320f28377d-ep-access-arbitration-scheme-between-cla-and-cpu-for-the-cla-cpu-msgram

    换句话说、在这种特殊情况下、CPU 是否会使 CLA 更新速率停顿? 如何工作?

    当 CLA 和 CPU 同时尝试访问同一存储器区域时、会发生什么情况?

    [/报价]

    对于确切的仲裁机制、我认为它的工作 方式与您在本地共享存储器中指出的相同、但我将与另一位专家再次核实以确保可行。

    此致、

    阿米尔·奥马尔

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

    您好、Omer:

    感谢您的答复。

    我一定会需要更多有关该仲裁的信息、这对于我们在应用和认证过程中的设计和安全考虑至关重要。

    谢谢!

    劳伦特

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

    您好,Laurent

    我目前正在等待 CLA 设计专家的回复、 一旦他们给出回复、我将在下周回复。

    此致、

    阿米尔·奥马尔

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

    您好,Laurent

    我已经与一些设计专家确认、CLA 消息 RAM 遵循与你已经指出的本地共享存储器一样的仲裁。

    此致、

    阿米尔·奥马尔

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

    感谢你的评分

    我想更深入地理解轮询、TRM 上的说明很浅、所以让我们举例:

    一旦 CLA 写入 MSGRAM (CLA 写入周期每100us 一次)、图片就会显示获取 MSGRAM 访问权的令牌现在位于 CPU 端。 如果 CPU 每1ms 读取一次、这是否意味着 CLA 不能再次写入 MSGRAM、除非 CPU 先读取一次?

    这就是我要找的一些细节。 这将极大地影响设计和我们的安全要求。 对于安全软件来说、理解仲裁是非常重要的。

    非常感谢您的帮助。

    Laurent.

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

    您好,Laurent

    如果 CLA 写入消息 RAM、那么 CLA 或 CPU 都可以读取此存储器。 轮循 仅适用于同时访问 (不是每次访问)、例如当 CLA 写入 CPU 尝试从 存储器读取的同一时刻时。 根据 循环仲裁的位置、将首先服务 CPU 或 CLA。 这是不可预测的,因为在循环中的位置取决于许多因素。

    但请记住、CPU 永远不会从 CLA 到 CPU 的消息 RAM 读取不正确的数据。 在最坏的情况下、当 CLA 写入 CPU 正在读取存储器且循环在 RR-CPU 上时、 CPU 将只会读取过时的数据、CLA 将在 CPU 完成读取后更新该数据。

    此致、

    阿米尔·奥马尔

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

    感谢 Omer、这是非常有用的信息。

    但是、我现在脑海中有一个场景。

    2个字(32位)读取或写入期间会发生什么情况?

    例如、WORD#1位于@0x008000、WORD#2位于@0x008001 (LSRAM1)

    CLA 写入字#1、但当 CLA 完成字#1时、CPU 希望读取字#1和#2。 我会得到具有更新值的字#1和具有过时值的字#2 (来自前一周期)吗?还是 CPU 会暂停,直到 CLA 写入这两个字?

    可能是荒谬的情形、但我宁愿提问、也不要假设。

    此致、

    劳伦特

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

    您好,Laurent

    如果正在从 CLA 进行32位写入、CLA 正在使用总线。 仲裁发生在内存总线上、并且将暂停其它的访问、直到写入完成。

    此致、

    阿米尔·奥马尔