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

我的STM32U5 项目秀+STM32U5的CoreMark移植跑分

[复制链接]
落花又见流水 发布时间:2023-1-19 23:26
CoreMark是一项测试处理器性能的基准测试。代码使用C语言写成,包含:列举,数学矩阵操作和状态及CRC等运算法则。目前CoreMark已迅速成为测量与比较处理器性能的业界标准基准测试。CoreMark的得分越高,意味着性能更高。在CoreMark的官网上可以大家可以看到各家处理器型号的CoreMark得分。也可以从CoreMark的官网上下载测试代码,亲自测一下自己手中的片子的性能。
3 X( H6 ?' D: Q# z* a( M
0 u5 C( w6 O! l4 _/ f7 dCoreMark官网的地址:https://www.eembc.org/coremark/
$ _7 h& \5 |( r. D+ ICoreMark代码地址:https://github.com/eembc/coremark
% I9 W% }1 ?* | 4 A& J1 A3 G6 G( e, k
下面就试试在STM32U5上移植CoreMark测试一番。官方的STM32U5的CoreMark测试分数在651分。可以在CoreMark管网查看分数排名。  I. _5 ^+ u( @2 f
1.jpg
! q" x. R. I% x' G% t
/ I8 E" n* B. k0 W" F9 A首先下载CoreMark的代码,等下备用。1 I3 h9 T6 O: n1 O9 H/ ^
5.jpg
8 r+ M8 f+ g- r# B8 R- y8 B& H5 J6 Q
红色框内为移植所需要的文件,到时候需要将这些文件添加到工程中。  F9 S  q$ ]5 n. U
下面先生成STM32U5的一个最小工程。打开STM32CubeMX,新建工程前确保下载STM32U5的代码库。下载方法如下:点击PACKAGES那INSTALL/REMOVE,找到STM32U5芯片代码支持包下载。
S0.jpg
通过NUCLEO-U575ZI-Q板子方式新建工程。点击右上角的StartProject。
S1.jpg
下面开始配置初始化MCU。通过开发板新建的基本板上使用的IO都默认配置了。
S2.jpg
因为要测试CoreMark,所以要打开ICACHE和DCACHE,不打开的话跑分会差很多。下面是设置打开ICACHE和DCACHE。
S7.jpg
S8.jpg

5 N2 U! x6 s& V
下面是设置时钟主频160MHz。其他默认
S3.jpg
下面设置代码工程保存路径和IDE,以及堆栈空间大小。我选的KEIL MDK。
S4.jpg
S5.jpg
S6.jpg
下面生成代码工程,点击右上角的红框。生成代码工程完成后,就可以打开工程了。
S9.jpg
下一步就是移植CoreMark代码了。
打开KEIL工程,可以直接编译通过。
A1.jpg
下面添加printf打印函数,通过串口输出。如下图所示,勾选STDOUT,然后实现stdout_putchar函数。
A2.jpg
下面是实现的stdout_putchar函数。
int stdout_putchar (int ch)
{
    LL_USART_TransmitData8(USART1,ch&0xff);
    while(!(USART1->ISR & (0x1UL << 7)));
    return 0;
}
添加之后可以编译下载测试一下printf输出是否正常。
A3.jpg
下面添加CoreMark代码。CoreMark主要移植修改在core_portme.c和core_portme.h文件。再就是core_main.c中有main函数与我们的main.c中重复了。所以我修改了core_main.c中main函数名称为coremark_main。
A4.jpg
A5.jpg
修改core_portme.h文件。查看一些宏定义选项,选择适合的参数。这里我主要修改如下。增加迭代次数,要满足运行时间要求。以及编译器优化选项。
A6.jpg
编译器优化设置,使用LTO加—Omax参数。
A7.jpg
因为CoreMark需要知道运行时间,所以还要修改时间计时处理。修改core_portme.c文件中关于计时处理宏定义。使用SysTick的1ms定时。如下图:
A8.jpg
最后在mian.c的main函数中调用CoreMark的修改的coremark_main()函数。然后编译下载。
如图
A9.jpg
最终串口输出结果如下:CoreMark得分为641。与官方的651很接近了。
2.jpg
也测试了下不打开ICACHE和DCACHE的情况下,得分在400多。还有其他编译优化选项时,都达不到600分。
3.jpg
4.jpg
至此,CoreMark移植跑分就完成了。
6 c1 C- y0 s( }! M7 f
赞 收藏 1 评论1 发布时间:2023-1-19 23:26

举报

1个回答
y369369 回答时间:2023-1-31 16:00:49
写的相当详细啊

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版