> 文档中心 > 【MM32F5270开发板试用】CoreMark程序移植

【MM32F5270开发板试用】CoreMark程序移植


本篇文章来自极术社区与灵动组织的MM32F5270开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:心梦

前言

CoreMark是一项测试处理器性能的基准测试。代码使用C语言写成,包含:列举,数学矩阵操作和状态及CRC等运算法则。目前CoreMark已迅速成为测量与比较处理器性能的业界标准基准测试。CoreMark的得分越高,意味着性能更高。在CoreMark的官网上可以大家可以看到各家处理器型号的CoreMark得分。也可以从CoreMark的官网上下载测试代码,亲自测一下自己手中的片子的性能。CoreMark官网的连接地址:http://www.eembc.org/coremark…。本文将一步步来介绍如何将下载的CoreMark测试代码移植到MM32F5270开发板上进行测试。

移植前准备

在正式移植之前需要准备一个具有uart打印功能和1ms中断周期的定时器(使用systick也可以)。
我这里已经准备好了,并且也对uart进行了printf重定向。

下载CoreMark源代码

CoreMark源代码可以点击上面的链接进入下载:

【MM32F5270开发板试用】CoreMark程序移植

开始移植

  1. 提取CoreMark源代码并添加工程
    下载好的源代码有很多文件和文件夹,但是我们需要的只有很少的几个文件,如下:

【MM32F5270开发板试用】CoreMark程序移植

其中simple文件夹下面有两个文件需要用到。
所有需要的文件整理如下:
core_list_join.c
core_main.c
core_matrix.c
core_state.c
core_util.c
coremark.h
simple/core_portme.c
simple/core_portme.h
将如上几个文件添加到工程中,其中core_portme.c和core_portme.h是需要进行修改的文件,我就放在app文件夹下,另外几个文件不需要做修改,就放在coremark文件夹下,同时工程配置中添加文件夹路径,配置好的工程如下:

【MM32F5270开发板试用】CoreMark程序移植

  1. 配置CoreMark文件
    我们已经添加了所有需要的文件,但现在程序还是不能正常运行,需要进行一些代码改造。
  • 添加硬件初始化代码

因为core_main.c里面有了一个main函数,所有我们要把我们工程自己的main函数删除,只保留一个main函数,同时需要把硬件初始化代码移到core_main.c的main函数里面去。main函数会先调用portable_init函数来进行相关的初始化,所有我们可以将硬件初始化代码放在portable_init函数的最开始,如下:

【MM32F5270开发板试用】CoreMark程序移植

【MM32F5270开发板试用】CoreMark程序移植

  • 修改计时相关代码
    start_time/ stop_time/ get_time这几个函数,是coremark程序运行时计算程序运行时间所用。我这里使用TIM1进行计时,中断周期为1ms,重写start_time/ stop_time/ get_time这几个函数。
voidstart_time(void){    //GETMYTIME(&start_time_val);    coremark_cnt_clear();    TIM_ClearCounterValue((TIM_Type *)TIM1);    TIM_Start((TIM_Type *)TIM1);}voidstop_time(void){    //GETMYTIME(&stop_time_val);    TIM_Stop((TIM_Type *)TIM1)}CORE_TICKSget_time(void){    CORE_TICKS elapsed = (CORE_TICKS)get_cormark_cnt();    return elapsed;}
  • 注释掉不用的宏

【MM32F5270开发板试用】CoreMark程序移植

  1. CoreMark运行配置
  • 设置迭代次数

CoreMark要求程序运行的最短时间至少是10s, 根据使用的系统时钟等情况,可以在Core_portme.h中修改迭代次数。

//增加迭代次数    #define ITERATIONS 12000
  • 设置打印信息
    根据具体所用的编译器版本,优化配置进行修改。

【MM32F5270开发板试用】CoreMark程序移植

    • 设置优化等级

【MM32F5270开发板试用】CoreMark程序移植

运行结果

程序已经完全配置好,并编译成功。
现在我们连接MM32F5270开发板,打开串口调试助手,看看运行结果。

【MM32F5270开发板试用】CoreMark程序移植

每秒运行了400次,比官方提供的coremark数据要高一点,可能与编译器和优化等级有一些关系。

官方跑出来的数据如下:

Profile generation run parameters for coremark.
CoreMark Size : 400
Total ticks : 38377
Total time (secs): 38.377000
Iterations/Sec : 312.687287
Iterations : 12000
Compiler version : GCC 10.3.1
Compiler flags : -0hs -no_size_constraints
Memory location : STACK
seedcrc : 0x4eaf
[0]crclist : 0x6a79
[0]crcmatrix : 0x5608
[0]crcstate : 0xe5a4
[0]crcfinal : 0x8d4c
Correct operation validated. See README.md for run and reporting rules.
done.