注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
网络孤客的个人空间 https://home.eeworld.com.cn/space-uid-311040.html [收藏] [复制] [分享] [RSS]
日志

使用CoreMark测试W806性能

已有 367 次阅读2021-12-30 10:47

我首次移植CoreMark,有不对的地方请大侠指教

参考:

给你的MCU跑个分?CoreMark性能测试与移植

学习笔记+如何将coremark程序移植到STM32上

1、下载最新CoreMark

CoreMark官网:javascript:;

代码仓库:github.com/eembc/coremark

移植只需要下图几个源文件,我没有像下图那样建立CoreMark,只是简单把所有*.c文件放Src目录中,*.h文件放Inc目录中

 2、移植

(1)由于core_main.c文件中定义了main()函数,我把这里的main()函数改名为core_main();

core_portme.h中修改关于main函数的定义,针对裸机main函数无参数,修改宏:

工程中main.c文件中调用core_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、走起

因为文章是事后归纳写的成的,可能有遗留,附上原代码供大家参考和指教:

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章