我首次移植CoreMark,有不对的地方请大侠指教
参考:
1、下载最新CoreMark
CoreMark官网:https://www.eembc.org/coremark/
代码仓库:github.com/eembc/coremark
移植只需要下图几个源文件,我没有像下图那样建立CoreMark,只是简单把所有*.c文件放Src目录中,*.h文件放Inc目录中
(1)由于core_main.c文件中定义了main()函数,我把这里的main()函数改名为core_main();
core_portme.h中修改关于main函数的定义,针对裸机main函数无参数,修改宏:
(2)在core_main.c和core_portme.c增加W806库文件引用
#include "wm_hal.h"
(3)修改平台相关宏定义,
查看编译器的设置
根据编译器的设置修改core_portme.h中编译器版本、编译选项、储存位置的宏,这个仅作为输出结果,不影响实际测试性能。
注意:COMPILER_FLAGS的值不修改会编译不通过
(4)时钟的修改
为测试最高速,在main()中设置
SystemClock_Config(CPU_CLK_240M);
查看wm_cpu.c文件,在SystemClock_Config()中已经对SysTick进行了初始化(执行了HAL_InitTick(TICK_INT_PRIORITY);)
其中TICK_INT_PRIORITY默认为1KHz。
同时定义了uint32_t HAL_GetTick(void);
W806官方把一切准备好了,只需要把SysTick与coremark对接
core_portme.c文件中修改GETMYTIME(_t)宏定义,使它直接调用W806库中HAL_GetTick()函数,注意原单位为us,而HAL_GetTick()返回的是ms,所以需要*1000
#define GETMYTIME(_t) (*_t = HAL_GetTick()*1000)
(5)结果输出,这更简单,板子上已有串口芯片,Upgrade_Tools界面就可以看到输出结果
(6)还有一个关键参数——迭代次数,在core_portme.c文件中
CoreMark要求的最短测试时间为10s,若测试时间低于10s则会报错,见下图:
我在文件中新建一个宏定义
#define ITERATIONS 6000 //定义迭代次数,修改次数使运行时间大于10s
3、走起
最终结果:573.56分
因为文章是事后归纳写的成的,可能有遗留,附上原代码供大家参考和指教:
引用: tagetage 发表于 2021-12-30 11:14 573分是一个什么水平呢,有没有常见芯片的分数对比一下。