4024|1

144

帖子

0

TA的资源

版主

楼主
 

【GD32E503评测】GD32E503VET6 性能测试 [复制链接]

 

2.4    GD32E503VET6 性能测试
2.4.1    指标初步分析
使用GD32E503开发产品,研发工程师基本会考虑两个指标:功耗和性能。
功耗非常难算的,而且跟硬件使用频率、环境及程序等相关。按照功能接口把单片机的功耗按照下面的划分:内部功耗(与频率有关)、数字输入输出口、输入口、模拟接口等。我们直接引用GD32E5032 datasheet资料,查询资料如下:
 


 
如何综合考虑GD32E503各方面性能?在嵌入式处理器领域,常见测试CPU性能方法有:Dhrystone 和 CoreMark。Dhrystone方法陈旧,且 一直没有更新,我也没有没有移植成功,因此本文将借助于CoreMark测试方法。
CoreMark标准于2009年由EEMBC组织的Shay Gla-On提出,并且试图将其发展成为工业标准,从而代替陈旧的Dhrystone标准。
CoreMark is a simple, yet sophisticated benchmark that is designed specifically to test the functionality of a processor core. Running CoreMark produces a single-number score allowing users to make quick comparisons between processors.
CoreMark跑分是通过运行C语言代码得出来的分数。主要包含如下的运算法则:列举(寻找并排序),数学矩阵操作(普通矩阵运算)和状态机(用来确定输入流中是否包含有效数字),最后还包括CRC(循环冗余校验)。
2.4.2    CoreMark核心程序
参考CoreMark官网信息,地址:https://www.eembc.org/coremark/index.php
最新版本是1.0。
 
2.4.3    兆易创新(GigaDevice)官方开发包
下载兆易创新(GigaDevice) GD32E50x_Demo
 
2.4.4    集成开发环境为IAR EWARM
 
Fig 33 IAR版本示意图
2.4.5    移植CoreMark程序
首先,选择一个完整的模板,以demo例程中,串口例程04_USART_Printf 为模板进行配置,简化了配置过程。
 
Fig 34 开发板UART0原理图
由于GD32E503V-EVAL开发板核心芯片GD32E503VET6的处理器操作频率最高位180MHz,推荐将主频设定在180M。我没有修改。
将初始化时的堆栈改大一些,否则会出现问题,默认的都是0X00000800,这里我改成了0X00002000。
开启 options > linker >Override default > Edit,修改为:0x2000   
新建Coremark文件夹,添加Coremark程序
 
在工程里添加文件,并包含头文件路径
 
(1)    Core_portme.c 添加初始化代码
1)    portable_init 函数
Core_portme.c 中的 portable_init 函数在 Core_main.c 的 main 函数中首先被调用, 平台的初始化的函数(时钟, GPIO, 串口) 可以放在这里。 将Main 函数中的初始化代码复制到 portable_init 函数中。
 
2)    添加变量和函数
#define SysTick_Counter_Disable   ((uint32_t)0xFFFFFFFE)
#define SysTick_Counter_Enable    ((uint32_t)0x00000001)
#define SysTick_Counter_Clear     ((uint32_t)0x00000000)
__IO uint32_t Tick;
3)    添加头文件
 
4)    删除main函数,因为Core_main.c有main函数
5)    修改计时器代码
start_time/ stop_time/ get_time 这几个函数,是 coremark 程序运行时计算程序运行时间所用。 这里使用 system tick 进行计时, system tick 配置为 1ms 的中断间隔。 system tick 中断函数中更新 Tick 的值,每进一次中断加 1。 所以还需要修改system tick 的中断处理函数。 Core_portme.c 中按下表找到需要修改的地方
start_time(void)
{
    //GETMYTIME(&start_time_val);
    Tick=0;
    SysTick_Config(SystemCoreClock/1000);
}
stop_time(void)
{
    //GETMYTIME(&stop_time_val);
    SysTick->CTRL&=SysTick_Counter_Disable;
    SysTick->VAL=SysTick_Counter_Clear;
  
}
get_time(void)
{
       CORE_TICKS elapsed=(CORE_TICKS)Tick;
        return elapsed;
}
6)    注释无用语句
//#define NSECS_PER_SEC              CLOCKS_PER_SEC
//#define CORETIMETYPE               clock_t
//#define GETMYTIME(_t)              (*_t = clock())
//#define MYTIMEDIFF(fin, ini)       ((fin) - (ini))
//#define TIMER_RES_DIVIDER          1
//#define SAMPLE_TIME_IMPLEMENTATION 1

//static CORETIMETYPE start_time_val, stop_time_val;
7)    其他
#define EE_TICKS_PER_SEC 1000 

关联printf函数

/* retarget the C library printf function to the USART */

int fputc(int ch, FILE *f)

{

    usart_data_transmit(EVAL_COM0, (uint8_t)ch);

    while (RESET == usart_flag_get(EVAL_COM0, USART_FLAG_TBE));

    return ch;

}

(2)    修改systick.c函数

(3)    运行配置
CoreMark 要求程序运行的最短时间至少是 10s, 根据使用的系统时钟等情况,可以在 Core_portme.h 中修改迭代次数。
#define ITERATIONS 12000
(4)    CoreMark运行配置
1)    设置迭代次数
CoreMark要求程序运行的最短时间至少是10s, 根据使用的系统时钟等情况,可以在Core_portme.h中修改迭代次数。
#define ITERATIONS 12000
2)    设置打印信息
根据具体所用的编译器版本,优化配置进行修改。在Core_portme.h中修改
找到 COMPILER_FLAGS修改为 
 #ifndef COMPILER_FLAGS 
#define COMPILER_FLAGS "-Ohs -no_size_constraints" 
#endif 

3)    优化等级
 


  

2.4.6    CoreMark结果

(我没有修改主频,结果如下;)
2K performance run parameters for coremark.
CoreMark Size    : 666
Total ticks  : 23833
Total time (secs): 23.833000
Iterations/Sec   : 503.503546
Iterations   : 12000
Compiler version : Please put compiler version here (e.g. gcc 4.1)
Compiler flags   : -Ohs -no_size_constraints
Memory location  : STACK
seedcrc : 0xe9f5
 [0]crclist       : 0xe714
 [0]crcmatrix     : 0x1fd7
 [0]crcstate      : 0x8e3a
 [0]crcfinal      : 0xd340
 Correct operation validated. See README.md for run and reporting rules.
  CoreMark 1.0 : 503.503546 / Please put compiler version here
 (e.g. gcc 4.1) -Ohs -no_size_constraints / STACK

 

最新回复

感谢分享!   详情 回复 发表于 2021-1-19 20:11

赞赏

1

查看全部赞赏

点赞(1) 关注
 
 

回复
举报

1942

帖子

2

TA的资源

版主

沙发
 

感谢分享!

 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表