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.
您好!
有人能更准确地解释一下 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 正在使用总线。 仲裁发生在内存总线上、并且将暂停其它的访问、直到写入完成。
此致、
阿米尔·奥马尔