打印
[活动专区]

【AT-START-F423测评】9.用CoreMark跑个分

[复制链接]
1764|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目录

将源码根目录中的这几个文件拷贝到新建的文件夹中

barebones目录中的.c和.h也拷贝过去

将CoreMark目录中的.c文件添加至工程中,如果想使用stdio提供的printf可以不添加ee_printf.c和cvt.c

在工程配置的头文件路径中也添加这个文件夹

在core_portme.h中添加宏定义和头文件,根据你的工程配置修改编译器版本和优化级别的定义

编译器版本和优化级别这两个需要自己改成工程设置里的参数,和下面的MEM_LOCATION都是输出最后结果用的字符串,对程序本身的编译运行没影响CLOCKS_PER_SEC每一秒的计数次数,根据你设定的定时器给coremark提供的计数周期进行调整
ITERATIONS 迭代次数,因为coremark要求最少运行10秒才能得到结果,可以根据你的mcu性能增大或减少这个值,性能好的可以增大这个值,性能差的可以减少这个值以减少等待跑 分完成的时间
main.h增加定义
extern uint32_t main_ms_count;
void core_app_uart_sendbyte(uint8_t dat);
其中main_ms_count是给coremark提供时间计数的,放在定时中断函数里自增,这个值的计数周期乘以CLOCKS_PER_SEC要等于1秒
void timer6_ov()
{
    main_ms_count += 1;
}
core_app_uart_sendbyte是为coremark的打印函数提供的串口发送方法
void core_app_uart_sendbyte(uint8_t dat)
{
    while(usart_flag_get(USART1, USART_TDBE_FLAG) == RESET);
    usart_data_transmit(USART1, dat);
}
在ee_printf.c中调用串口发送方法

如果单片机内存比较小减小一下ee_printf.c中这个数组的大小,默认是1024,这里改成128测试是没问题的

在core_portme.c中barebones_clock()这个方法中返回时间计数,coremark将根据这个计数来计算跑 分时间

如果你想在原来的main函数中调用跑 分,修改core_main.c中的main函数名,新建个core_main.h,在core_main.c和自己的main文件中包含它,在原来的main函数中完成初始化和跑 分调用,另外还要修改启动文件中堆栈大小,太小的话跑不起来,太大的话又可能编译出错

编译烧录后,打开串口软件并设置正确的参数,将芯片上电后等待一会就会输出跑 分结果

如果运行时间不满10秒可以调大ITERATIONS的值,一直卡住不动调大堆栈的值再尝试
不同编译器和优化级别最后跑出的分数也会不同,可以多换几个设置试试

使用特权

评论回复
沙发
单片小菜| | 2023-11-1 10:09 | 只看该作者
雅特力还是很牛的

使用特权

评论回复
板凳
cemaj| | 2023-11-6 22:08 | 只看该作者
CoreMark有排行榜吗               

使用特权

评论回复
地板
wengh2016| | 2023-11-6 22:20 | 只看该作者
有移植coremark的教程吗?

使用特权

评论回复
5
fengm| | 2023-11-7 16:07 | 只看该作者
coremark移植怎么会跑飞程序呢  

使用特权

评论回复
6
timfordlare| | 2023-11-7 16:28 | 只看该作者
这个芯片也有排行的吗?               

使用特权

评论回复
7
tifmill| | 2023-11-7 16:50 | 只看该作者
coremark如何评价的?   

使用特权

评论回复
8
uiint| | 2023-11-7 17:29 | 只看该作者
配置正确的编译选项和优化级别。不同的编译器和优化选项可能会对性能产生影响。

使用特权

评论回复
9
louliana| | 2023-11-7 17:49 | 只看该作者
如何将CoreMark程序移植

使用特权

评论回复
10
ulystronglll| | 2023-11-7 18:35 | 只看该作者
单片机具有足够的RAM和ROM来容纳CoreMark测试所需的指令和数据?

使用特权

评论回复
11
jtracy3| | 2023-11-7 18:57 | 只看该作者
CoreMark代码在哪下载的   

使用特权

评论回复
12
yuyy1989|  楼主 | 2023-11-7 21:43 | 只看该作者
cemaj 发表于 2023-11-6 22:08
CoreMark有排行榜吗

有一个 https://www.eembc.org/coremark/scores.php

使用特权

评论回复
13
汽车电子| | 2024-2-3 15:01 | 只看该作者
对于实时性要求高的MCU,特别是控制场合,其实跑分意义不大。
整体性能涉及到整个信号链。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

146

主题

698

帖子

6

粉丝