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

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

[复制链接]
落花又见流水 发布时间:2023-1-19 23:26
CoreMark是一项测试处理器性能的基准测试。代码使用C语言写成,包含:列举,数学矩阵操作和状态及CRC等运算法则。目前CoreMark已迅速成为测量与比较处理器性能的业界标准基准测试。CoreMark的得分越高,意味着性能更高。在CoreMark的官网上可以大家可以看到各家处理器型号的CoreMark得分。也可以从CoreMark的官网上下载测试代码,亲自测一下自己手中的片子的性能。/ E0 {# E3 ]* v2 W  _5 q& }4 l5 A

, z* N" B3 O* ^3 v) rCoreMark官网的地址:https://www.eembc.org/coremark/. I0 j5 x9 q# p, L% L5 b  O
CoreMark代码地址:https://github.com/eembc/coremark' s, y. v5 j) R. v9 }, a

1 r. s9 _9 S; \. U+ z4 `& D下面就试试在STM32U5上移植CoreMark测试一番。官方的STM32U5CoreMark测试分数在651分。可以在CoreMark管网查看分数排名。
8 j# m- M) }9 o! h# ~0 j" o 1.jpg # S+ k) [1 F" E7 m, f! i
% E. v" s9 o9 l! v. q; @
首先下载CoreMark的代码,等下备用。" C: N: Z7 y. ]; V9 v
5.jpg
- D6 {* u+ M5 t1 b
! h$ r8 [5 r  Q$ Y3 v, I7 Y/ B- D0 B红色框内为移植所需要的文件,到时候需要将这些文件添加到工程中。! q# u; q0 D4 F& b
下面先生成STM32U5的一个最小工程。打开STM32CubeMX,新建工程前确保下载STM32U5的代码库。下载方法如下:点击PACKAGESINSTALL/REMOVE,找到STM32U5芯片代码支持包下载。
S0.jpg
通过NUCLEO-U575ZI-Q板子方式新建工程。点击右上角的StartProject
S1.jpg
下面开始配置初始化MCU。通过开发板新建的基本板上使用的IO都默认配置了。
S2.jpg
因为要测试CoreMark,所以要打开ICACHEDCACHE,不打开的话跑分会差很多。下面是设置打开ICACHEDCACHE
S7.jpg
S8.jpg
0 q$ ?$ g4 ?. }3 S3 l8 ?4 o, o& t$ k- @
下面是设置时钟主频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.ccore_portme.h文件。再就是core_main.c中有main函数与我们的main.c中重复了。所以我修改了core_main.cmain函数名称为coremark_main
A4.jpg
A5.jpg
修改core_portme.h文件。查看一些宏定义选项,选择适合的参数。这里我主要修改如下。增加迭代次数,要满足运行时间要求。以及编译器优化选项。
A6.jpg
编译器优化设置,使用LTO加—Omax参数。
A7.jpg
因为CoreMark需要知道运行时间,所以还要修改时间计时处理。修改core_portme.c文件中关于计时处理宏定义。使用SysTick1ms定时。如下图:
A8.jpg
最后在mian.cmain函数中调用CoreMark的修改的coremark_main()函数。然后编译下载。
如图
A9.jpg
最终串口输出结果如下:CoreMark得分为641。与官方的651很接近了。
2.jpg
也测试了下不打开ICACHEDCACHE的情况下,得分在400多。还有其他编译优化选项时,都达不到600分。
3.jpg
4.jpg
至此,CoreMark移植跑分就完成了。
, U) |9 l$ `, B: X3 x& d
收藏 1 评论1 发布时间:2023-1-19 23:26

举报

1个回答
y369369 回答时间:2023-1-31 16:00:49
写的相当详细啊
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版