常见泽1 发表于 2024-11-3 15:55

【翌创ETEB-6001DPX测评】第三篇 最大工作频率300MHz CoreMark跑分多少分?

<p><span style="font-family:宋体;"><b>一<b> </b>简介</b></span></p>

<p ><span style="font-family:宋体;">Coremark是一个综合性的基准测试程序,正如其名称所表示的, CoreMark测试是一个简单而又复杂的基准测试程序,是专门用来测试处理器核心性能的。通过执行常用于应用程序中的简单代码(基本的数据结构和算法)来测试cpu性能。结果是计算每秒钟主程序的迭代次数。</span></p>

<p >&nbsp;</p>

<p ><span style="font-family:宋体;">CoreMark测试是最大程度抛弃了程序对系统的依赖,不依赖于系统库函数,对编译器依赖也比较小,因此对于不同平台(如大小尾数,高端或低端处理器),其结果有较好的参考价值。运行 CoreMark测试产生一个简单分数,使用户能够快速比较不同处理器的性能。</span></p>

<p >&nbsp;</p>

<p ><span style="font-family:宋体;">CoreMark测试是读/写操作、整数操作和状态机控制等操作混合而成,其代码较小并易于理解。和其他 EEMBC基准测试项目不同, coremark不是某一实际的应用测试,但其实际工作内容,都是一些嵌入式系统中常用的算法,包括矩阵操作、链表操作、状态机操作和CRC算法等。</span></p>

<p ><span style="font-family:宋体;">下载coremark</span></p>

<p ><span style="font-family:宋体;"><a href="http://www.eembc.org/coremark/index.php" target="_blank">http://www.eembc.org/coremark/index.php</a></span></p>

<p >&nbsp;</p>

<p ><span style="font-family:宋体;"><b>二<b> </b>操作步骤</b></span></p>

<p >&nbsp;</p>

<p ><span style="font-family:宋体;">2.1之前的printf工程基础上添加</span></p>

<p ><span style="font-family:宋体;">导入COREMARK C文件到工程</span></p>

<p ><span style="font-family:宋体;"> &nbsp;</span></p>

<p ><span style="font-family:宋体;">2.2添加路径</span></p>

<p ><span style="font-family:宋体;"> &nbsp;</span></p>

<p ><span style="font-family:宋体;">2.3修改堆栈大小,不然肯定不够COREMARK消耗</span></p>

<p >&nbsp;</p>

<p ><span style="font-family:宋体;"></span></p>

<p ><span style="font-family:宋体;">2.4修改部分参数</span></p>

<p ><span style="font-family:宋体;"><b>1加入</b><b>PTIM的定时配置</b></span></p>

<p ><span style="font-family:宋体;">之前用ST的一般用SYSTEMTICK的,用PTIMER也是一样</span></p>

<p ><span style="font-family:宋体;">static void PTIMER_peripheral_init(void)</span></p>

<p ><span style="font-family:宋体;">{</span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp;&nbsp; PTIM_InitTypeDef init;</span></p>

<p >&nbsp;</p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp;&nbsp; /* init structure */</span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp;&nbsp; PTIM_StructInit(&amp;init);</span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp;&nbsp; // clk = 100MHz / (99 + 1) = 1MHz&nbsp; 100MHZ/(49999+1) = 2khz</span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp;&nbsp; init.prescaler = 49999;</span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp;&nbsp; /* set period to the maximun*/</span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp;&nbsp; init.period = 0xffffffffffffffff;</span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp;&nbsp; /* set one shot mode */</span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp;&nbsp; init.workMode = PTIM_WORK_ONESHOT;</span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp;&nbsp; /* set load mode */</span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp;&nbsp; init.loadMode = PTIM_LOAD_IMMEDIATELY;</span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp;&nbsp; /* init PIT3 */</span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp;&nbsp; PTIM_Init(PIT3, &amp;init);</span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp;&nbsp; /* start timer count */</span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp;&nbsp; PTIM_Enable(PIT3);</span></p>

<p ><span style="font-family:宋体;">}</span></p>

