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

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

[复制链接]
STMCU小助手 发布时间:2021-12-30 13:29
STM32F4xx属于Cortex M4F架构,自带FPU硬件,可以加速float类型数据的加减乘除运算。9 p' A, x1 y# I; y- o

$ e$ b' k9 _. d% V. u9 F观察启动文件,发现,要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1) && (__FPU_USED == 1)& ]2 M$ p3 O0 ^$ X5 F+ K; r

( j5 Q7 A* y2 E% j" s1 k/ U& s
20201127100037275.png

$ a) c& ]; A& Y: U- ~, H& J' m! W4 s; J$ m+ D% K" X5 L
20201127101348618.png
, l7 c5 M( e! p3 s+ c2 v
1 m7 {' x4 g7 O$ f
在keil的魔术棒中,如上图所示,直接选中单精度浮点运算器,keil就会自动把所需的宏给定义出来。如何验证是否开启成功?
$ ~9 j. [% b, I, o. F: V5 v+ i# {6 |8 Z3 T* s" m3 L* K7 `7 x: s" A
验证方法1:
3 l$ T2 p7 h' C% J) W/ O3 }9 j! q2 T
我们把F407主频设为168M,不选中/选中FPU,分别做10万次乘法:发现耗时分别为32153us、5954us,发现耗时缩短为1/6.性能提升显著,说明开启FPU成功了。
( N8 O5 u5 F& ^0 H2 [' s1 @. Y4 f; L' |" ?
验证方法2:
8 ?5 i2 ?7 s( g3 m! {1 Q$ O
% D3 d" l) s7 N; S/ m进入debug模式,或者直接查看汇编文件,发现C语言乘法运算,被编译成了V打头的汇编乘法命令,说明开启成功。' p6 S9 m- {7 b+ F) M* d" P
2 C  T2 S6 S5 s0 {$ n
20201127101652406.png
& d# [+ n. f/ S7 r+ A2 b( `
6 s- y& g* e! Q

* ~8 q) e7 D. ^% z/ jFPU只能加速float的基本运算,还有一些数学函数,不是光靠FPU就能加速的,例如sin、cos、等函数,ST和ARM提供了优化过的三角函数等,使用插值方法加速运算,要想使用这些优化过的函数
$ T" g, \2 I3 V+ q0 f3 \+ P: n) w3 l1 Y( ^
* ]5 ^- @0 Z" Y# v+ p: ]5 T
$ E# y2 z; V/ Z8 k  o: H& m
2 @$ P; |, t4 B9 @+ C2 k5 p" a$ D2 }
赞 收藏 评论0 发布时间:2021-12-30 13:29

举报

0个回答

所属标签

相似技术帖

官网相关资源

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