本帖最后由 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)
|
基于MM32F0140系列MCU实现CoreMark测试的2种方法,作者详尽的介绍了两种方法的操作流程,小白也能轻松上手。很不错的文章。