当前位置: 首页 > news >正文

CMS32M65xx/67xx系列CoreMark跑分测试

CMS32M65xx/67xx系列CoreMark跑分测试

1、参考资料准备

1.1、STM32官方跑分链接

在这里插入图片描述
在这里插入图片描述
1.2、官网链接

  • 官方移植文档,如下所示,点击红框处-移植文档: A new whitepaper and video explain how to port CoreMark-Pro to bare-metal

在这里插入图片描述
在这里插入图片描述
1.3、测试软件git下载链接

2、代码移植

在工程中新建CoreMark文件夹,将Git下载的coremark-main文件解压,从coremark-main文件夹中拷贝文件
core_list_join.c
core_main.c
core_matrix.c
core_state.c
core_util.c
coremark.h
simple/core_portme.c(simple文件夹下)
simple/core_portme.h(simple文件夹下)

将上述文件拷贝到新建的文件夹中。
在这里插入图片描述
主要注意配置时间基数、官方以及参考都是使用系统时钟(SysTick),当然也可以使用定时器来做时基
在core_portme.c文件夹中,做以下修改#define EE_TICKS_PER_SEC (1000) 该定义与定时器时基有关。定时器设定1ms周期,配置为1000。

//#define NSECS_PER_SEC              CLOCKS_PER_SEC
//#define CORETIMETYPE               clock_t
//#define GETMYTIME(_t)              (*_t = clock())
//#define MYTIMEDIFF(fin, ini)       ((fin) - (ini))
//#define TIMER_RES_DIVIDER          1
//#define SAMPLE_TIME_IMPLEMENTATION 1
//#define EE_TICKS_PER_SEC           (NSECS_PER_SEC / TIMER_RES_DIVIDER)#include "CMS32M6510.h"
#define CORETIMETYPE               uint32_t
#define EE_TICKS_PER_SEC           (1000)   //和定时器配置相关
void
start_time(void)
{
//    GETMYTIME(&start_time_val);Time0_cnt=0;TMR_Start(TMR0);
}void
stop_time(void)
{
//    GETMYTIME(&stop_time_val);TMR_Stop(TMR0);
}CORE_TICKS
get_time(void)
{
//    CORE_TICKS elapsed
//        = (CORE_TICKS)(MYTIMEDIFF(stop_time_val, start_time_val));
//    return elapsed;CORE_TICKS elapsed	= Time0_cnt;return elapsed;
}

在core_portme.h文件夹中,做以下修改##define MAIN_HAS_NOARGC 1该定义与coremark_main函数入口参数有关。#define ITERATIONS 1000该定义根据MCU来修改,保证计算时间否则会出现Errors detected的情况。

#ifndef MAIN_HAS_NOARGC
#define MAIN_HAS_NOARGC 1
#endif#define ITERATIONS 1000

3、跑分结果

3.1、65xx跑分结果

在这里插入图片描述

3.2、67xx跑分结果

在这里插入图片描述

65xx-CoreMark跑分工程代码
67xx-CoreMark跑分工程代码

4、参考文档

参考文章1:51CTO-看看你的MCU能跑多少分?极简教程教会你测试MCU性能!
参考文章2:CSDN-CoreMark移植过程记录

相关文章:

  • 应用智能化转型—MCP原理分析
  • dvwa7——SQL Injection
  • MyBatis 的动态 SQL
  • 【Java实用工具类】手撸SqlBuilder工具类,优雅拼接动态SQL,MyBatisPlus同款风格!
  • mybatis打印完整的SQL,p6spy
  • LeetCode 高频 SQL 50 题(基础版) 之 【高级查询和连接】· 下
  • SQL思路解析:窗口滑动的应用
  • 剑指offer15_数值的整数次方
  • JavaScript性能优化实战:从核心原理到工程实践的全流程解析
  • java反序列化:CC5利用链解析
  • 【Python进阶】装饰器
  • SpringBoot接入Kimi实践记录轻松上手
  • 九(5).引用和指针的区别
  • 基于大模型的短暂性脑缺血发作(TIA)全流程预测与诊疗辅助系统详细技术方案
  • UVa12298 Super Joker II
  • 手摸手还原vue3中reactive的get陷阱以及receiver的作用
  • 使用 C++/OpenCV 制作跳动的爱心动画
  • 实验设计与分析(第6版,Montgomery著,傅珏生译) 第10章拟合回归模型10.9节思考题10.1 R语言解题
  • OSCP备战-BSides-Vancouver-2018-Workshop靶机详细步骤
  • 软考 系统架构设计师系列知识点之杂项集萃(78)