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.

[参考译文] AM2634-Q1:AM263x Spinlock 问题

Guru**** 2535750 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1207100/am2634-q1-am263x-spinlock-question

器件型号:AM2634-Q1

您好!

  客户有一些关于 spinlock 硬件的问题。  在 TRM 中、我们建议在使用自旋锁时、最大保持时间应小于200个 CPU 周期。 因此、我们建议仅将用于共享存储器存取保护。

如果该时间大于200个周期、会发生什么情况? 旋锁是否解锁?   

基本上、它们想要使用自旋锁来保护多个内核想使用外设时的竞争。 例如:有多个内核希望使用同一个 FSI/UART 与外部器件交换信息。

1. Core1采用自旋锁。  (所需时间应小于200个周期)。

2. Core1通过使用 FSI/UART 启动传输,这需要超过200个周期。

3. Core2使用 FSI/UART 在 Core1期间尝试自旋锁。  发生时?  由于自旋锁被锁定了超过200个周期,因此 core2可以采取自旋锁吗?  

如果硬件自旋锁不适合用于此目的、我们的建议是什么?  

此致

Andre  

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

    您好、Andre、

    我正在与相应的负责人核实这一点。 这对我来说似乎很奇怪、因为对于这样一个较小的 时间限制、我不知道背后的用例要求是什么。 在 EOD 之前返回。

    谢谢。
    G Kowshik

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

    G Kowshik,

      根据测试、 硬件自旋锁在200个周期后不会自动解锁。 如果您查看所有 AM24、AM26、AM27 的 TRM 描述、它们都强调200个周期限制。  这真的很奇怪。 您能不能介绍一下 TRM 为什么如此强调这一限制。 谢谢。

    此致

    Andre  

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

    您好、Andre、

    我收到了一些关于这一案件的答复。 这是软件设计中确保临界区较小的指导原则(如果您通过全局禁用中断来实现临界区-当前的 SDK 方式-这一点更重要)。  自旋锁的优点是它不会禁用中断、硬件自旋锁是实现多核临界区的唯一方法、如果其他内核已经占用临界区、你总是可以产生优先级较低的任务。

    所以,它并不是一个严格的要求使用拼接锁,但是如果用户希望使用这些,那么建议将关键段访问保持在较短的时间内锁定。

    如果我收到任何其他消息、我将在此处更新。

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

    G Kowshik,

      我是否可以获得有关硬件行为的确认?

    一旦一个内核使 这个自旋锁进入置位状态、200个周期后会发生什么情况? 这个自旋锁会保持状态,直到有人解锁它?

     

    此致

    Andre

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

    您好、Andre、

    我在这里更为深入地了解了专家。 他们说,不需要对时间进行这种限制,因为到目前为止,没有这种使用案例得到验证,也没有发现。 我正在与硬件应用团队核实、以处理硬件的行为。 我将在收到回复后向您提供最新信息。

    谢谢