本帖最后由 wolfgang2015 于 2018-4-20 09:58 编辑 拿到一款MCU评估板,第一件事就是要验证其MCU最大性能,能让诸位心中对MCU的处理能力有个了解,这次《低功耗MCU运行FreeRTOS》培训的STM32L49拿到后我也做了一次不完全Coremark跑分测试一、测试的方法 1、设定最大时钟 2、设定串口,修改功能引脚与PCB板上的一致,并设定串口时钟 设置对应波特率设置为115200(图略) 虽然之前就知道Coremark根据编译器不一样结果会不一样,但没有亲侧一边,心有不甘。 这里从筹备到得到最后测试结果,花费了较多的时间。 这里用CubeMX设置好后,依次生成了4种工程(EWARM、MDK-ARM、SW4STM32、TrueSTUDIO),然后用四种不同的开发环境对工程进行逐一编译,下载到Nucleo STM32L496 开发板上,检测不同编译器对Coremark跑分的影响。 二、不完全跑分结果: 1、EWARM 工程,用IAR 8.20编译后下载,得到跑分结果入下图: 跑分结果:CoreMark 1.0 : 264.970853 / IAR ANSI C -Ohs-no_size_constraints / STACK 2、MDK-ARM 工程,用KEIL 5.18编译后下载,得到跑分结果入下图: 跑分结果:CoreMark 1.0 : 209.561597 / MDK ANSI C -O3-Optimize for Time / STACK 3、SW4STM32 工程,用AC6 V2.0 编译后下载,得到跑分结果入下图: 跑分结果:210.222415 / GCC6.3.1 20170620 (release)[ARM/embedded-6-branch revision 249437] -O3 / STACK 4、TrueSTUDIO 工程,用TrueSTUDIO 9.0.0 编译后下载,得到跑分结果入下图: 跑分结果:209.608451/ GCC6.3.1 20170215 (release) [ARM/embedded-6-branch revision 245512] -Ofast /STACKrevision 249437] -Ofast / STACK 5、Coremark跑分对比表 三、跑分差异不完全分析 另外我看见论坛里有朋友跑出了165左右的Coremark值,最初我也在IAR编译的代码中跑出这样的分数,觉得背离官方给的参考值甚远,就觉得那里没对,多方对比之后发现这个问题源于CubeMX生成的代码,这里把问题指出来,望各位在自己的工程代码使用中多加注意,看似跑分结果,实际上代码的问题会让MCU性能大打折扣。望诸位多加注意! 问题跑分: 官方参考值: 官方给出的STM32L496的理论 Coremark跑分在273.55左右,可能是时钟是用较为稳定SHE缘故,同IAR的分之相差不到10分,算接近了。 问题跑分(分值:165)与官方跑分偏差交大的重要原因,经分析是CubeMX生成的SystemClock_Config()函数代码造成,函数代码中缺少以下代码的显示定义,跑分偏低的朋友,请检查诸位的代码中是否确实红色部分的定义: ........ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; RCC_OscInitStruct.PLL.PLLM = 1; RCC_OscInitStruct.PLL.PLLN = 10; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; ........ 对应的系统时钟图的位置为: 这里使用的MCU是STM32L系列的单片机,片内具备SHI、MSI两种内部时钟,经测试在相同80MHz的主频下,二者跑分相差小于1,几乎相等,性能接近。至于为什么缺失丢PLLM设置就会让MCU跑慢,经查询用户手册《DM00083560_ENV4.pdf》,也没有能解答出来。 手册中默认是0x0,既是1分频,但初始化的时候并不是1分频,这部分PLLM设置时,需要代码作显示定义。 这里或许可能是HAL代码的一个BUG还是寄存器初始化的BUG,就不得而知了,望大家使用时多加注意。 |
STM32L4 超低功耗微系列及相关探索学习板介绍
STM32L476程序烧录
【NUCLEO-L476RG开发】使用STM32L4开发板玩转心率传感器
[Nucleo-L4R5] STM32L4R5 驱动OLED
[Nucleo-L4R5] STM32L4R5 基于OLED显示二维码
STM32L432KC开箱测评------OLED显示
STM32L476建工程及点亮LED
【评测站】STM32L496G-DISCO - 高性价比的智能手表解决方案
【超低功耗STM32L4系列首秀】 收到板子了,
STM32L496G-DISCO的出厂源码在哪儿可以下载?
能到您的点赞,很荣幸!
参考官方的Coremark跑分,很简单的