首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Nucleo-H743ZI2性能问题

Nucleo-H743ZI2性能问题
EN

Stack Overflow用户
提问于 2021-07-16 00:49:06
回答 1查看 44关注 0票数 0

在我的各种M4和M7 Nucleo板上,我使用了一个简单的汇编时序循环( SUBS和BNE)和一个闪烁的发光二极管。在Cortex M4上,这些指令占用3个处理器时钟,这一点很容易得到确认。在我的Nucleo-H723ZG Cortex M7板上,这两条指令总共只占用一个时钟周期。这种性能改进是由于两个指令的双重发出,而分支实际上具有零等待时间。但是,在我的Nucleo-H743ZI2板上,循环指令需要两个处理器时钟,而不是一个。因为这两个都是使用相同代码的M7处理器,所以我需要帮助来理解为什么双读取似乎不起作用!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-16 17:16:54

正如我在回复your previous question时提到的,这些指令的周期计数是可变的,没有文档记录的方法来预测它将是什么。这将取决于程序的更广泛的上下文,尤其是指令的对齐、它们在高速缓存线中的位置以及到分支目标的距离等等。

同样,正如我已经提到的,如果你想使执行时间更可预测(但更糟糕),那么你必须在辅助控制寄存器中设置DISFOLD位。

我假设您正在尝试创建一个延迟循环,但是使用没有定义周期计数的指令来执行定时延迟是错误的。你需要使用某种时钟或计时器。

为此,我在STM32上成功使用了两个选项: SysTick和调试周期计数器,它们具有非常高的准确性和非常低的开销。这两者都提供了一个寄存器,您可以重新读取并计算差值。

以下是accurate delay functions on Cortex M的一些代码示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68397825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档