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.

[参考译文] TMS320F28035:有关 CPU 和 CLA 的问题尝试访问'CLA_TO_CPU 消息 RAM'同时问题

Guru**** 2611385 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/690759/tms320f28035-question-about-cpu-and-cla-try-to-access-cla_to_cpu-message-ram-at-the-same-time-issue

器件型号:TMS320F28035

您好、Vivek、

感谢您的回复。 这确实有帮助、但我还有一个相关的问题:

假设我在 CLA_TO_CPU 消息 RAM 中有一个无符号32位整数变量、称为"RESULT_VALUE "。 目前、CPU 正在访问此变量并执行以下操作:

uint32 local_variable;

local_variable =(Result_value >> 8);

移位将需要几个周期、如果 CLA 在移位过程中尝试写入该变量、"RESult_value"将会发生什么情况? 这会导致一些线程安全问题吗?

谢谢。

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

    James、

    两个变量都无法写入相同的变量。 如果它被放置在 CLA_TO_CPU 消息 RAM 中、那么只有 CAL 具有写入访问权限。 CPU 将仅具有对其的读取访问权限。

    Vivek Singh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Vivek、
    感谢您的回答、但我认为在本例中、CPU 和 CLA 都不会尝试写入同一个变量。 CPU 仅从变量中读取。 我的理解是、变量"RESult_value"不是通过执行以下操作来修改的:

    local_variable =(Result_value >> 8);

    但我可能错了。

    也许这不是一个很好的例子来证明我的担忧。

    我真正关心的是 CPU 需要在一个中断例程期间从该变量读取两次、一次在中断的开头、一次在中断的末尾附近、 但在两次读取之间、CLA 修改了该变量、这可能会导致线程安全问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    James、

    很抱歉,我误解了它。 您说得对、它只会读取中的变量进行移位、但不会回写。

    在这里,我仍然不清楚这个问题。 CLA 在两次读取之间修改变量是预期事件还是非预期事件?

    此致、

    Vivek Singh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Vivek、
    基本上、我只是说用户必须确保从同时运行的两个内核访问相同存储器位置时其应用程序中的时序、因此不会发生这种非预期事件。 就这些。

    谢谢。