本帖最后由 htjgdw 于 2019-4-19 14:27 编辑
ST在发布每一款STM32时都会标出它的CoreMark跑分,这是一个测试单核CPU性能的跑分程序,有源码,支持多种平台(在Windows,Linux下都可以编译执行)。
在跑操作系统的情况下STM32F750的CoreMark得分会是多少呢?出于好奇本人试着交叉编译出了可以在uClinux系统下执行的coremark程序。
具体的操作如下:
1. 在Linux宿主机(或虚拟机)上下载CoreMark源码,
https://github.com/eembc/coremark
2. 解压并进入coremark目录:cd coremark-master/
3. 修改coremark/linux/core_porme.mak文件
# Use this flag to define compiler to use
#CC = gcc
CC = arm-uclinuxeabi-gcc
#CFLAGS = $(PORT_CFLAGS) -I$(PORT_DIR) -I. -DFLAGS_STR="$(FLAGS_STR)"
CFLAGS = $(PORT_CFLAGS) -I$(PORT_DIR) -I. -DFLAGS_STR="$(FLAGS_STR)" -mcpu=cortex-m3 -mthumb -static
4. 编译 make PORT_DIR=linux, 成功后会在coremark目录生成一个名为coremark.exe的可执行文件(exe扩展名是脚本里写死的,不必在意,自己重命名一下就可以)
5. 把上一步生成的可执行文件拷贝到STM32F750板子上(拷贝的方法随意,nfs,tftp,scp,U盘,sd卡,甚至串口传送都可以)
6. 添加可执行属性并执行, 然后静待十几秒钟就可以看到测试结果了
- /tmp # chmod +x coremark
- /tmp # ./coremark
- 2K performance run parameters for coremark.
- CoreMark Size : 666
- Total ticks : 17049
- Total time (secs): 17.049000
- Iterations/Sec : 645.199132
- Iterations : 11000
- Compiler version : GCC4.4.1
- Compiler flags : -O2 -DPERFORMANCE_RUN=1 -lrt
- Memory location : Please put data memory location here
- (e.g. code in flash, data on heap etc)
- seedcrc : 0xe9f5
- [0]crclist : 0xe714
- [0]crcmatrix : 0x1fd7
- [0]crcstate : 0x8e3a
- [0]crcfinal : 0x33ff
- Correct operation validated. See README.md for run and reporting rules.
- CoreMark 1.0 : 645.199132 / GCC4.4.1 -O2 -DPERFORMANCE_RUN=1 -lrt / Heap
复制代码
最后可以看到coremark实测得分为645,这和ST官方的1082 coremark还是有很大不同的(裸奔,只跑coremark)。
考虑到uClinux是一个多任务的操作系统,这个得分还是比较合理,而且有实际意义的。随着编译器的更新和优化这个成绩还有提升的空间
下面是STM32F750 uClinux跑分时后台运行的任务:
- /tmp # ps
- PID USER VSZ STAT COMMAND
- 1 root 420 S init
- 2 root 0 SW [kthreadd]
- 3 root 0 SW [ksoftirqd/0]
- 4 root 0 SW [kworker/0:0]
- 5 root 0 SW< [kworker/0:0H]
- 6 root 0 SW [kworker/u2:0]
- 7 root 0 SW< [khelper]
- 8 root 0 SW [kdevtmpfs]
- 9 root 0 SW< [writeback]
- 10 root 0 SW< [crypto]
- 11 root 0 SW< [bioset]
- 12 root 0 SW< [kblockd]
- 13 root 0 SW< [cfg80211]
- 14 root 0 RW [kworker/0:1]
- 15 root 0 SW< [rpciod]
- 16 root 0 SW [kswapd0]
- 17 root 0 SW [fsnotify_mark]
- 18 root 0 SW< [nfsiod]
- 40 root 0 SW [irq/60-stm32-qu]
- 41 root 0 SW [spi4]
- 42 root 0 SW< [dwc2]
- 43 root 0 SW [irq/64-40012c00]
- 44 root 0 SW [kworker/u2:1]
- 45 root 0 SW< [krfcommd]
- 46 root 0 SW< [deferwq]
- 71 root 316 S /usr/sbin/dropbear
- 79 root 0 SWN [jffs2_gcd_mtd3]
- 80 root 464 S -/bin/hush
- 96 root 428 R ps
- /tmp #
复制代码
一周热门 更多>