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.

[参考译文] AM263P4-Q1:两个内核之间的 SpinLock 锁定和解锁时序

Guru**** 2452710 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1497420/am263p4-q1-spinlock-lock-and-unlock-timing-between-two-cores

器件型号:AM263P4-Q1

工具/软件:

您好、

我在锁步模式下在内核0和内核2上运行两个应用。

在 Core 2上、程序会开始锁定 spinlock 0、并在完成初始化工作后解锁。

在内核0上、它会从一开始就一直检查 spinlock 0、当 spinlock 0空闲时、它开始执行初始化。

问题是,我发现在核心2释放 spinlock 后,核心0仍然等待约9ms,然后开始运行。

这是正常的吗? 或者有人能解释为什么它这样工作吗?

请参阅这张图片

绿色表示核心0、橙色表示核心2

1:bootlaoder 释放模芯

2:芯2锁定旋锁并开始运行

3:核心0开始检查旋锁

4:核心2自由旋锁

5:内核0获取 spinlock 并开始运行

点4到点5之间大约有9ms。

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

    尊敬的 Phoenix:

    您使用什么代码/API 来检查/锁定/释放每个内核的 spinlock?

    我预计 Core0检查 spinlock 状态会有一些延迟、如果空闲、则锁定 spinlock、但目前我不知道对此有任何典型的时序预期。 9ms 似乎很慢。

    由于一些软件被篡改、使用直接寄存器读取/写入函数比使用 API 更快、但我需要向 SDK 团队验证这一点。

    此致、

    Zackary Fleenor

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

    您好、Zackary、

    我直接执行读取/写入 SPINLOCK 寄存器。  

    该功能正常工作、但谈到读取/写入寄存器时时间非常长。

    如果你能找到更多的时间信息,这将是非常有帮助的。

    谢谢