前言
MCU性能怎么样,跑个分看看。
过程
https://github.com/eembc/coremark下载代码
基于\ModulesDemo\UART 工程
将
core_list_join.c
core_main.c
core_matrix.c
core_state.c
core_util.c
coremark.h
barebones/core_portme.c
barebones/core_portme.h
添加到工程源码路径,添加到工程
core_portme.h 中
添加
#define ITERATIONS 1000
extern unsigned int gu32_SystemCount;
#define CLOCKS_PER_SEC 1000
#define HAS_STDIO 1
#define HAS_PRINTF 1
FLAGS_STR 根据实际编译优化改为”-O3”或者”-O1”或者”-Ofast”
typedef size_t ee_size_t; 改为
typedef unsigned int ee_size_t;
core_portme.c 中
CORETIMETYPE
barebones_clock()
{
"You must implement a method to measure time in barebones_clock()! This function should return current time.\n"
return gu32_SystemCount;
}
注释掉以下内容
///
/// "Call board initialization routines in portable init (if needed), in particular initialize UART!\n"
Core_main.c 中
MAIN_RETURN_TYPE
main(int argc, char *argv[])
改为
MAIN_RETURN_TYPE
coremark_main(int argc, char *argv[])
注释掉
#if (MEM_METHOD == MEM_STACK)
#endif
ee_u8 stack_memblock[TOTAL_DATA_SIZE * MULTITHREAD]; 放在main函数外,
因为放在函数内栈不够导致异常。
main.c 中
调用
extern int coremark_main(int argc, char *argv[]);
coremark_main(0,0);
core_main.c 中所有\n 换为\r\n .
测试记录如下
-O1优化
-Ofast优化
-O3优化
https://www.eembc.org/coremark/scores.php可以查看跑分
463.907961/180=2.57726645CoreMark/MHz
对比STM32的L4和F4得分如下
总结
- 优化等级对得分影响较大
- -Ofast和-O3优化得分一样
- 综合性能不错介于STM32L和STMF4之间。
|