发新帖本帖赏金 100.00元(功能说明)我要提问
返回列表
打印
[STM32H5]

STM32H5开发之coremark跑跑跑~

[复制链接]
764|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#申请原创#@21小跑堂
上一篇我讲了关于串口和printf的应用,同时还做了固件编译时间的输出,这一操作大大减少了固件升级错误,固件版本不确定等问题,属实很有意义。那么今天就继续针对printf来实现coremark跑分吧。
Coremark是什么?
Coremark是一个基准测试程序,用于衡量处理器或系统在整数操作方面的性能。它被广泛用于评估嵌入式系统和微控制器的性能。Coremark基准测试主要关注矩阵操作、链表操作和状态机操作等任务。
那接下来就将coremark来移植到H5上吧,来看看coremark下的H5究竟有多强悍。
Coremark的代码首先是需要下载的,链接如下:https://github.com/eembc/coremark
接下来在coremark查找要测试的芯片,评测跑分是跑了多少分。在官网搜到的跑分记录是1023.03。
图1 官方coremark关于H503的跑分数据
通过图1来看,跑的分数还是可以的。接下来就做好移植准备吧。本次移植其实就需要一个串口初始化和串口的重定义,其实这些在上一章都做过了,那么就直接用上一章弄好的源码来实现coremark的移植吧。
首先这里要将下载好的coremark源码解压,然后将用到的源码C文件复制到H503的基础串口输出工程之中。在下载好的coremark资源包之中,找到以下的源码,将这些源码复制到准备好的工程中来。
图2 将需要的coremark文件拷贝到工程中来
接下来打开cubemx,找到ICACHE,这里需要使能该功能,否则跑分的数据是不准确的。
图3 打开ICACHE
接下来添加coremark的代码,这里主要修改的是core_portme.c和core_portme.h文件,还有就是core_main.c之中的main函数与原代码之中的mian冲突了,因此需要修改,这里常规操作就是删除掉原main函数,删除之前复制其里面的初始化函数到core_main.c之中的main函数之内即可。不过我最近学习到了一种新的方法,就是将core_main.c之中的main文件改个名字,然后在原main函数之中调用一下即可,其实我觉得这样更好一些,可以看的更直观。并且很快的改好,不会出现落下某个初始化函数的问题。
图4 修改core_main.c之中的main函数名字
图5 在原main之中调用coremark的main函数
接下来就是修改coremark代码的一些基础配置了。这里需要修改迭代次数,优化等级,运行时间还有堆栈大小的设定等等、
图6 core_portme.h文件之中的修改
接下来就是针对core_portme.c文件函数修改,这里修改的比较简单,就是修改定时器和需要运行的时间等等。
externuint32_t HAL_GetTick(void);
#define NSECS_PER_SEC 1000//CLOCKS_PER_SEC
#define CORETIMETYPE int32_t//clock_t
#define GETMYTIME(_t) (*_t = HAL_GetTick())//(*_t = clock())
#define MYTIMEDIFF(fin, ini) ((fin) - (ini))
#define TIMER_RES_DIVIDER 1
#define SAMPLE_TIME_IMPLEMENTATION 1
#define EE_TICKS_PER_SEC (NSECS_PER_SEC / TIMER_RES_DIVIDER)
图7 core_portme.c文件之中的修改
图8 启动文件之中的堆栈数据修改
当以上内容操作完成之后,就可以编译一下试试了。编译0 Error(s), 0 Warning(s).奈斯,看来这次操作没有啥问题嘛。赶紧把代码烧录到开发板之中,发现代码没跑起来,OK,想要给我上一课是吧,这跑不起来可不行,赶紧仿真看看哪里出了问题。通过仿真发现,单步运行的时候多点几下,程序是可以运行到coremark代码的,那咋回事儿呢?后来发现,原来是UseMicroILB没勾选,好嘛,原来是自己的误操作给自己上了一课。勾选上之后,代码就可以正确跑起来了。
图9 coremark跑起来啦
这里可以看出,跑的分数是1002.171371,哦豁,和官方标注的数据差不太多,官方是1023.03。官方说过,Coremark的跑分结果可能会存在一定的误差,这是因为多个因素可能会影响测试结果,例如系统负载、缓存状态、编译器优化等。至此,coremark就操作完成啦。需要注意的是,Coremark只是一个基准测试程序,它可以提供一定的性能参考,但并不代表实际应用中的性能表现。因此,在评估系统性能时,还应考虑其他因素和实际应用场景。

使用特权

评论回复

打赏榜单

21小跑堂 打赏了 100.00 元 2023-08-09
理由:恭喜通过原创审核!期待您更多的原创作品~

沙发
liu96jp| | 2024-1-12 17:03 | 只看该作者
跑分移植的很溜嘛,不错不错

使用特权

评论回复
板凳
g0d5xs| | 2024-1-12 17:16 | 只看该作者
期待楼主能分享个源码出来,哈哈

使用特权

评论回复
地板
b5z1giu| | 2024-1-12 17:29 | 只看该作者
这个移植看着还挺简单的啊

使用特权

评论回复
5
lamanius| | 2024-1-12 18:15 | 只看该作者
哇,这个跑分的数据还不错呢,跟官方差不太多

使用特权

评论回复
6
p0gon9y| | 2024-1-12 19:20 | 只看该作者
其实跑分也是理论,实际来说用不到这么极端的

使用特权

评论回复
7
kaif2n9j| | 2024-1-12 20:24 | 只看该作者
其实跑分也是理论,实际来说用不到这么极端的

使用特权

评论回复
8
w2nme1ai7| | 2024-1-12 21:38 | 只看该作者
话说,你要是用IAR的话,分数应该会更高一些

使用特权

评论回复
9
tax2r6c| | 2024-1-13 08:10 | 只看该作者
这个根据开发环境来说,我觉得KEIL的优化能力没有IAR好

使用特权

评论回复
10
q1ngt12| | 2024-1-13 10:05 | 只看该作者
嗯嗯,讲的很详细了,而且测试结果也是很不错的

使用特权

评论回复
11
zhizia4f| | 2024-1-13 11:24 | 只看该作者
我挺喜欢用coremark来测试一个芯片的,这样比较客观

使用特权

评论回复
发新帖 本帖赏金 100.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:嵌入式技术专家
简介:擅长电路设计、物联网产品开发、射频产品开发,喜欢打篮球,技术交流,欢迎各位来聊~

528

主题

2209

帖子

5

粉丝