
CoreMark是一项测试处理器性能的基准测试。代码使用C语言写成,包含:列举,数学矩阵操作和状态及CRC等运算法则。目前CoreMark已迅速成为测量与比较处理器性能的业界标准基准测试。CoreMark的得分越高,意味着性能更高。在CoreMark的官网上可以大家可以看到各家处理器型号的CoreMark得分。也可以从CoreMark的官网上下载测试代码,亲自测一下自己手中的片子的性能。 CoreMark官网的地址:https://www.eembc.org/coremark/2 @# P, a& B. F* I3 J3 K. V+ q CoreMark代码地址:https://github.com/eembc/coremark6 X* I! A! k$ |* L! C# V 下面就试试在STM32U5上移植CoreMark测试一番。官方的STM32U5的CoreMark测试分数在651分。可以在CoreMark管网查看分数排名。 ![]() ' }$ M7 k: g9 j0 ]3 R1 w 首先下载CoreMark的代码,等下备用。 ![]() 4 O4 G# X; d, ]. q+ J7 [ 红色框内为移植所需要的文件,到时候需要将这些文件添加到工程中。* j" p# W+ M* M* I* X( R" d9 |4 L 下面先生成STM32U5的一个最小工程。打开STM32CubeMX,新建工程前确保下载STM32U5的代码库。下载方法如下:点击PACKAGES那INSTALL/REMOVE,找到STM32U5芯片代码支持包下载。 ![]() 通过NUCLEO-U575ZI-Q板子方式新建工程。点击右上角的StartProject。 ![]() 下面开始配置初始化MCU。通过开发板新建的基本板上使用的IO都默认配置了。 ![]() 因为要测试CoreMark,所以要打开ICACHE和DCACHE,不打开的话跑分会差很多。下面是设置打开ICACHE和DCACHE。 ![]() ![]() 下面是设置时钟主频160MHz。其他默认 ![]() 下面设置代码工程保存路径和IDE,以及堆栈空间大小。我选的KEIL MDK。 ![]() ![]() ![]() 下面生成代码工程,点击右上角的红框。生成代码工程完成后,就可以打开工程了。 ![]() 下一步就是移植CoreMark代码了。 打开KEIL工程,可以直接编译通过。 ![]() 下面添加printf打印函数,通过串口输出。如下图所示,勾选STDOUT,然后实现stdout_putchar函数。 ![]() 下面是实现的stdout_putchar函数。 int stdout_putchar (int ch) { LL_USART_TransmitData8(USART1,ch&0xff); while(!(USART1->ISR & (0x1UL << 7))); return 0; } 添加之后可以编译下载测试一下printf输出是否正常。 ![]() 下面添加CoreMark代码。CoreMark主要移植修改在core_portme.c和core_portme.h文件。再就是core_main.c中有main函数与我们的main.c中重复了。所以我修改了core_main.c中main函数名称为coremark_main。 ![]() ![]() 修改core_portme.h文件。查看一些宏定义选项,选择适合的参数。这里我主要修改如下。增加迭代次数,要满足运行时间要求。以及编译器优化选项。 ![]() 编译器优化设置,使用LTO加—Omax参数。 ![]() 因为CoreMark需要知道运行时间,所以还要修改时间计时处理。修改core_portme.c文件中关于计时处理宏定义。使用SysTick的1ms定时。如下图: ![]() 最后在mian.c的main函数中调用CoreMark的修改的coremark_main()函数。然后编译下载。 如图 ![]() 最终串口输出结果如下:CoreMark得分为641。与官方的651很接近了。 ![]() 也测试了下不打开ICACHE和DCACHE的情况下,得分在400多。还有其他编译优化选项时,都达不到600分。 ![]() ![]() 至此,CoreMark移植跑分就完成了。 , @' P4 O& s0 V4 E9 a; K |
写的相当详细啊 |
STM32怎么选型
内存配置的艺术:STM32为嵌入式系统高端UI优化RAM和闪存的三大策略
STM32U5 系列使用 LPBAM 进行功耗优化
【STM32U545】实现CAN数据收发
【我的STM32U5 项目秀】+04-MPU6050在STM32U5上的移植
实战经验 | 基于 STM32U5 创建 USBx_CustomHID 通信
STM32U5 x E-BIKE,记录你的骑行多巴胺
基于STM32U5系列TIMER+DMA+DAC应用经验分享
实战经验 | 基于 STM32U5 片内温度传感器正确测算温度
【文末有礼】新款STM32U5:让便携产品拥有惊艳图效