你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32G071】4 CoreMark跑分

[复制链接]
Angel_YY 发布时间:2019-1-24 10:36
上一篇STM32G0的性能测试是基于简单的加法迭代计时的方式测试了G0系列和F0系列的性能差异,但是有坛友表示不太公平,那么这次就来个公平点儿的,跑一下CoreMark。虽然在ST官网和一些公开资料中已经有所提及,STM32G0的CoreMark成绩应该在142左右,但是还是希望自己亲自能够跑一下,这样才能更直观的了解STM32G0的性能。
由于笔者之前没有自己在MCU上跑过CoreMark,所以开始没有什么头绪,只是到CoreMark官网上看看资料,偶然的机会在STM32的中文官网搜索了一下CoreMark关键字,竟然发现官网已经有了一篇《如何将coremark程序移植到STM32上.pdf》,讲述了如何在STM32上移植CoreMark,虽然文章中使用的是STM32F746,但是工程是基于STM32CubeMX生成的,使用的HAL库,所以改文章应该能够适合STM32G0的开发板。改文章虽然写的已经很详细了,但是真正移植的时候还是遇到了一些问题,所以还是想写一篇文章来记录一下过程。
首先下载CoreMark源代码,地址http://github.com/eembc/coremark
0001.png
在Windows上安装Git,然后在命令行中执行:git clone http://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作为主控,应该不会让大家失望。


工程代码:
4.zip (12.77 MB, 下载次数: 20)

评分

参与人数 1 ST金币 +10 收起 理由
chen_hang + 10 很给力!

查看全部评分

1 收藏 1 评论12 发布时间:2019-1-24 10:36

举报

12个回答
Litthins 回答时间:2020-8-26 11:44:59
Angel_YY 发表于 2020-8-16 10:07
编译器对于跑分结果影响很大,所以大部分厂家跑分都是使用IAR,IAR编译出的程序跑分是最高的。CubeIDE使 ...

原来如此,谢谢指导。
toofree 回答时间:2019-1-24 10:52:36
感谢分享,跑分不错

点评

感谢支持  发表于 2019-1-24 12:25
MrJiu 回答时间:2019-1-24 11:27:58
看起来好像不错。。。问题来了。。。现在好像拿货和价格都不是那么好啊!!!

点评

会逐渐好起来的  发表于 2019-1-24 12:26
andeyqi 回答时间:2019-1-24 15:56:21
感谢分享  
古调独弹 回答时间:2019-6-24 10:30:15
首先支持STM32G0系列,有创新才有进步,也不否定stm32f0系列,合用够用的就是对的。stm32f030f4p6是能直接买到的最便宜的片子,不到2元价格,coremark得分在默认官方主频48M时80分左右,64M时107分左右,72M时120分左右,96M时160分左右,可惜没有USB(有模拟的VUSB但只能工作在USB1.0下且不完善),在无需USB通信的应用场合还是性价比很高的 stm32f030f4p6得分96M.PNG

feibagezi 回答时间:2019-7-17 18:11:18
感谢分享,记录一下!
进阶的熊猫 回答时间:2019-11-2 14:46:21
自己手头这块G071Nucleo板,MCU采用内部HSI时钟,系统时钟配置为64MHz,在MDK环境下编译,测试CoreMark跑分约为116。
Litthins 回答时间:2020-8-15 16:09:29
我用CubeIDE移植,跑出来是114分。
Angel_YY 回答时间:2020-8-16 10:07:23
Litthins 发表于 2020-8-15 16:09
我用CubeIDE移植,跑出来是114分。

编译器对于跑分结果影响很大,所以大部分厂家跑分都是使用IAR,IAR编译出的程序跑分是最高的。CubeIDE使用的是GCC,这个编译出来的程序性能要比IAR差一些。跑分低很正常。
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版