[活动专区] 【AT-START-F423测评】9.用CoreMark跑个分

[复制链接]
2466|12
 楼主| yuyy1989 发表于 2023-10-31 20:31 | 显示全部楼层 |阅读模式
本帖最后由 yuyy1989 于 2023-10-31 20:33 编辑

#申请原创# @21小跑堂  
手机电脑在评测性能的时候总会跑 分来比较,其实单片机也可以跑 分。CoreMark是由EEMBC的Shay Gla-On于2009年提出的一项基准测试程序,CoreMark的主要目标是简化操作,并提供一套测试单核处理器核心的方法。测试标准是在配置参数的组合下单位时间内运行的CoreMark程序次数(单位:CoreMark/MHz),该数字值越大则说明测试的性能越好,在https://github.com/eembc/coremark可以下载源码
在工程文件夹下建立CoreMark目录
QQ截图20231031201902.png
将源码根目录中的这几个文件拷贝到新建的文件夹中
QQ截图20231031201118.png
barebones目录中的.c和.h也拷贝过去
QQ截图20231031202002.png
将CoreMark目录中的.c文件添加至工程中,如果想使用stdio提供的printf可以不添加ee_printf.c和cvt.c
QQ截图20231031202044.png
在工程配置的头文件路径中也添加这个文件夹
QQ截图20231031202133.png
在core_portme.h中添加宏定义和头文件,根据你的工程配置修改编译器版本和优化级别的定义
QQ截图20231031201050.png
编译器版本和优化级别这两个需要自己改成工程设置里的参数,和下面的MEM_LOCATION都是输出最后结果用的字符串,对程序本身的编译运行没影响CLOCKS_PER_SEC每一秒的计数次数,根据你设定的定时器给coremark提供的计数周期进行调整
ITERATIONS 迭代次数,因为coremark要求最少运行10秒才能得到结果,可以根据你的mcu性能增大或减少这个值,性能好的可以增大这个值,性能差的可以减少这个值以减少等待跑 分完成的时间
main.h增加定义
  1. extern uint32_t main_ms_count;
  2. void core_app_uart_sendbyte(uint8_t dat);
其中main_ms_count是给coremark提供时间计数的,放在定时中断函数里自增,这个值的计数周期乘以CLOCKS_PER_SEC要等于1秒
  1. void timer6_ov()
  2. {
  3.     main_ms_count += 1;
  4. }
core_app_uart_sendbyte是为coremark的打印函数提供的串口发送方法
  1. void core_app_uart_sendbyte(uint8_t dat)
  2. {
  3.     while(usart_flag_get(USART1, USART_TDBE_FLAG) == RESET);
  4.     usart_data_transmit(USART1, dat);
  5. }
在ee_printf.c中调用串口发送方法
QQ截图20231031202516.png
如果单片机内存比较小减小一下ee_printf.c中这个数组的大小,默认是1024,这里改成128测试是没问题的
QQ截图20231031202552.png
在core_portme.c中barebones_clock()这个方法中返回时间计数,coremark将根据这个计数来计算跑 分时间
QQ截图20231031202706.png
如果你想在原来的main函数中调用跑 分,修改core_main.c中的main函数名,新建个core_main.h,在core_main.c和自己的main文件中包含它,在原来的main函数中完成初始化和跑 分调用,另外还要修改启动文件中堆栈大小,太小的话跑不起来,太大的话又可能编译出错
QQ截图20231031202827.png
编译烧录后,打开串口软件并设置正确的参数,将芯片上电后等待一会就会输出跑 分结果
QQ截图20231031200718.png
如果运行时间不满10秒可以调大ITERATIONS的值,一直卡住不动调大堆栈的值再尝试
不同编译器和优化级别最后跑出的分数也会不同,可以多换几个设置试试
单片小菜 发表于 2023-11-1 10:09 | 显示全部楼层
雅特力还是很牛的
cemaj 发表于 2023-11-6 22:08 | 显示全部楼层
CoreMark有排行榜吗               
wengh2016 发表于 2023-11-6 22:20 | 显示全部楼层
有移植coremark的教程吗?
fengm 发表于 2023-11-7 16:07 | 显示全部楼层
coremark移植怎么会跑飞程序呢  
timfordlare 发表于 2023-11-7 16:28 | 显示全部楼层
这个芯片也有排行的吗?               
tifmill 发表于 2023-11-7 16:50 | 显示全部楼层
coremark如何评价的?   
uiint 发表于 2023-11-7 17:29 | 显示全部楼层
配置正确的编译选项和优化级别。不同的编译器和优化选项可能会对性能产生影响。
louliana 发表于 2023-11-7 17:49 | 显示全部楼层
如何将CoreMark程序移植
ulystronglll 发表于 2023-11-7 18:35 | 显示全部楼层
单片机具有足够的RAM和ROM来容纳CoreMark测试所需的指令和数据?
jtracy3 发表于 2023-11-7 18:57 | 显示全部楼层
CoreMark代码在哪下载的   
 楼主| yuyy1989 发表于 2023-11-7 21:43 | 显示全部楼层
cemaj 发表于 2023-11-6 22:08
CoreMark有排行榜吗

有一个 https://www.eembc.org/coremark/scores.php
汽车电子 发表于 2024-2-3 15:01 | 显示全部楼层
对于实时性要求高的MCU,特别是控制场合,其实跑分意义不大。
整体性能涉及到整个信号链。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:同飞软件研发工程师
简介:制冷系统单片机软件开发,使用PID控制温度

168

主题

826

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部