【NUCLEO-L4R5ZI评测】CoreMark跑分测试
本帖最后由 donatello1996 于 2018-1-19 15:00 编辑在嵌入式领域有一个软件被看作是一种信仰,与PC电脑的Fritz Chess Benchmark评测类似,这个软件的名字叫CoreMark。CoreMark和Fritz Chess Benchmark都是用于评测CPU运算性能的,MCU(单片机)和Cortex-A MPU(微处理器)都可以用这个软件库评测性能,性能越高的MCU/MPU跑分越高;同型号MCU,主频越高跑分越高。
CoreMark的源文件在STM32的官网和各大DIY论坛都能找到,顺带移植手册,这里把手册上传一下,步骤都在里面,很详细:
关键点一,systick设置,由于CoreMark的跑分需要频繁进入systick溢出中断进行计时,因此systick的中断服务函数要重写:
关键点二,初始化设置,由于CoreMark的运行需要串口打印和RCC时钟的支持,因此最简单的情况下至少要初始化RCC和LPUART1外设。
关键点三,关于CoreMark信息输出的设置,CoreMark信息输出是用ee_printf函数进行,这个函数在coremark.h默认被复用为printf函数,而printf函数则被fputc进行弱类型定义,所以,大家也可以将它复用为别的信息输出手段,如LCD屏幕输出、网络Socket等等。
移植成功之后不是可以立刻跑分的,需要修改堆栈的大小,一般堆跟栈都大于0x1000就可以了:
最后,关于Optimize for time优化的问题,刚刚移植完成CoreMark工程的时候跑分非常低,只有205分,弄了两天晚上也没有头绪,.s启动文件改过,conf.h文件也改过,就是没法提高到网上预期的311分(120MHz),后面在一个偶然的机会发现了工程配置选项中有个Optimize for time的复选框,选上之后跑分立马就升到311了,据网上的解释是这个选项剔除了很多不必要的累赘定义,能大大优化编译速度,我也不太懂其中的原理,
现在放出勾选前后的对比图:
好了,上传一下工程文件和CoreMark所需的启动文件,大家也玩玩:
"移植成功之后不是可以立刻跑分的,需要修改堆栈的大小,一般堆跟栈都大于0x1000就可以了,L4+板子的FLASH大,设置大点没关系:"
纠正楼主一下,堆和栈是在RAM里面的,跟Flash(ROM)没半毛钱关系。
LSJ.Micro 发表于 2018-1-19 12:51
"移植成功之后不是可以立刻跑分的,需要修改堆栈的大小,一般堆跟栈都大于0x1000就可以了,L4+板子的FLASH ...
噢噢,谢谢提醒
页:
[1]