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

有点好奇这个芯片的coremark跑分,STM手册里数据这个数据在56MHZ时是136,也就是取得了2.39coremark/MHZ的成绩,接着第一篇测评贴自己动手试试看看自己环境是不是编译环境是不是有差距。
clone coremark代码

复制
git clone https://github.com/eembc/coremark



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

复制
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,这次改动如下

复制
diff --git a/CMakeLists.txt b/CMakeLists.txt

index 554b81a..e4e6c85 100644

--- a/CMakeLists.txt

+++ b/CMakeLists.txt

@@ -17,7 +17,7 @@ set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

 set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)



 add_compile_options(-mthumb -mcpu=cortex-m0plus)

-add_compile_options(-ffunction-sections -fdata-sections -fno-strict-aliasing -fno-builtin -fno-common -Wall -Wshadow -Wdouble-promotion -Werror -Wno-unused-parameter)

+add_compile_options(-ffunction-sections -fdata-sections -fno-builtin -fno-common -Wall -Wshadow -Wdouble-promotion -Werror -Wno-unused-parameter)



 add_compile_options(-O3)



@@ -28,22 +28,23 @@ set(CMAKE_C_STANDARD 99)

 include_directories(Drivers/CMSIS/Include/

                     Drivers/CMSIS/Device/ST/STM32U0xx/Include/

                     Drivers/STM32U0xx_HAL_Driver/Inc/

-                   Projects/NUCLEO-U083RC/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/Inc/)

+                   Drivers/BSP/STM32U0xx_Nucleo/

+                   Projects/NUCLEO-U083RC/Examples/coremark/Inc/)



 add_definitions(-DSTM32U083xx -DUSE_FULL_LL_DRIVER)



 file(GLOB_RECURSE SOURCES

                "Drivers/STM32U0xx_HAL_Driver/Src/*.c"

-               "Projects/NUCLEO-U083RC/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/Src/*.c"

-                "Projects/NUCLEO-U083RC/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/STM32CubeIDE/Application/User/*.c"

-                "Projects/NUCLEO-U083RC/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/STM32CubeIDE/Application/Startup/startup_stm32u083rctx.s"

+               "Projects/NUCLEO-U083RC/Examples/coremark/Src/*.c"

+                "Projects/NUCLEO-U083RC/Examples/coremark/STM32CubeIDE/Application/User/*.c"

+                "Projects/NUCLEO-U083RC/Examples/coremark/STM32CubeIDE/Application/Startup/startup_stm32u083rctx.s"

                 )



-set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/Projects/NUCLEO-U083RC/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/STM32CubeIDE/STM32U083RCTX_FLASH.ld)

+set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/Projects/NUCLEO-U083RC/Examples/coremark/STM32CubeIDE/STM32U083RCTX_FLASH.ld)

 add_link_options(

                 -mthumb -mcpu=cortex-m0plus

                -Wl,--gc-sections,--print-memory-usage,-Map,${PROJECT_NAME}.map

-                --specs=nano.specs

+                --specs=nano.specs -u_printf_float

                 --specs=nosys.specs)

 add_link_options(-T ${LINKER_SCRIPT})




core_portme.c修改
时间相关的改成下面这样:

复制
#define GETMYTIME(_t)              (*_t = HAL_GetTick())

core_portme.h加入:

复制
#define COMPILER_FLAGS "-O3"


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

复制
  huart2.Init.Parity = UART_PARITY_NONE;



stm32u0xx_it.c的SysTick_Handler修改成这样

复制
void SysTick_Handler(void)

{

  /* USER CODE BEGIN SysTick_IRQn 0 */



  /* USER CODE END SysTick_IRQn 0 */

  HAL_IncTick();

  /* USER CODE BEGIN SysTick_IRQn 1 */



  /* USER CODE END SysTick_IRQn 1 */

}



跑分结果如下

---------------------
作者:xhackerustc
链接:https://bbs.21ic.com/icview-3378070-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值