【NUCLEO-H743ZI】2、coremark跑分测试串口打印结果
<div align="left" style="--tw-border-spacing-x:0; --tw-border-spacing-y:0">CoreMark是用来衡量嵌入式系统中中心处理单元(CPU,或叫做微控制器MCU)性能的标准。该标准于2009年由EEMBC组织的Shay Gla-On提出,并且试图将其发展成为工业标准,从而代替陈旧的Dhrystone标准。代码使用C语言写成,包含如下的运算法则:列举(寻找并排序),数学矩阵操作(普通矩阵运算)和状态机(用来确定输入流中是否包含有效数字),最后还包括CRC(循环冗余校验)。目前CoreMark已迅速成为测量与比较处理器性能的业界标准基准测试。</div><div align="left" style="--tw-border-spacing-x:0; --tw-border-spacing-y:0"><strong style="--tw-border-spacing-x:0; --tw-border-spacing-y:0; --tw-translate-x:0; --tw-translate-y:0; --tw-rotate:0; --tw-skew-x:0; --tw-skew-y:0; --tw-scale-x:1; --tw-scale-y:1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness:proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-color:#ffffff; --tw-ring-color:rgb(59 130 246 / .5); --tw-ring-offset-shadow:0 0 #0000; --tw-ring-shadow:0 0 #0000; --tw-shadow:0 0 #0000; --tw-shadow-colored:0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; overflow-wrap:break-word">CoreMark的得分越高,意味着性能更高。</strong></div>
<div align="left" style="--tw-border-spacing-x:0; --tw-border-spacing-y:0"><strong style="--tw-border-spacing-x:0; --tw-border-spacing-y:0; --tw-translate-x:0; --tw-translate-y:0; --tw-rotate:0; --tw-skew-x:0; --tw-skew-y:0; --tw-scale-x:1; --tw-scale-y:1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness:proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-color:#ffffff; --tw-ring-color:rgb(59 130 246 / .5); --tw-ring-offset-shadow:0 0 #0000; --tw-ring-shadow:0 0 #0000; --tw-shadow:0 0 #0000; --tw-shadow-colored:0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; overflow-wrap:break-word">官方数据跑分为2424:</strong></div>
<div align="left" style="--tw-border-spacing-x:0; --tw-border-spacing-y:0">
<div style="text-align: center;"></div>
<p> </p>
<p>从CoreMark的官网上下载测试代码移植到自己的MCU上,亲自测试性能。</p>
<p>CoreMark官网下载地址地址:<a href="http://www.eembc.org/coremark/index.php" target="_blank">https://www.eembc.org/coremark/download.php</a></p>
<p>我这里下载的为<strong>coremark_v1.0.1zip</strong>。</p>
<p>在STM32中文官网<a href="http://www.stmcu.com.cn/" style="--tw-border-spacing-x:0; --tw-border-spacing-y:0; --tw-translate-x:0; --tw-translate-y:0; --tw-rotate:0; --tw-skew-x:0; --tw-skew-y:0; --tw-scale-x:1; --tw-scale-y:1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness:proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width:0px; --tw-ring-offset-color:#ffffff; --tw-ring-color:rgb(59 130 246 / .5); --tw-ring-offset-shadow:0 0 #0000; --tw-ring-shadow:0 0 #0000; --tw-shadow:0 0 #0000; --tw-shadow-colored:0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; overflow-wrap:break-word; color:#336699; text-decoration:underline" target="_blank">http://www.stmcu.com.cn/</a>搜索CoreMark即可找到应用笔记<span style="color:#e74c3c;"><strong>如何将coremark程序移植到STM32上.pdf</strong></span></p>
<p> </p>
<p>移植步骤不再赘述,这里使用板卡的PD8、PD9串口3,内部时钟64MHz,主频配置400MHz。</p>
<div style="text-align: center;"></div>
<p>串口配置: </p>
<div style="text-align: center;"> </div>
<div style="text-align: center;"></div>
<p> </p>
<p>时钟配置:</p>
<div style="text-align: center;"></div>
<p> </p>
<p> </p>
<p> </p>
<p> 为提高性能,开启指令和数据缓存:</p>
<div style="text-align: center;"></div>
<div style="text-align: center;"> </div>
<div style="text-align: center;"> </div>
<p>为了测试CoreMark特意安装了IAR开发IDE,在IAR9.x版本中开启串口printf打印功能与其它版本不一样:</p>
<p>库支持的设置如下:</p>
<div style="text-align: center;"></div>
<p> </p>
<div style="text-align: center;"> </div>
<p>然后加入如下串口重映射代码:</p>
<pre>
<code class="language-cpp">#include <LowLevelIOInterface.h>
#pragma module_name = "?__write"
int MyLowLevelPutchar(int x)
{
HAL_UART_Transmit(&huart3, (uint8_t *)&x, 1, 0xFFFF);
return x;
}
size_t __write(int handle, const unsigned char * buffer, size_t size)
{
size_t nChars = 0;
if (buffer == 0)
{
return 0;
}
if (handle != _LLIO_STDOUT && handle != _LLIO_STDERR)
{
return _LLIO_ERROR;
}
for (; size != 0; --size)
{
if (MyLowLevelPutchar(*buffer++) < 0)
{
return _LLIO_ERROR;
}
++nChars;
}
return nChars;
}</code></pre>
<p> </p>
<p>优化设置为最高速度,编译器版本为iccarm 9.40</p>
<div style="text-align: center;"> </div>
<div style="text-align: center;">
<div style="text-align: center;"></div>
<p> </p>
</div>
<p> </p>
<div style="text-align: center;"> </div>
<p>最后结果如下1985:</p>
<div style="text-align: center;"></div>
<p>与官方数据2424具有一定差异,原因主要是主频没有配置为480MHz而是400MHz。</p>
<div style="text-align: center;"> </div>
<p> </p>
</div>
本帖最后由 dql2016 于 2023-9-10 22:26 编辑
<p>STM32H743并不是所有版本都能跑480MHz,早期的Y版芯片是400MHz,后来的V版是480MHz,手头的这块板子芯片正好是Y版本的。</p>
<div style="text-align: center;"></div>
<div style="text-align: center;">
<div style="text-align: center;"></div>
<p> </p>
</div>
<p> </p>
<p>后来的V版是480MHz,手头的这块板子芯片正好是Y版本的。很强的MCU呀!</p>
<p>很好玩的样子啊,羡慕</p>
<div></div>
<p>看看能不能超频跑跑</p>
页:
[1]