STM32G071的CoreMark跑分

STM32 STM32G0 CoreMark
Angel_YY
发布时间: 2019-03-15
阅读: 2691
ST在去年年底发布了STM32G0的产品线,该产品线应该算是STM32F0的升级产品,在F0系列的基础上优化了内部电源,更新了内核为Arm Cortex M0+,最高主频也有F0的48MHz增加到了64MHz,性能增强了不少,那么到底有多强呢,还是需要一个对比的。正好最近拿到了一块STM32G071的Nucleo开发板,我们就以目前MCU领域性能测试工具CoreMark的跑分来检验一下。
首先下载CoreMark源代码,地址https://github.com/eembc/coremark
0001.png
在Windows上安装Git,然后在命令行中执行:git clone https://github.com/eembc/coremark.git
很快就可以下载完成了,整个工程也就只有1M多一点儿。
0002.png
使用STM32CubeMX建立STM32G071的工程。
0003.png
配置时钟时选择内部16M高速时钟,主时钟设置为最高的64MHz。
0004.png
配置串口1的参数,这个串口时连接到STLink的,与PC端虚拟的串口是连接在一起的。
0005.png
配置项目,IDE使用IAR V8,堆和栈大小都设置为0x2000,然后创建代码。
0006.png
在IAR中打开工程,就可以看到生成的代码了。
0007.png
在IAR工程中添加CoreMark中的六个文件到工程中,同时删除原工程中的main.c。
0008.png
添加CoreMark的头文件路径到IAR工程中。
0009.png
在core_portme.c文件的portable_init函数中粘贴从工程中删掉的main.c文件中主函数的初始化代码。
0010.png
从main.c文件中拷贝初始化函数的实现到core_portme.c中。
0011.png
增加printf重定向代码,文件开头添加函数声明,引用main.h
0012.png
修改start_time,stop_time,get_time三个函数。
0013.png
修改stm32g0xx_it.c中的SysTick_Handler函数。
0014.png
在core_portme.h中定义迭代次数,CoreMark要求最少执行10秒钟才算有效,这里的迭代次数要根据芯片性能填写,笔者第一次使用了个12000次,结果程序运行了89秒才出结果。根据G0芯片的性能,这里改为2000比较合适。
此外,修改编译器优化参数。
0015.png
修改优化等级,Options->C/C++ Compiler->Optimizations, 选择High for speed 和No size constraints以达到最优的运行速度。
0016.png
至此,所有修改完成,编译为bin文件后,拖动到G071所在的盘符。写入完成后会自动重启。
0017.png
重启后经过十几秒钟,在串口调制助手中就可以看到输出结果了,不过好像没有换行。
0018.png
查看Core_main.c中的串口输出信息,发现换行都是用的"\n",而不是windows下常用的"\r\n"。
0019.png
把文本信息拷贝到Notepad++中,就能够实现换行了,数据也整齐了。
从数据中可以看到,第一次迭代了12000次,用时89秒。第二次迭代了2000次,用时14.87秒。
两次测试的CoreMark值都是134.4左右,虽然距离官方的142还有一些差距,但是相比较STM32F0的68 CoreMark分要高了不少了。
总结:STM32G0在CoreMark中的跑分相比较STM32F0增加了近乎一倍,在配合其简洁的电源设计,极高的IO利用率,以及相对低廉的价格,相信在今后的MCU市场会有很大作为,甚至可能部分取代已经推出了10年之久的F1系列,在今后新项目的研发中,大家不妨尝试使用该系列的MCU作为主控,应该不会让大家失望。


原创作品,未经权利人授权禁止转载。详情见转载须知 举报文章

点赞 (0)
Angel_YY 擅长:BMS电池管理系统,用户行为分析系统
评论(0)

登录后可评论,请 登录注册

相关文章推荐
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回

我要举报该内容理由

×
请输入您举报的理由(50字以内)