5081|4

29

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【GD32E503评测】——step02.拿国产M33跑个分吧 [复制链接]

 

【GD32E50x系列性能简介】

  GD32E5系列基于最新Armv8-M架构的Cortex-M33内核,处理器主频最高可达180MHz,内置硬件乘/除法器并提供了完整的DSP指令集和单精度浮点运算单元(FPU),还配备了全新的硬件三角函数加速器(TMU),可支持矢量、正余弦、指数、平方根、常用对数等数学三角运算,以减轻CPU负担并提高处理效率,从而推动以数字信号处理为中心的高级计算应用。最高工作性能可达244DMIPS,CoreMark 测试可达547分。同主频下的代码执行效率相比市场Cortex®-M4产品提升了10%-20%,相比Cortex®-M23产品的性能提升超过40%。

  既然性能那么强,那就先跑个分来评测一下吧。

 

【CoreMark简介】

  CoreMark是由EEMBC(Embedded Microprocessor Benchmark Consortium)的Shay Gla-On于2009年提出的一项基准测试程序,CoreMark的主要目标是简化操作,并提供一套测试单核处理器核心的方法。测试标准是在配置参数的组合下单位时间内运行的CoreMark程序次数(单位:CoreMark/MHz),该数字值越大则说明测试的性能越好。
  目前在嵌入式CPU行业中普遍公认的性能测试指标的标准主要使用以下三种,MIPS、Dhrystone、Coremark,而CoreMark与Dhrystone一样,拥有体积小、方便移植、易于理解、免费并且显示单个数字基准分数。与Dhrystone不同的是,Dhrystone的主要部分实际上暴露了编译器优化工作负载的能力,而不是实际MCU或CPU的能力,的性能,而CoreMark具有特定的运行和报告规则,从而可以避免由于所使用的编译库不同而导致的测试结果难以比较。

  更多详情请参见: https://blog.csdn.net/weixin_45032957/article/details/112362028

 

【GD32E503移植CoreMark步骤】

  1. 去官网或者GitHub上 下载好Coremark文件 ;
  2. 在 给出的例程中找到 04_USART_Printf 工程模板,主频设定在180M,把串口0调试好,因为之后是采用串口输出跑分结果的。评估板上已经将UART0转为USB输出了,可以直接用USB数据线连接电脑串口工具,这里选择了去配置USART0,并重定向了printf函数,可以向串口助手打印数据,简化了结果输出 ;
  3. 将启动文件中的初始化时的堆栈改大一些,否则会出现问题,默认的都是0X00000400,这里测试改成 0X00002000 ;
  4. 在串口模板工程中新建Coremark文件夹,将下载得到的官方coremark文件复制进去,并且在工程设置中添加好 .h头文件路径 ;
  5. 在Core_portme.c 中的 portable_init 函数添加平台的初始化代码(时钟, GPIO, 串口),类似Main 函数中的初始化代码,并添加对应的头文件,此时可以将main文件删除 ;
  6. 在 Core_portme.c 修改计时相关代码(start_time/ stop_time/ get_time 这几个函数和system tick 的中断处理函数),按照以下方式修改 ;
  7. CoreMark 要求程序运行的最短时间至少是 10s, 根据使用的系统时钟等情况,可以在 Core_portme.h 中修改迭代次数,根据具体所用的编译器版本,优化配置进行修改 ;
  8. 在keil工程设置中,修改优化等级,不同的优化等级编译出来的运行效率不一样 ,实测 -Ofast 比 -O3 还要跑分快一些,编译运行代码,可以看到串口工具有以下信息打印出来 :

【图】 -Ofast 等级跑分结果

 

【图】 -O3 等级跑分结果

") rgba(220, 220, 220, 0.5); top: -15px; left: 0px; display: block;">
") rgba(220, 220, 220, 0.5); top: -15px; left: 0px; display: block;">
") rgba(220, 220, 220, 0.5); top: -15px; left: 0px; display: block;">

还需要添加以下宏定义变量:

") rgba(220, 220, 220, 0.5); top: -15px; left: 0px; display: block;">

还需要修改systick中断函数:

") rgba(220, 220, 220, 0.5); top: -15px; left: 0px; display: block;">

 【GD32E503 CoreMark跑分小结】

  经过优化后GD32E503最高可以跑585分,如果不优化的话,基本只能到260多,因为我用的是MKD5 AC6编译器,跑分结果应该会比IAR低一些。CoreMark 官方没有给出GD32的跑飞数据,但相比之前的介绍,实测结果已经差不离了。有机会后面再测试一下DHRY,看下性能的另一个指标 DMips/MHz 能到多少。

  附件内容为本次评测移植的代码,先分享给大家评测。欢迎拍砖!

GD32E50x_USART_Printf_CoreMark_V1.1.0.rar

4.83 MB, 下载次数: 8

最新回复

system_gd32e50x.c下有一个__SYSTEM_CLOCK_180M_PLL_HXTAL的宏定义 [attach]528089[/attach]   详情 回复 发表于 2021-3-14 20:32

赞赏

1

查看全部赞赏

点赞(1) 关注
 
 

回复
举报

1942

帖子

3

TA的资源

版主

沙发
 

不错不错,下载来跑跑看,一直看别人都在测评这个,自己还没试过。

 
 
 

回复

7671

帖子

18

TA的资源

五彩晶圆(高级)

板凳
 

260和585?这优化了啥提升了一倍多?

个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

144

帖子

0

TA的资源

版主

4
 

1. 怎么修改主频为180M?

 

 

点评

system_gd32e50x.c下有一个__SYSTEM_CLOCK_180M_PLL_HXTAL的宏定义 [attachimg]528089[/attachimg]  详情 回复 发表于 2021-3-14 20:32
 
 
 

回复

9805

帖子

24

TA的资源

版主

5
 
superstar_gu 发表于 2021-1-19 15:18 1. 怎么修改主频为180M?    

system_gd32e50x.c下有一个__SYSTEM_CLOCK_180M_PLL_HXTAL的宏定义

个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表