你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

RMW(Read-Modify-Write)对 STM32F7xx 内核运行速度的影响

[复制链接]
STMCU小助手 发布时间:2022-8-3 00:19
前言 * r$ ]  E' i( h5 v1 @
在客户使用 STM32F7xx(Cortex-M7 内核)实际测试中,会发现同等主频下 STM32F4xx(Cortex-M4)执行同样一段简单程序在时间上要快于 STM32F7xx,这个会影响到客户切换到 STM32F7xx 的信心,也对 ST 以及 ARM 宣传上 Cortex-M7 内核执行时间远快于 Cortex-M4 内核的说法提出质疑,本文将针对具体案例说明这一情况的产生以及解决办法。
" |( }2 o3 ]* ^* \0 Y, s2 Y1 z; O4 |5 o

9 D# V( Z- x8 p) F' ^" O, b4 h) O问题描述
1 a: E$ q" V6 ~2 \, K1 l客户测试复杂程序运行时间,比如同样 180MHz 主频下,STM32F7xx 执行 Coremark 测试程序时间远小于 STM32F4xx 的执行时间;也就是 STM32F7xx 的性能更佳,运算执行效率更好。但当客户程序顺序执行程序,尤其是简单程序时发现7 ~4 N6 l" w; B3 T- {3 V
STM32F7xx 执行时间大于 STM32F4xx 的执行时间,比如运行下面的同样的测试代码,就有明显差距:
  1. volatile uint16_t i;
    ! z9 P8 D4 t6 I1 I* {+ V
  2. static volatile uint16_t j = 0;$ K+ j8 i" Q0 D( `+ h% f
  3. i = 0;/ h: Z2 f1 ]& z! B
  4. while(i<300)
    ' r0 o$ r) @3 c  X# C
  5. {
    ! A/ ?! V9 q; @  x- d" x9 U! D
  6. i++;+ ~" F) B4 {% R0 i# o
  7. }
    # X3 M, b8 G& }; S3 X) M: T) m
  8. if(j < 100)
    6 u; S8 b$ e" S+ H) d
  9. {
    # [; [. B; X: e% k9 L
  10. j ++;
    + R7 @- p% I6 I% d) H- a
  11. }
    / _5 N, p+ f* ]5 w9 n  W" ^1 m
  12. else
    * y0 e" U! ]) T* B  c- l
  13. {
    , P+ ]; C! L3 ?5 @
  14. j = 0;! K' s% C+ Q9 t  {5 }2 T3 \6 F
  15. }
复制代码

8 D: E0 L/ x& O' _( A: h/ G+ ]; u# |! m+ q6 z. @
为方便量化时间,使用 Timer2 计数方式对这段时间进行计数,Timer2 运行在 90MHz,向上计数,Test_Counter 数据用于输出计数数值,增加后代码如下:
  1. volatile uint16_t i;/ x6 ^( T; n3 a$ ]0 |: J& {
  2. static volatile uint16_t j = 0;
    6 e8 H+ ^5 P, e2 |# I
  3. TIM2->CNT = 0;) @) \6 j) {: x( e  M* E
  4. __HAL_TIM_ENABLE(&htim2);: z+ B* B: x% Y9 R7 a
  5. i = 0;
    / S& ]5 K1 a& R
  6. while(i<300). P7 E6 \7 y( D9 r. x
  7. {
    9 r- ~0 p% ]/ j4 V3 X6 z
  8. i++;
    % _# J4 I$ R+ |9 e! r8 M: n, ~
  9. }
    - }$ U0 x. T. u2 G& \
  10. if(j < 100)
    0 o6 J7 Q3 _( o# j+ K# |
  11. {8 R* A4 T8 E  G( |5 R- E
  12. j ++;, f4 M6 F" v$ z
  13. }
    / p/ ^' b& ~  Q
  14. else
    * K. v+ u: u$ o* `+ I; h1 f
  15. {
    3 q5 g6 H2 Z: x; X8 g. f2 H% X0 {
  16. j = 0;5 v/ E4 c/ m6 ]) I
  17. }
    + |1 E5 B* Z$ U; E; ^
  18. __HAL_TIM_DISABLE(&htim2);
    : m) l/ P6 A# ^
  19. Test_Counter = __HAL_TIM_GET_COUNTER(&htim2);# i. |+ j1 |! K4 y# `( i
复制代码

0 _: S3 _9 d% d2 o1 _; x( j  Q0 @$ t- z通过上面的修改后测试下来,Test_Counter 数据分别为:3 X3 }" V) o: i3 `
STM32F446 数据为 1543
- V1 y( J4 _' x/ aSTM32F746 数据为 1836( q: e3 k* ~- u% H3 g
如果使用 Keil 自带的 States cycles 计算方法得到如下数据,后面会按照这个来计算执行时间数据。
0 H6 ~- J) l7 s7 i, g0 C6 q$ lSTM32F446 数据为 30092 G" ?# |- E9 [8 k" {, U0 T; l4 p
STM32F746 数据为 3635
. l3 W( _5 J2 I* }. I& B% Z. v5 p0 n" u9 h2 |
+ v. ~/ C6 q1 [! l; O* o: V8 k6 M

! a9 n; K9 F, Z( m+ @, C9 ?2 j  S
完整版请查看:附件9 `1 P- z: {6 S9 i

+ a8 j6 d3 I/ m9 _$ `5 ^( D+ a6 C( P$ t6 x3 S

RMW(Read_Modify_Write)对STM32F7xx内核运行速度的影响.pdf

下载

433.95 KB, 下载次数: 0

赞 收藏 评论0 发布时间:2022-8-3 00:19

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版