
前言 在客户使用 STM32F7xx(Cortex-M7 内核)实际测试中,会发现同等主频下 STM32F4xx(Cortex-M4)执行同样一段简单程序在时间上要快于 STM32F7xx,这个会影响到客户切换到 STM32F7xx 的信心,也对 ST 以及 ARM 宣传上 Cortex-M7 内核执行时间远快于 Cortex-M4 内核的说法提出质疑,本文将针对具体案例说明这一情况的产生以及解决办法。 问题描述 客户测试复杂程序运行时间,比如同样 180MHz 主频下,STM32F7xx 执行 Coremark 测试程序时间远小于 STM32F4xx 的执行时间;也就是 STM32F7xx 的性能更佳,运算执行效率更好。但当客户程序顺序执行程序,尤其是简单程序时发现 STM32F7xx 执行时间大于 STM32F4xx 的执行时间,比如运行下面的同样的测试代码,就有明显差距:
为方便量化时间,使用 Timer2 计数方式对这段时间进行计数,Timer2 运行在 90MHz,向上计数,Test_Counter 数据用于输出计数数值,增加后代码如下:
通过上面的修改后测试下来,Test_Counter 数据分别为: STM32F446 数据为 1543 STM32F746 数据为 1836 如果使用 Keil 自带的 States cycles 计算方法得到如下数据,后面会按照这个来计算执行时间数据。 STM32F446 数据为 3009 STM32F746 数据为 3635 ![]() 完整版请查看:附件 |
RMW(Read_Modify_Write)对STM32F7xx内核运行速度的影响.pdf
下载433.95 KB, 下载次数: 0
STM32F769I-DISCO开发板GUI学习内容(二)_课前硬件基础
基于STM32F767通过cube配置:QSPI接口读写64M PSRAM+flash参考资料...
【实战经验】基于STM32F7的网络时间同步例程
STM32硬件结构学习
STM32中BOOT的作用
【STM32F769I-DISC1】开发板刷入Micropython并完成点灯、读取内部温度测试
【STM32F769I-DISC1】测评01:创建STM32cube IDE 工程,点个灯
【STM32F769】创建deepseek本地服务,并实现http请求
汇编浮点库qfplib移植STM32F769I-DISCO开发板与硬件浮点运算性能测试对比
coremark移植到STM32F769I-DISCO开发板的两种方法