打印
[STM32F3]

使用STM32F3discovery关于FPU的一些问题

[复制链接]
477|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
laocuo1142|  楼主 | 2024-7-26 18:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
传感器处理要用到浮点运算,而且STM32F303的优势是具有FPU单元,因此如何使用硬件FPU是STM32F3discovery使用的基础。
1、在STM32F3-Discovery_FW_V1.1.0ProjectPeripheral_Examples中有个FPU工程,通过LED4可观察使用硬件FPU前后的速度区别。看其编译反汇编确实用到浮点的V指令,说明在OPNION的C+选项中选中USE FPU确实能够使用硬件FPU,其中用到的fabsf、fmaf、sqrtf等函数就是使用了硬件FPU,其实现应在CMSIS DSP Software Library中。在STM32F3-Discovery_FW_V1.1.0LibrariesCMSISDocumentationDSP_Lib中有LIB的介绍,在STM32F3-Discovery_FW_V1.1.0LibrariesCMSISDSP_Lib中有LIB的实现,但这些函数前面都有前缀arm_啊,怎么没有找到fabsf等函数的实现啊?难道他们的实现在MATH.H里面吗?这里面不是定点器件通过Q化实现的浮点运算吗?不明白。
2、看了许多FPU的文章,FPU工程并没有这么复杂啊?[size=13.3333px]
3、用到矩阵运算,如何在STM32F303上硬件实现啊?

使用特权

评论回复
沙发
七毛钱| | 2024-7-26 21:22 | 只看该作者
在STM32F303上进行矩阵运算可以使用标准C库和FPU

使用特权

评论回复
板凳
两只袜子| | 2024-7-26 21:22 | 只看该作者
CMSIS DSP库提供了优化的矩阵运算函数,如arm_mat_mult_f32等,这些函数针对STM32系列处理器进行了优化,可以高效地利用FPU和DMA(如果可用)进行矩阵运算。

使用特权

评论回复
地板
jcky001| | 2024-7-26 21:22 | 只看该作者
如果您对性能有极致要求,可以考虑手动编写并优化矩阵运算的代码,通过循环展开、减少函数调用、利用SIMD指令等方式来提高性能。

使用特权

评论回复
5
cr315| | 2024-7-26 21:23 | 只看该作者
使用外部库

使用特权

评论回复
6
工程师犹饿死| | 2024-7-30 18:17 | 只看该作者
使用STM32F303的硬件FPU(浮点运算单元)可以显著提升处理浮点运算的效率

使用特权

评论回复
7
抹茶妹妹| | 2024-7-30 18:54 | 只看该作者
STM32F303系列微控制器的FPU可以加速浮点运算,使用FPU可以显著提高浮点计算的性能。
在STM32F303的编译设置中,确保在编译器选项中启用了FPU支持(如-mfloat-abi=hard和-mfpu=fpv4-sp-d16)。

使用特权

评论回复
8
我爱台妹mmd| | 2024-7-31 23:16 | 只看该作者
CMSIS DSP库是ARM提供的用于DSP(数字信号处理)的库,包含了许多数学函数的实现。CMSIS DSP库中的函数通常以arm_前缀命名,例如arm_sqrt_f32用于计算平方根,arm_fabs_f32用于计算绝对值。
对于fabsf等标准C库函数,CMSIS DSP库中的实现可能并不是直接的浮点运算,而是利用了DSP库的优化版本。例如,fabsf的实现可能被替换为arm_fabs_f32,这是一个在CMSIS DSP库中实现的浮点绝对值函数。
在CMSIS DSP库的源代码中(arm_math.h 和 arm_math.c),会包含这些函数的具体实现。这些实现可能不是直接的浮点操作,而是利用硬件FPU来加速计算,具体的实现可以在CMSIS DSP库的源码中找到。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1167

主题

5088

帖子

12

粉丝