2697|3

7228

帖子

195

TA的资源

五彩晶圆(高级)

楼主
 

【STM32H5开发板】第八篇 CoreMark移植详细分享及跑分低问题解决 [复制链接]

前言:

Coremark是一个综合性的基准测试程序,正如其名称所表示的, CoreMark测试是一个简单而又复杂的基准测试程序,是专门用来测试处理器核心性能的。通过执行常用于应用程序中的简单代码(基本的数据结构和算法)来测试cpu性能。结果是计算每秒钟主程序的迭代次数。

CoreMark测试是最大程度抛弃了程序对系统的依赖,不依赖于系统库函数,对编译器依赖也比较小,因此对于不同平台(如大小尾数,高端或低端处理器),其结果有较好的参考价值。运行 CoreMark测试产生一个简单分数,使用户能够快速比较不同处理器的性能。

 

CoreMark测试是读/写操作、整数操作和状态机控制等操作混合而成,其代码较小并易于理解。和其他 EEMBC基准测试项目不同, coremark不是某一实际的应用测试,但其实际工作内容,都是一些嵌入式系统中常用的算法,包括矩阵操作、链表操作、状态机操作和CRC算法等。

 

不说废话,开始移植coremark

 

一下载coremark

http://www.eembc.org/coremark/index.php

这个网站不仅可以下载源码,还能查看所有型号的跑分情况和跑分的环境

 

 

二创建printf工程

之前一讲已经详细介绍了创建这个printf工程

https://bbs.eeworld.com.cn/thread-1243147-1-1.html

 

三工程中添加coremark代码

创建CoreMark Group,添加所有的C文件

 

添加头文件路径

 

 

四修改堆栈大小

 

 

 

 

 

 

五配置CoreMark

(1)修改portable_init函数

修改前

 

 

修改后

添加各种初始化函数

 

 

(2)把SystemClock_Config, MX_USART1_UART_Init 和 MX_GPIO_Init 函数拷贝到core_portme.c, 并添将加 printf 重定向的代码。

这个比较简单,都是之前Printf工程里的代码复制过来就可以了

 

(3) core_portme.c文件里添加声明和变量定义

添加头文件

 

 

 

(4)修改计时相关代码

1.添加ITERATIONS定义

#define ITERATIONS 12000///at least 10s

 

2.添加FLAGS的定义,编译器优化等级

 

 

#ifndef COMPILER_FLAGS

#define COMPILER_FLAGS "-O3" /* "Please put compiler flags here (e.g. -o3)" */

 

3.时间计时处理修改

修改前

 

修改后

 

 

编译下载

 

失败了不知道哪里出了问题

 

去COREMARK官网看了STM32H5跑分的要求

 

 

 

DCACHE、ICACHE都开了,分数依旧只有这么多

 

 

发现俩个问题

1预取指没有开

#define  PREFETCH_ENABLE            1U    

开了之后发现跑分依旧没有变化

 

2优化器重新配置一下,使用LTO加—Omax参数

#ifndef COMPILER_FLAGS

#define COMPILER_FLAGS "-Omax" /* "Please put compiler flags here (e.g. -o3)" */

 

 

配置完成,下载测试

 

 

 

985分,可以基本接近官方的1000分了,移植完毕

STM32H5 CoreMark跑分移植记录笔记.pdf (629.03 KB, 下载次数: 18)

此帖出自stm32/stm8论坛

最新回复

用keil的吗?你可以用keil的6.16的编译链版本试试,也许分数能再高点  详情 回复 发表于 2023-7-29 09:09
点赞 关注
 

回复
举报

6838

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

CoreMark移植后跑分低,最后优化器重新配置一下,使用LTO加—Omax参数,问题解决

谢谢分享啊

此帖出自stm32/stm8论坛

点评

目前看来应该是这样  解决了COREMARK跑分低的问题  详情 回复 发表于 2023-5-29 18:53
 
 

回复

7228

帖子

195

TA的资源

五彩晶圆(高级)

板凳
 
Jacktang 发表于 2023-5-29 08:44 CoreMark移植后跑分低,最后优化器重新配置一下,使用LTO加—Omax参数,问题解决 谢谢分享啊

目前看来应该是这样  解决了COREMARK跑分低的问题

此帖出自stm32/stm8论坛
 
 

回复

294

帖子

0

TA的资源

一粒金砂(高级)

4
 
用keil的吗?你可以用keil的6.16的编译链版本试试,也许分数能再高点
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表