打印
[方案相关]

关于小华Cortex M4 芯片的DSP库应用

[复制链接]
75|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
rsxh|  楼主 | 2025-2-24 09:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 rsxh 于 2025-2-24 09:50 编辑

1. 准备工作
在keil的安装pack目录下找到dsp lib的路径。默认的pack的安装路径为C:\Users\用户名\AppData\Local\Arm\Packs
打开C:\Users\用户名\AppData\Local\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\DSP\Lib\ARM目录可以看到如下文件:
调用dsp math lib,需要包含arm_math.h头文件,路如下:
如本机未安装过CMSIS-DSP pack,可从arm官网下载,地址:https://www.keil.arm.com/packs/cmsis-dsp-arm/versions/
2. 移植工作
将arm_math.h和相应的lib拷贝到待使用的工程目录里,如main.c的同一级目录。cortex m4有四个dsp math lib,其中arm_cortexM4b_math.lib&arm_cortexM4l_math.lib为不带浮点运算的lib,下划线前的b和l分别代表Big – Endian和Little – Endian.另外两个arm_cortexM4bf_math.lib&arm_cortexM4lf_math.lib为浮点运算的lib。
     以HC32F448为例,选择arm_cortexM4lf_math.lib进行数学计算.
DSP lib是基于compile version 5编译的,需要启动浮点运算, 打开宏__FPU_PRESENT=1。 故Target选项设置如下:
3.测试代码
头文件包含#include "arm_math.h"
并定义三个数组
float sin_arr[90];
float arm_sin_arr[90];
float radians_arr[90];
角度转换为弧度后, 用micro lib和dsp lib各做90次运算,通过拉GPIO的方式测量运算结果。
4 性能对比
可以看出, micro lib运算90次sin函数的时间为36.99ms,DSPlib运算90次sin函数的时间为0.74ms,除去循环执行的时间, DSP lib的执行效率约为Micro lib库的50倍。
注:测试工程为进行PLL倍频, 仅仅运行8M主频 ,此测试只是为对比DSP LIB和Micro lib的效率差别, 实际HC32F448可以跑200MHZ主频,堪称性能小钢**。
此测试同样适用于HC32F460/HC32F472/HC32F334/HC32F4A0/HC32F4A8

使用特权

评论回复
沙发
guijial511| | 2025-2-24 10:05 | 只看该作者
硬件FPU运算单元对于浮点计算效率能够提升不小

使用特权

评论回复
板凳
rsxh|  楼主 | 2025-2-24 10:15 | 只看该作者
guijial511 发表于 2025-2-24 10:05
硬件FPU运算单元对于浮点计算效率能够提升不小

是的,如果没有浮点运算, DSP库进行arm_sin_f32运算效率提升只有3倍左右.

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