一 简介
Coremark是一个综合性的基准测试程序,正如其名称所表示的, CoreMark测试是一个简单而又复杂的基准测试程序,是专门用来测试处理器核心性能的。通过执行常用于应用程序中的简单代码(基本的数据结构和算法)来测试cpu性能。结果是计算每秒钟主程序的迭代次数。
CoreMark测试是最大程度抛弃了程序对系统的依赖,不依赖于系统库函数,对编译器依赖也比较小,因此对于不同平台(如大小尾数,高端或低端处理器),其结果有较好的参考价值。运行 CoreMark测试产生一个简单分数,使用户能够快速比较不同处理器的性能。
CoreMark测试是读/写操作、整数操作和状态机控制等操作混合而成,其代码较小并易于理解。和其他 EEMBC基准测试项目不同, coremark不是某一实际的应用测试,但其实际工作内容,都是一些嵌入式系统中常用的算法,包括矩阵操作、链表操作、状态机操作和CRC算法等。
下载coremark
http://www.eembc.org/coremark/index.php
二 操作步骤
2.1之前的printf工程基础上添加
导入COREMARK C文件到工程
2.2添加路径
2.3修改堆栈大小,不然肯定不够COREMARK消耗
2.4修改部分参数
1加入PTIM的定时配置
之前用ST的一般用SYSTEMTICK的,用PTIMER也是一样
static void PTIMER_peripheral_init(void)
{
PTIM_InitTypeDef init;
/* init structure */
PTIM_StructInit(&init);
// clk = 100MHz / (99 + 1) = 1MHz 100MHZ/(49999+1) = 2khz
init.prescaler = 49999;
/* set period to the maximun*/
init.period = 0xffffffffffffffff;
/* set one shot mode */
init.workMode = PTIM_WORK_ONESHOT;
/* set load mode */
init.loadMode = PTIM_LOAD_IMMEDIATELY;
/* init PIT3 */
PTIM_Init(PIT3, &init);
/* start timer count */
PTIM_Enable(PIT3);
}
GETMYTIME改为PIT3的计数值获取
2 portable_init函数里加入初始化
开启Cache
SCB_EnableICache();
SCB_EnableDCache();
CRG_SYSCNT_ClockSrcSel(CRG_CLKSRC_SYSCNT_XO25M);
SYSCNT_Init();
PTIMER_peripheral_init();
UART0_printf_init();
3至少配置10S以上
#define ITERATIONS 12000
4#ifndef COMPILER_FLAGS
#define COMPILER_FLAGS "-LTO -Omax"
三 测试结果
200MHZ的COREMARK跑分1000分,分数还不错了对比ST的F7主频216M也大差不差了1082的分值
ET6000跑分结果
看了下这时候是200MHZ典型频率情况下的跑分
改成300MHZ主频试试看
看了下300MHZ下PITIMER频率还下降了只有75M APB1,200MHz的时候有100M
于是开始修改PTIMER分频系数,保证NPERSEC为1S
运行出来出错,时间不够10S?
这里我有点想不明白,我设置的是1S,理论上肯定够了Iterations
除非这个PTIMER值不对
只能修改Iterartions到15000
最高跑到了1498的值
我非常支持国产芯片,希望大家都能踊跃购买国产芯片
引用: humancat01 发表于 2024-11-3 17:04 我非常支持国产芯片,希望大家都能踊跃购买国产芯片
对 支持国产芯片 国产芯片现在挺好用的
引用: nmg 发表于 2024-11-8 17:36 这个是不是也是它单核M7的成绩?
是的 单核的成绩 回头研究下双核怎么来测评