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

【经验分享】STM32开启浮点运算单元FPU与DSP运算库,附性能测试

[复制链接]
STMCU小助手 发布时间:2021-12-30 13:29
STM32F4xx属于Cortex M4F架构,自带FPU硬件,可以加速float类型数据的加减乘除运算。
6 Z! d" `3 Q6 h, e& B' k5 N! ~- X$ d  T5 w' y
观察启动文件,发现,要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1) && (__FPU_USED == 1)
1 S6 w; R# q! X: ^
# t: ?6 y; z. N8 _
20201127100037275.png

5 u6 E6 K* _5 |6 n
9 H' k- D# q$ l5 W+ ]
20201127101348618.png

1 A" L5 t8 N! ~8 k$ V
  t: p% s7 u0 _: d- c  ^6 l在keil的魔术棒中,如上图所示,直接选中单精度浮点运算器,keil就会自动把所需的宏给定义出来。如何验证是否开启成功?) C- ~4 C4 j2 K) r/ M2 B
" c: g* q9 C% `, k3 ]- j3 V
验证方法1:3 P  P; e* @, l+ H
% n2 ]; |) u; h# Z8 R6 x2 X; K1 f
我们把F407主频设为168M,不选中/选中FPU,分别做10万次乘法:发现耗时分别为32153us、5954us,发现耗时缩短为1/6.性能提升显著,说明开启FPU成功了。$ F" u" ~) T3 w2 W$ p
- A3 x; j( B5 P6 B8 e7 `
验证方法2:2 i" G2 v' B5 T! b
$ w1 Y) G. ]. ]4 h
进入debug模式,或者直接查看汇编文件,发现C语言乘法运算,被编译成了V打头的汇编乘法命令,说明开启成功。. b6 W9 s3 V' F: z* G  G+ K) q9 v
4 y  o2 j) ]% b4 S& q8 E
20201127101652406.png
3 D) V/ n, o% ?7 Z1 A& N
& _  y8 J& m+ R7 T6 w! s

( T: q( M. O, ]0 aFPU只能加速float的基本运算,还有一些数学函数,不是光靠FPU就能加速的,例如sin、cos、等函数,ST和ARM提供了优化过的三角函数等,使用插值方法加速运算,要想使用这些优化过的函数
1 r( N' `9 R* t7 W! @8 F3 Y+ z* R6 ]/ e4 v
8 e! l1 K- X. a: }

5 f& R# ?3 |4 T2 a/ |2 o0 ^/ y# V. E& j2 `# [6 p
赞 收藏 评论0 发布时间:2021-12-30 13:29

举报

0个回答

所属标签

相似技术帖

官网相关资源

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