[STM32F7] NUCLEO-F722ZE-6-浮点数运算对比测试

[复制链接]
2087|15
 楼主| whtwhtw 发表于 2017-3-10 19:29 | 显示全部楼层 |阅读模式
本帖最后由 whtwhtw 于 2017-3-10 19:50 编辑

有幸在活动中获得NUCLEO-F7的板子非常激动!这是我的第一个f7板,非常想知道有多牛X。
一、上靓照
IMG_7652-1.jpg
脱光了
IMG_7656-1.jpg

IMG_7657-1.jpg

IMG_7659-1.jpg

IMG_7660-1.jpg

二、对比F407浮点运算
运行于168M,三种模式运行时间对比
test1-2.png
test3.png
主循环
主循环.png
函数后面的时间标注是通过串口打印出来的时间测试值,测试方法是1us定时器累加,函数执行前后时间差就是执行时间。此处可看出DSP库函数的强大这里要注意!小数点后面不加f的编译器会自动转为双精度浮点数,而M4核和DSP库函数都是只支持单精度浮点数,就会导致运算速度降低,切记!!!
IMG_20170310_193457.jpg
三、对比测试F722执行时间,频率首先按168M配置执行




打赏榜单

21ic小管家 打赏了 8.88 元 2017-04-10
理由:NUCLEO-F722ZE评测领赏

 楼主| whtwhtw 发表于 2017-3-12 12:18 | 显示全部楼层
本帖最后由 whtwhtw 于 2017-3-13 09:56 编辑

722测试1.png

什么情况嘛,还不如M4,肯定哪里设置错了...

722CUBEMX-2.png
这个选项M1和M4可没有,点开看看
722测试CUBEMX设置1.png
紧耦合内存技术(TCM),该功能打开,实测在这种应用中作用不大
722测试3mx.png
打开CPU的ICache
再次测试
722测试3.png
再打开CPU的DCache
722测试4mx.png
测试结果
722测试4.png
看来TCM接口要配合Cache的使用才有作用下面还有内存管理器MPU的配置,这里没用到,大型应用(比如linux移植应用)更如鱼得水了
对比M4的测试是不是有什么问题?







 楼主| whtwhtw 发表于 2017-3-12 12:50 | 显示全部楼层
本帖最后由 whtwhtw 于 2017-3-12 15:18 编辑

是的,STM32F7系列增加了双精度浮点数的支持,因此在双精度的运算中比在M4中提升不少。但是在使用单精度运算中为什么还不如M4,目前还没搞明白。希望有大侠来指点一下,是否真的STM32F7的单精度运算不如M4
 楼主| whtwhtw 发表于 2017-3-12 13:02 | 显示全部楼层
本帖最后由 whtwhtw 于 2017-3-12 14:33 编辑

最后把频率提升到216M也没见结果有什么影响......不应该呀
722测试5.png
原来自己犯了个错误,时钟改了,定时器的1us没改,导致结果错误,重新修改编译,结果是
722测试6.png
提升还不小
 楼主| whtwhtw 发表于 2017-3-12 13:09 | 显示全部楼层
本帖最后由 whtwhtw 于 2017-3-12 15:19 编辑

F722-FPU.zip (284.54 KB, 下载次数: 5)

这是程序文件,不带Drivers文件夹,库文件大家都有。
 楼主| whtwhtw 发表于 2017-3-12 14:50 | 显示全部楼层
本帖最后由 whtwhtw 于 2017-3-12 14:54 编辑

下面玩玩超频
先到240M试试
722测试240.png

280M
722测试280.png

300M
722测试300.png

310M
722测试310.png 几分钟后死机

320M直接都没反应了。。。。。。
看来也就300M左右可以发挥一下了



 楼主| whtwhtw 发表于 2017-3-12 18:56 | 显示全部楼层
用的cubemx4.20,建立的NUCLEO-f722工程用内部高速时钟没问题,用外部高速时钟总是没反应,搞的我反复焊晶振都把焊盘搞掉了,后来调试发现是死在HAL_RCC_OscConfig()里的HSI Configuration中,总是return HAL_ERROR;
我把这部分都注释掉才可以使用,后来新建个工程还是这个问题,也不知道是这板子被我焊出问题了还是这个版本的cubemx有bug
chenci2013 发表于 2017-3-12 21:46 | 显示全部楼层
chenci2013 发表于 2017-3-12 21:51 | 显示全部楼层
坐等NUCLEO-F722ZE的设计实例分享。
 楼主| whtwhtw 发表于 2017-3-13 09:58 | 显示全部楼层
以后有时间试试ADC采样和FFT变换
 楼主| whtwhtw 发表于 2017-3-13 10:19 | 显示全部楼层
补充一下CUBEMX针对F7特有的配置MPU

内存管理模式.png
MPU管理模式有四种

MPU单元

MPU单元

MPU管理单元有8个

内存管理配置.png
每个MPU管理单元可配置内存地址范围和管理方式



 楼主| whtwhtw 发表于 2017-3-13 11:33 | 显示全部楼层
本帖最后由 whtwhtw 于 2017-3-13 11:35 编辑

重新回到二楼的flash 接口选择,分别为AXI和ITCM总线,看总线图
总线矩阵.png
AXI总线是通过转接AHB总线与flash相连,大家知道flash是低速存取设备,因此使用该总线会在调取指令时插入空指令来弥补flash读取指令时候的空白指令周期,因此也拖慢了系统执行指令的速度
而使用ITCM总线是三种模式,第一种是不开ART直接读取flash,与AXI总线差不多,优点是不占用AHB总线
第二种是开ART,ART(Adaptive Real-Time Memory Accelerator 即 自适应实时存储器加速器),主要功能是弥补高速cpu与相对低速flash指令读取之间的矛盾。当指令flash读取速度足够快,cpu就可以相应提速。这句话载自网络,没太理解,大概意思就是发挥flash的读取极限,但是仍然跟不上CPU的速度。
第三种是使用ITCM内存的情况下开ART,这种模式就牛X了,ART存取和预取的指令都存放到一片SRAM内存中,大部分指令(比如循环体和重载函数)都可以从这片RAM中取指令,就不用到flash读取了,因此执行指令就可以0等待了,这时才发挥CPU的全部能力
看看我的测试,在168M下开ITCM能提升将近一倍的速度。
 楼主| whtwhtw 发表于 2017-3-13 11:47 | 显示全部楼层
本帖最后由 whtwhtw 于 2017-3-13 11:53 编辑

内存映射.png

看看ITCM和DTCM在存储空间的映射,他们不再一个区域。DTCM和SRAM在一起,功能也相近;ITCM映射到了和flash一个区,根据功能确定的。但是具体使用地址是在映射接口区0x00200000----0x0027ffff

mmbs 发表于 2017-3-13 14:37 | 显示全部楼层
是不是单步调试测量的比较准确?
mmbs 发表于 2017-3-13 14:40 | 显示全部楼层
总体的性能来看是,超高性能MCU
 楼主| whtwhtw 发表于 2017-7-13 10:21 | 显示全部楼层
重新看了F722的datasheet,不是所有的F7核都支持双精度浮点运算,这款芯片只支持单精度浮点运算,所以双精度浮点运算比单精度浮点运算慢好多倍,如果支持的话应该能基本持平,回头有支持双精度的F7了去试一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

72

主题

2500

帖子

35

粉丝
快速回复 在线客服 返回列表 返回顶部