发新帖本帖赏金 100.00元(功能说明)我要提问
返回列表
打印
[MM32软件]

基于MM32F0140系列MCU实现CoreMark测试的2种方法

[复制链接]
1194|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 xld0932 于 2025-3-19 11:13 编辑

#申请原创#   @21小跑堂

1.简述
CoreMark是由EEMBC(Embedded Microprocessor Benchmark Consortium)提出的一项基准测试程序,旨在简化操作并提供一种测试单核处理器核心性能的方法。它使用C语言编写,包含四类运算法则:数学矩阵操作、列举、状态机和CRC(循环冗余校验),这些操作在真实的嵌入式应用中非常常见。CoreMark是衡量中央处理器 (CPU) 和嵌入式微处理器 (MCU) 性能的行业标准基准。

2.通过官网获取CoreMark
2.1.打开EEMBC官方(www.eembc.org),然后点击Benchmarks


2.2.在EEMBC Benchmarks界面找到CoreMark,点击跳转


2.3.在CoreMark界面点击Download,点击跳转


2.4.在Download界面点击GitHub,点击跳转


2.5.在GitHub界面点击Code,选择Download ZIP,进行下载


2.6.下载完成的CoreMark源代码如下所示


3.移植CoreMark到MM32F0140代码工程
3.1.打开MM32F0140的GPIO_LED_Toggle软件工程


3.2.点击工具栏File Extension,Books and Environment...


3.3.在弹出的Manage Project Items窗口中,添加CoreMark Group,在CoreMark Group中添加CoreMark源码和sample文件夹中的core_portme.c文件


3.4.添加完成代码如下所示


3.5.点击工具栏Options for Target...


3.6.在弹出的Option for Target 'GPIO_LED_Toggle'窗口的C/C++选项卡中点击Include Paths后面的...


3.7.在弹出的Folder Setup中添加CoreMark需要包含的头文件路径


3.8.在GPIO_LED_Toggle工程界面,展开APP Group,右击main.c,选择Option for File 'main.c'


3.9.在弹出的Options for File 'main.c'窗口,将Include in Target Build选项勾选去掉


3.10.Include in Target Build选项勾选去掉后如下所示


3.11.在STARTUP Group中,修改startup_mm32f0140_keil.s文件中的堆和栈的大小


3.12.在core_portme.c中,将seed4_volatile的赋值由ITERATIONS修改为5000


3.13.在mm32f0140_it.c中,结合SysTick实现clock的功能


3.14.在core_portme.c中,将NSECS_PRE_SEC修改为1000


3.15.core_portme.c中,在portable_init函数中添加初始化


4.测试CoreMark性能
4.1.优化等级为o0时的CoreMark测试


4.2.优化等级为o1时的CoreMark测试


4.3.优化等级为o2时的CoreMark测试


4.4.优化等级为o3时的CoreMark测试


4.5.优化等级为ofast时的CoreMark测试


4.6.优化等级为os balanced时的CoreMark测试


4.7.优化等级为oz image size时的CoreMark测试


5.通过官网获取perf_counter
5.1.打开perf_counter官方(www.github.com/GorgonMeducer/perf_counter)


5.2.在GitHub界面点击Code,选择Download ZIP,进行下载


5.3.下载完成的perf_counter源代码如下所示



6.安装perf_counter
6.1.打开perf_counter文件夹下的cmsis-pack文件夹


6.2.双击GorgonMeducer.perf_counter.2.4.0.pack,进行安装


7.使用perf_counter部署CoreMark
7.1.打开MM32F0140的GPIO_LED_Toggle工程


7.2.点击工具栏上的Manage Run-Time Enviroment


7.3.在弹出的Manage Run-Time Enviroment窗口中,勾选CMSIS组中的CORE、Utilities\perf_counter组中的Benchmark和Core,然后点击OK


7.4.此时运行环境就在GPIO_LED_Toggle工程添加完成了


7.5.在STARTUP Group中,修改startup_mm32f0140_keil.s文件中的堆和栈的大小


7.6.在APP Group,在main.c文件中的main函数中,添加coremark_main调用函数


8.通过perf_counter测试CoreMark性能


9.附件
9.1.CoreMark源码: coremark-main.zip (475.49 KB)
9.2.基于MM32F0140移植的CoreMark工程: CoreMark_LibSamples_MM32F0140_V1.4.8.zip (717.19 KB)
9.3.perf_counter源码: perf_counter-CMSIS-Pack.zip (1.67 MB)
9.4.基于MM32F0140移植的perf_counter工程: perf_counter_LibSamples_MM32F0140_V1.4.8.zip (708.91 KB)

使用特权

评论回复

打赏榜单

21小跑堂 打赏了 100.00 元 2025-03-21
理由:恭喜通过原创审核!期待您更多的原创作品~~

评论
21小跑堂 2025-3-21 11:15 回复TA
基于MM32F0140系列MCU实现CoreMark测试的2种方法,作者详尽的介绍了两种方法的操作流程,小白也能轻松上手。很不错的文章。 
沙发
xld0932|  楼主 | 2025-3-19 11:15 | 只看该作者
有一点需要注意的,官网上下载的最新的perf_counter只支持AC5的编译器环境,不支持AC6

使用特权

评论回复
板凳
WoodData| | 2025-3-20 09:08 | 只看该作者
xld0932 发表于 2025-3-19 11:15
有一点需要注意的,官网上下载的最新的perf_counter只支持AC5的编译器环境,不支持AC6 ...

支持AC6的。

使用特权

评论回复
地板
xld0932|  楼主 | 2025-3-20 09:56 | 只看该作者

我用MDK-Arm 5.39自带的AC6,编译后有很多错误,换了AC5编译就通过了,是perf_counter哪边需要设置/配置一下吗?

使用特权

评论回复
5
WoodData| | 2025-3-20 11:06 | 只看该作者
xld0932 发表于 2025-3-20 09:56
我用MDK-Arm 5.39自带的AC6,编译后有很多错误,换了AC5编译就通过了,是perf_counter哪边需要 ...

你没看下是啥错误嘛,可能是你其他代码不支持AC6.不是perf_counter的问题。

使用特权

评论回复
6
xld0932|  楼主 | 2025-3-20 11:49 | 只看该作者
WoodData 发表于 2025-3-20 11:06
你没看下是啥错误嘛,可能是你其他代码不支持AC6.不是perf_counter的问题。

代码支持AC6的,你看我帖子上,第一种自己移植的CoreMark就是用AC6编译的;第二种perf_counter编译不通过才用AC5的

使用特权

评论回复
7
WoodData| | 2025-3-22 11:08 | 只看该作者
xld0932 发表于 2025-3-20 11:49
代码支持AC6的,你看我帖子上,第一种自己移植的CoreMark就是用AC6编译的;第二种perf_counter编译不通过 ...

我一直都用AC6编译的perf_counter,没问题的。你估计要好好检查一下是哪里问题

使用特权

评论回复
8
xld0932|  楼主 | 2025-3-24 09:01 | 只看该作者
WoodData 发表于 2025-3-22 11:08
我一直都用AC6编译的perf_counter,没问题的。你估计要好好检查一下是哪里问题 ...

编译结果和配置帖上来了,能看出是啥问题吗?




使用特权

评论回复
发新帖 本帖赏金 100.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:上海灵动微电子股份有限公司资深现场应用工程师
简介:诚信·承诺·创新·合作

76

主题

3022

帖子

37

粉丝