不爱说话的个人空间 https://passport2.21ic.com/?83633 [收藏] [复制] [RSS]

日志

STM32F750 uClinux系统coremark跑分

已有 647 次阅读2019-4-22 16:02 |个人分类:STM32F750|系统分类:嵌入式系统| STM32F7, coremark, uClinux, Linux, 测试

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      : 17089
Total time (secs): 17.089000
Iterations/Sec   : 643.688923
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 : 643.688923 / GCC4.4.1 -O2 -DPERFORMANCE_RUN=1  -lrt / Heap
最后可以看到coremark实测得分为643,这和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 #


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)