1.ARM Cortex M4
  ARM Cortex-M4处理器是由ARM专门开发的最新嵌入式处理器,在M3的基础上强化了运算能力,新加了浮点、DSP、并行计算等。Cortex-M4处理器的最大亮点之一,也是本文主要描述的一个功能就是增加了一个单精度浮点单元(FPU),能够高效率处理较为复杂的浮点运算,如电机闭环控制、PID算法、快速傅里叶变换等。关于M4与M3的性能对比,官方提供的测试数据如图。

                  16bit循环计数

                  32bit循环计数

  对于图表,Y轴代表执行给出的计算用的相对的周期数。 因此,循环数越小,性能越好。以Cortex - M3作为参考,Cortex - M4的性能计算,性能比大概为其周期计数的倒数。举例说明,PID功能,Cortex - M4的周期数是与Cortex - M3的约0.7倍,因此相对性能是1/0.7,即1.4倍。

2.使用M4的浮点运算
2.1获取FPU库
M4浮点库集成在Keil中,安装完Keil工具,即可从对应的文件路径获取FPU库。
 ·对于Keil4,库文件在路径:“…\Keil\ARM\CMSIS”
 ·对于Keil5,库文件在路径:“…\Keil_v5\ARM\Pack\ARM\CMSIS\4.3.0\CMSIS”,前面“…”是安装的磁盘路径,比如:“D:\Keil_v5\ARM\Pack\ARM\CMSIS\4.3.0\CMSIS”;对于不同版本的的Keil5其中“4.3.0”的命名不一样,如有可能是“4.2.0”。

2.2拷贝库文件
对于一个项目来说,为了工程的完整性和源文的管理,一般将库文件拷贝到项目工程中文件路径下。这里有两种处理用方法。
 ·使用该目录下的“Lib”库,该文件夹就是FPU相关运算函数库,使用时根据头文件函数名调用库。
 ·使用该目录下的“DSP_Lib”库,该文件夹是FPU相关运算函数库源码,每个浮点运算函数都提供源码,比较好理解和使用。如下图,各类函数都有分好类,可以查看源码,具体函数功能和描述官方有标准的手册介绍。

  鄙人用的是第二种方法,两种方法各有优势,方法一中已将源码编译程库文件,不参与编译过程,只参与链接,编译速度快;方法二,参与编译、链接过程,编译耗时,但使用时可以查看源码,便于理解和使用。

2.3加入FPU库
  首先将FPU库的路径加入Keil的编译路径中。
  第二步是加入工程,可以全部FPU库函数添加到工程中,但一般根据需要选择性添加使用到的函数库,提高编译速度和节省空间。鄙人暂时用到标准差( standard deviation)和平均值(mean)运算函数,所以仅添加两函数。另外,从命名看,ARM的命名规则比较易懂,基本上看函数名称即可知道该函数的功能,如标准差运算函数arm_std_f32,平均值运算函数arm_mean_f32,等都是以对应术语的英文名称命名。

2.4开启FPU
  使能浮点运算,在工程设置中“option for target” 中开启浮点运算功能。

  加入FPU库的宏“ARM_MATH_CM4”定义。

  在官方提供的对应MCU型号的头文件中,将FPU选择宏开启,如STM32的“stm32f407xx.h”,鄙人用的是LPC4088,头文件为“LPC407x_8x_177x_8x.h”。

#define __FPU_PRESENT                  1            /*!< FPU present or not                                                    */

**2.5使用FPU**   使用前,需要在文件头加入浮点库函数头文件,即是#include "arm_math.h",否则编译时可能会提示警告或者编译错误。然后即是根据库函数的参数类型传入对应类型参数调用该函数。 **3.总结** 实体测试及综合网友的一些实验,关于FPU的几个总结: 1)编译器未开启FPU功能,代码中配置了FPU,程序依然按照未配置FPU的代码进行处理。 2)编译器开启了FPU功能,代码中未配置FPU,如果代码中带有单精度(float)浮点运算的代码,编译器会使用FPU单元汇编指令,无论芯片是否开启了FPU功能。除非用户在代码中关闭了FPU功能,此时程序执行会出错,直接进入HardFault_Handle。 3)Cortex M4默认的开启浮点运算功能的,但目前M4只支持单精度浮点运算,单精度浮点运算对于大部分场合来说已经足够使用。 4)一般情况下,编译器对于小数处理默认是双精度(double)类型,所以在涉及小数运算时,若要使用FPU功能,应该指定为单精度类型,如:float a = 1.23f * 2.34f。

