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

【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下一页

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版