CoreMark评测CPU运算性能

文/ 发布于2018-09-05 浏览次数:1362

  在嵌入式领域有一个软件被看作是一种信仰,与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就可以了,L4+板子的FLASH大,设置大点没关系:

  最后,关于Optimize for time优化的问题,刚刚移植完成CoreMark工程的时候跑分非常低,只有205分,弄了两天晚上也没有头绪,.s启动文件改过,conf.h文件也改过,就是没法提高到网上预期的311分(120MHz),后面在一个偶然的机会发现了工程配置选项中有个Optimize for time的复选框,选上之后跑分立马就升到311了,据网上的解释是这个选项剔除了很多不必要的累赘定义,能大大优化编译速度。

免责声明:文章仅供学习和交流,如涉及作品版权问题需要我方删除,请联系我们,我们会在第一时间进行处理。
相关标签:
相关资讯

沪公网安备 31011502008645号