ARM Cortex M4使用浮点运算单元(FPU)相关推荐

  1. 关于STM32浮点运算单元FPU的小话题

    有人利用STM32芯片做些DSP处理,在启用FPU单元进行调试.验证过程中可能会遇到些小问题.小困惑,这里通过STM32F4芯片一个具体的应用示例简单分享下,希望顺便能给同仁提供些帮助或提醒. 我这里 ...

  2. 浮点运算单元FPU能给电机控制带来什么?

    编者按:在计算领域,例如三角函数以及时域频域变换通常会用到浮点运算.当CPU执行一个需要浮点数运算的程序时,有三种方式可以执行:软件仿真器(浮点运算函数库).附加浮点运算器和集成浮点运算单元.在控制应 ...

  3. fpu测试_浮点运算单元FPU能给电机控制带来什么?

    编者按:在计算领域,例如三角函数以及时域频域变换通常会用到浮点运算.当CPU执行一个需要浮点数运算的程序时,有三种方式可以执行:软件仿真器(浮点运算函数库).附加浮点运算器和集成浮点运算单元.在控制应 ...

  4. STM32浮点运算单元(FPU)和DSP库使用

    文章目录 1. 浮点运算单元(FPU) 1.1 所用硬件 1.2 配置FPU 2. CMSIS-DSP 2.1 添加DSP库 2.2 测试 ====>>> 文章汇总(有代码汇总) & ...

  5. STM32开启浮点运算单元FPU与DSP运算库,附性能测试

    STM32F4xx属于Cortex M4F架构,自带FPU硬件,可以加速float类型数据的加减乘除运算. 观察启动文件,发现,要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1 ...

  6. ARM® Cortex®-M内核单片机STM32家族介绍,覆盖STM32F、STM32H、STM32L全系列

     STM32是ARM®Cortex®-M内核单片机.目前提供10大产品线(F0, F1, F2, F3, F4, F7, H7, L0, L1, L4),超过700个型号.STM32产品广泛应用于 ...

  7. linux arm fpu初始化,ARM处理器的浮点运算单元(FPU)

    浮点运算单元(FPU)简介 Float Point Unit,浮点运算单元是专用于浮点运算的协处理器,在计算领域,例如三角函数以及时域频域变换通常会用到浮点运算.当CPU执行一个需要浮点数运算的程序时 ...

  8. arm linux fpu,ARM处理器的浮点运算单元(FPU)

    浮点运算单元(FPU)简介 Float Point Unit,浮点运算单元是专用于浮点运算的协处理器,在计算领域,例如三角函数以及时域频域变换通常会用到浮点运算.当CPU执行一个需要浮点数运算的程序时 ...

  9. 嵌入式linux内核 浮点运算,ARM处理器Linux下浮点运算单元运用

    1).浮点运算单元(FPU)简介 Float Point Unit,浮点运算单元是专用于浮点运算的协处理器,在计算领域,例如三角函数以及时域频域变换通常会用到浮点运算.当CPU执行一个需要浮点数运算的 ...

最新文章

  1. Python3 高级特性
  2. Dictionary To Dynamic
  3. python怎么使用json_Python JSON的简单使用
  4. 锦欣生殖获战略投资,华平、信银领投,红杉、药明康德跟投
  5. 提升数据分析能力成熟度之四步曲_数据分析师
  6. 要不要赶个时髦,去建设一个「 中台 」?
  7. 凭实力搞砸公司重大项目,老板看到直呼内行
  8. hp打印机怎么连接电脑_hp打印机驱动怎么安装 惠普打印机驱动程序安装方法【详解】...
  9. 打印表单_超市生鲜日常作业表单,打印出来就能用!
  10. 小程序实战1-项目总览
  11. SCRUM 12.23
  12. 浅谈Get和Post方法的区别与TCP与UDP区别
  13. html代码大全字号,网页设计HTML代码大全
  14. 关于office/word/excel/powerpoint/ppt弹出“配置进度”的解决办法
  15. 反弹c语言作业,C语言实现反弹球游戏
  16. OrCAD之Design Resources的文件导入新的.dsn文件后,旧的。dsn文件如何去除?
  17. 依然仰望星空,脚踏实地——个人CSDN年度总结。
  18. 嵌入式linux shadow文件,04.嵌入式Linux文件系统
  19. 基于C语言实现的汽车牌照的快速查询
  20. 联想台式计算机光驱启动,联想电脑怎么设置光驱启动【图文】

热门文章

  1. python web项目源码下载_python web 源码范例
  2. filebeat源码分析之采集
  3. Excel大数据量单元格快速填充
  4. 高中学python有用吗_人生苦短,请用Python!学习Python的四大理由
  5. 在dw中 新建html快捷键,Dreamweaver创建自定义快捷键的方法技巧
  6. 王小川会成为下一个蒋凡还是张旭豪?
  7. 《哲学家们都干了些什么》读书笔记
  8. 全国百强县排名完全名单——你老家上榜了吗?
  9. 保弘实业|比较好的小额个人理财方法
  10. 大三实习生JAVA-集合