[STM32U0] 【STM32U083测评】简单测一下coremark

[复制链接]
3171|2
 楼主| xhackerustc 发表于 2024-5-19 09:11 | 显示全部楼层 |阅读模式
有点好奇这个芯片的coremark跑分,STM手册里数据这个数据在56MHZ时是136,也就是取得了2.39coremark/MHZ的成绩,接着第一篇测评贴自己动手试试看看自己环境是不是编译环境是不是有差距。
clone coremark代码
  1. git clone https://github.com/eembc/coremark


创建coremark工程
因coremark依赖printf,所以最好以Projects/NUCLEO-U083RC/Examples/UART/UART_Printf/为模板创建coremark工程
  1. cp -a Projects/NUCLEO-U083RC/Examples/UART/UART_Printf/ Projects/NUCLEO-U083RC/Examples/coremark


拷贝coremark相关文件
把前面clone下的coremark中顶级目录下的*.c文件和*.h文件,以及simple目录下的*.c和*.h拷贝到Projects/NUCLEO-U083RC/Examples/coremark/


CMakeLists.txt修改
相对于点灯用的CMakelists.txt,这次改动如下
  1. diff --git a/CMakeLists.txt b/CMakeLists.txt
  2. index 554b81a..e4e6c85 100644
  3. --- a/CMakeLists.txt
  4. +++ b/CMakeLists.txt
  5. @@ -17,7 +17,7 @@ set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
  6. set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

  7. add_compile_options(-mthumb -mcpu=cortex-m0plus)
  8. -add_compile_options(-ffunction-sections -fdata-sections -fno-strict-aliasing -fno-builtin -fno-common -Wall -Wshadow -Wdouble-promotion -Werror -Wno-unused-parameter)
  9. +add_compile_options(-ffunction-sections -fdata-sections -fno-builtin -fno-common -Wall -Wshadow -Wdouble-promotion -Werror -Wno-unused-parameter)

  10. add_compile_options(-O3)

  11. @@ -28,22 +28,23 @@ set(CMAKE_C_STANDARD 99)
  12. include_directories(Drivers/CMSIS/Include/
  13.                      Drivers/CMSIS/Device/ST/STM32U0xx/Include/
  14.                      Drivers/STM32U0xx_HAL_Driver/Inc/
  15. -                   Projects/NUCLEO-U083RC/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/Inc/)
  16. +                   Drivers/BSP/STM32U0xx_Nucleo/
  17. +                   Projects/NUCLEO-U083RC/Examples/coremark/Inc/)

  18. add_definitions(-DSTM32U083xx -DUSE_FULL_LL_DRIVER)

  19. file(GLOB_RECURSE SOURCES
  20.                 "Drivers/STM32U0xx_HAL_Driver/Src/*.c"
  21. -               "Projects/NUCLEO-U083RC/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/Src/*.c"
  22. -                "Projects/NUCLEO-U083RC/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/STM32CubeIDE/Application/User/*.c"
  23. -                "Projects/NUCLEO-U083RC/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/STM32CubeIDE/Application/Startup/startup_stm32u083rctx.s"
  24. +               "Projects/NUCLEO-U083RC/Examples/coremark/Src/*.c"
  25. +                "Projects/NUCLEO-U083RC/Examples/coremark/STM32CubeIDE/Application/User/*.c"
  26. +                "Projects/NUCLEO-U083RC/Examples/coremark/STM32CubeIDE/Application/Startup/startup_stm32u083rctx.s"
  27.                  )

  28. -set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/Projects/NUCLEO-U083RC/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/STM32CubeIDE/STM32U083RCTX_FLASH.ld)
  29. +set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/Projects/NUCLEO-U083RC/Examples/coremark/STM32CubeIDE/STM32U083RCTX_FLASH.ld)
  30. add_link_options(
  31.                  -mthumb -mcpu=cortex-m0plus
  32.                 -Wl,--gc-sections,--print-memory-usage,-Map,${PROJECT_NAME}.map
  33. -                --specs=nano.specs
  34. +                --specs=nano.specs -u_printf_float
  35.                  --specs=nosys.specs)
  36. add_link_options(-T ${LINKER_SCRIPT})


core_portme.c修改
时间相关的改成下面这样:
  1. #define GETMYTIME(_t)              (*_t = HAL_GetTick())
core_portme.h加入:
  1. #define COMPILER_FLAGS "-O3"

uart的相关设置
UART_Printf工程的UART默认设置是UART_PARITY_ODD,所以要么PC机串口终端匹配设置,要么把它改成UART_PARITY_NONE,也即
MX_USART2_UART_Init(void)函数中

  1.   huart2.Init.Parity = UART_PARITY_NONE;


stm32u0xx_it.c的SysTick_Handler修改成这样
  1. void SysTick_Handler(void)
  2. {
  3.   /* USER CODE BEGIN SysTick_IRQn 0 */

  4.   /* USER CODE END SysTick_IRQn 0 */
  5.   HAL_IncTick();
  6.   /* USER CODE BEGIN SysTick_IRQn 1 */

  7.   /* USER CODE END SysTick_IRQn 1 */
  8. }


跑分结果如下
1.jpg

数据分析
特意把SysClockFreq的频率给打印出来了,coremark/MHZ数据算下来只有官方的81.2%,个人分析编译器是一个影响因素,另外官方的数据是不是开了ART的cache?
中国龙芯CDX 发表于 2024-6-28 18:08 | 显示全部楼层
大多数人环境编译就很难通过是不是依赖库比较多?
Stahan 发表于 2024-6-30 10:29 | 显示全部楼层
coremark得分依据是什么啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

166

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部