<p ><span style="font-family:宋体;"> &nbsp;</span></p>

<p ><span style="font-family:宋体;">GETMYTIME改为PIT3的计数值获取</span></p>

<p >&nbsp;</p>

<p ><span style="font-family:宋体;"><b>2 portable_init函数里加入初始化</b></span></p>

<p ><span style="font-family:宋体;">&nbsp;开启Cache</span></p>

<p ><span style="font-family:宋体;">SCB_EnableICache();</span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp; SCB_EnableDCache();</span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp; CRG_SYSCNT_ClockSrcSel(CRG_CLKSRC_SYSCNT_XO25M);</span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp; SYSCNT_Init();</span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp; PTIMER_peripheral_init();</span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp; UART0_printf_init();</span></p>

<p >&nbsp;</p>

<p ><span style="font-family:宋体;"><b>3至少配置</b><b>10S以上</b></span></p>

<p ><span style="font-family:宋体;"><b>#define ITERATIONS 12000</b></span></p>

<p >&nbsp;</p>

<p ><span style="font-family:宋体;"><b>4#ifndef COMPILER_FLAGS</b></span></p>

<p ><span style="font-family:宋体;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #define COMPILER_FLAGS&nbsp; &quot;-LTO -Omax&quot;</span></p>

<p ><span style="font-family:宋体;"> &nbsp;</span></p>

<p >&nbsp;</p>

<p ><span style="font-family:宋体;"><b>三<b> </b>测试结果</b></span></p>

<p ><span style="font-family:宋体;">200MHZ的COREMARK跑分1000分,分数还不错了对比ST的F7主频216M也大差不差了1082的分值</span></p>

<p ><span style="font-family:宋体;"> &nbsp;</span></p>

<p ><span style="font-family:Times;">ET6000跑分结果</span></p>

<p ><span style="font-family:宋体;"> &nbsp;</span></p>

<p >&nbsp;</p>

<p ><span style="font-family:宋体;">看了下这时候是200MHZ典型频率情况下的跑分</span></p>

<p ><span style="font-family:宋体;">改成300MHZ主频试试看</span></p>

<p ><span style="font-family:宋体;">看了下300MHZ下PITIMER频率还下降了只有75M APB1,200MHz的时候有100M</span></p>

<p ><span style="font-family:宋体;"> &nbsp;</span></p>

<p >&nbsp;</p>

<p ><span style="font-family:宋体;">于是开始修改PTIMER分频系数,保证NPERSEC为1S</span></p>

<p ><span style="font-family:宋体;">运行出来出错,时间不够10S?</span></p>

<p ><span style="font-family:宋体;">这里我有点想不明白,我设置的是1S,理论上肯定够了Iterations</span></p>

<p ><span style="font-family:宋体;">除非这个PTIMER值不对</span></p>

<p >&nbsp;</p>

<p ><span style="font-family:宋体;"> &nbsp;</span></p>

<p ><span style="font-family:宋体;">只能修改Iterartions到15000</span></p>

<p >&nbsp;</p>

<p ><span style="font-family:宋体;">最高跑到了<b>1498</b>的值</span></p>

<p ><span style="font-family:宋体;"> &nbsp;</span></p>

humancat01 发表于 2024-11-3 17:04

<p>我非常支持国产芯片,希望大家都能踊跃购买国产芯片</p>

nmg 发表于 2024-11-8 17:36

<p>这个是不是也是它单核M7的成绩?</p>

常见泽1 发表于 2024-11-10 13:39

humancat01 发表于 2024-11-3 17:04
我非常支持国产芯片,希望大家都能踊跃购买国产芯片

<p>对 支持国产芯片 国产芯片现在挺好用的</p>

常见泽1 发表于 2024-11-10 13:39

nmg 发表于 2024-11-8 17:36
这个是不是也是它单核M7的成绩?

<p>是的 单核的成绩 回头研究下双核怎么来测评</p>
页: [1]
查看完整版本: 【翌创ETEB-6001DPX测评】第三篇 最大工作频率300MHz CoreMark跑分多少分?