chen00000009 发表于 2017-4-29 11:04:15

【NUCLEO-L496ZG评测】coremark评分与功耗测试

本帖最后由 chen00000009 于 2017-4-29 11:14 编辑

5.coremark评分与功耗测试
CoreMark是用来衡量嵌入式系统中中心处理单元(CPU,或叫做微控制器MCU)性能的标准。该标准于2009年由EEMBC组织提出。代码使用C语言写成,包含如下的运算法则:列举(寻找并排序),数学矩阵操作(普通矩阵运算)和状态机(用来确定输入流中是否包含有效数字),最后还包括CRC(循环冗余校验)。
STM32L496作为ST公司低功耗微控制器系列产品,因此,除了性能,更需要关注功耗。笔者将在coremark跑分的同时测试其功耗。具体方法是移除JP6上面的跳线帽(JP6位置如下图所示),然后将电流表接在两个脚上面,测试电流值。

STM32使用coremark的具体方法请参考附件中的文档,这里只简单介绍一下:
1、获取coremark的测试程序,下载地址为www.coremark.org ;
2、下载完之后解压,在文件夹中得到如下几个文件

3、按照第四部分的介绍,再次生成一个CubeMX的工程,这里不需要再使用LED的GPIO口,仅需要使能LPUART1.
4、按照下图的要求,将上述的几个文件移到目标文件夹

5、添加文件到工程。如下图所示


6、添加include路径。在Options->C/C++ Compiler->Preprocessor下增加include路径\Src\Coremark,如下图所示

7、将原有的main.c文件中的main函数改为main_init函数,同时删掉里面的while(1)部分的代码。
8、在Core_portme.c中的portable_init里面加一句main_init();,如下图所示

9、计时相关代码的修改方法,请参考后面的参考文档
10、修改优化等级。Keil中的优化等级配置如下图所示


11、编译,无误后下载到开发板。注意下载需要全芯片擦除,配置如下,注意Flash区的配置要正确,STM32F496中的Flash大小为1MB。

最后测试的结果如下图所示,为209分

这个Keil中coremark的跑分普遍只有宣传值的80%左右,笔者测试过多款IC都是如此。因此,这里事实上的跑分应该是261分左右,与宣传的273分很接近。
下面再看看跑分时的功耗。由于这里除了MCU之外还有一些外设,因此,可以将时钟分别设置为70MHz和80MHz进行对比,得出每MHz的功耗。
测试的方法是,将JP6上面的跳线帽移除,用电流表接在JP6上面,如下图所示
在80MHz时,在JP6之上的电流为15.4mA。



在70MHz时,测试的结果为182.9分,确实是209*(7/8)的结果




      而在70Mhz时,测试的功耗为14mA,说明相差10Mhz,JP6上面的电流相差1.4mA。这个数值与宣传值的108uA/MHz有一定差距。






pythonworld 发表于 2017-5-1 06:27:43

谢谢分享!!!
页: [1]
查看完整版本: 【NUCLEO-L496ZG评测】coremark评分与功耗测试