本帖最后由 satoll 于 2023-7-18 17:41 编辑
【米尔基于瑞萨 RZ/G2L开发板测评】+03.CPU/DDR功能测试(zmj)
MYD-YG2LX 采用瑞萨 RZ/G2L 作为核心处理器,该处理器搭载双核 Cortex-A55@1.2GHz+Cortex-M33@200MHz 处理器,其内部集成高性能 3D 加速引擎 Mail-G31 GPU(500MHz)和视频处理单元(支持 H.264 硬件编解码),16 位的 DDR4-1600 / DDR3L-1333 内存控制器、千兆以太网控制器、USB、CAN、SD 卡、MIPI-CSI 等外设接口,在工业、医疗、电力等行业都得到广泛的应用。 本章节将以米尔的 MYD-YG2LX 开发板为例进行CPU/DDR功能测试说明。 1. CPU性能测试
1.1 查看CPU信息
查看CPU信息,反馈结果是ARM Cortex-A55双核,支持32-bit/64-bit两种模式,L2-Cache大小为256kB。 - //------查看CPU信息:lscpu
- //---指令
- lscpu
- //---log信息(示例)
- root@myir-yg2lx:~# lscpu
- Architecture: aarch64
- CPU op-mode(s): 32-bit, 64-bit
- Byte Order: Little Endian
- CPU(s): 2
- On-line CPU(s) list: 0,1
- Thread(s) per core: 1
- Core(s) per socket: 2
- Socket(s): 1
- Vendor ID: ARM
- Model: 0
- Model name: Cortex-A55
- Stepping: r2p0
- CPU max MHz: 1200.0000
- CPU min MHz: 150.0000
- BogoMIPS: 48.00
- L2 cache: 256 KiB
- Vulnerability Itlb multihit: Not affected
- Vulnerability L1tf: Not affected
- Vulnerability Mds: Not affected
- Vulnerability Meltdown: Not affected
- Vulnerability Spec store bypass: Not affected
- Vulnerability Spectre v1: Mitigation; __user pointer sanitization
- Vulnerability Spectre v2: Not affected
- Vulnerability Srbds: Not affected
- Vulnerability Tsx async abort: Not affected
- Flags: fp asimd evtstrm crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
- root@myir-yg2lx:~#
- //------其他指令
- CPU内核: lscpu | grep 'Core(s) per socket:' | awk '{printf$4}' && echo ""
- CPU主频: cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq
- CPU温度: cat /sys/class/thermal/thermal_zone0/temp
复制代码
还可以通过查看/proc/cpuinfo 文件获取CPU信息,获取的信息不如lscpu更加详细。 - //------查看CPU信息:
- cat /proc/cpuinfo
- //---log信息(示例)
- root@myir-yg2lx:~/zmj_ws# cat /proc/cpuinfo
- processor : 0
- BogoMIPS : 48.00
- Features : fp asimd evtstrm crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
- CPU implementer : 0x41
- CPU architecture: 8
- CPU variant : 0x2
- CPU part : 0xd05
- CPU revision : 0
- processor : 1
- BogoMIPS : 48.00
- Features : fp asimd evtstrm crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
- CPU implementer : 0x41
- CPU architecture: 8
- CPU variant : 0x2
- CPU part : 0xd05
- CPU revision : 0
- root@myir-yg2lx:~/zmj_ws#
复制代码
1.2 CPU 压力测试
CPU 的压力的测试方式有很多,我们通过 bc 命令来计算圆周率方法来测试 CPU 在运算过程中的稳定性。 - //------CPU压力测试:PI(派)运算
- //---执行PI(派)运算
- echo "scale=5000; 4*a(1)" | bc -l -q &
- //---计时模式执行PI(派)运算:统计时间只能当作参考
- time echo "scale=5000; 4*a(1)" | bc -l -q &
- 上述命令将在后台计算的 PI,并精确到小数点后 5000 位,计算过程需要一段时间。
- 约 1.25 分钟后,PI 结果被计算出来。 在此期间 CPU 使用率达到 100%,没有发生异常,说明 CPU 压力测试通过。还可以继续增加精确值,可进一步提高测试压力。
复制代码
1.3 CoreMark性能测试
先对CoreMark做一个简单介绍,然后再进行CoreMark测试。
1.3.1 CoreMark简介//------CoreMark简介 CoreMark是用来衡量嵌入式系统中心处理单元(CPU,或叫做微控制器MCU)性能的标准。 该标准于2009年由EEMBC组织的Shay Gla-On提出,并且试图将其发展成为工业标准,从而代替陈旧的Dhrystone标准。代码使用C语言写成,包含如下的运算法则:列举(寻找并排序),数学矩阵操作(普通矩阵运算)和状态机(用来确定输入流中是否包含有效数字),最后还包括CRC(循环冗余校验)。 CoreMark是由EEMBC(Embedded Microprocessor Benchmark Consortium)的Shay Gla-On于2009年提出的一项基准测试程序,CoreMark的主要目标是简化操作,并提供一套测试单核处理器核心的方法。测试标准是在配置参数的组合下单位时间内运行的CoreMark程序次数(单位:CoreMark/MHz),该数字值越大则说明测试的性能越好。 目前在嵌入式CPU行业中普遍公认的性能测试指标的标准主要使用以下三种,MIPS、Dhrystone、Coremark,而CoreMark与Dhrystone一样,拥有体积小、方便移植、易于理解、免费并且显示单个数字基准分数。与Dhrystone不同的是,Dhrystone的主要部分实际上暴露了编译器优化工作负载的能力,而不是实际MCU或CPU的能力,的性能,而CoreMark具有特定的运行和报告规则,从而可以避免由于所使用的编译库不同而导致的测试结果难以比较。
1.3.2 CoreMark源码获取//------CoreMark源码获取
EEMBC 在将 CoreMark 源码托管在 GitHub 上可以访**ithub.com/eembc/coremark直接点击下载获得源码;也可以通过 git 命令下载到本地。 - //------CoreMark源码获取
- //---直接下载
- https://github.com/eembc/coremark
- //---Git下载
- git clone https://github.com/eembc/coremark.git
复制代码
CoreMark 项目的详细介绍,可以查阅当前目录下 “coremark/docs/html/index.html” 。以下是当前目录的每个文件介绍: - #在tree命令的输出中,作了部分删除(不影响分析整个CoreMark工程)
- imaginemiracle@:coremark$ tree
- .
- ├── barebones --移植到裸机环境下需要修改的目录
- │ ├── core_portme.c --移植的目标平台配置信息
- │ ├── core_portme.h --计时以及板级初始化实现
- │ ├── core_portme.mak --该子目录的makefile
- │ ├── cvt.c
- │ └── ee_printf.c --打印函数串口发送实现
- ├── core_list_join.c --列表操作程序
- ├── core_main.c --主程序
- ├── coremark.h --项目配置与数据结构的定义头文件
- ├── coremark.md5
- ├── core_matrix.c --矩阵运算程序
- ├── core_state.c --状态机控制程序
- ├── core_util.c --CRC计算程序
- ├── cygwin --x86 cygwin和gcc 3.4(四核,双核和单核系统)的测试代码
- │ ├── core_portme.c
- │ ├── core_portme.h
- │ └── core_portme.mak
- ├── freebsd --以下同理,是在不同操作系统下的测试代码
- │ ├── ...
- ├── LICENSE.md
- ├── linux
- │ ├── ...
- ├── linux64
- │ ├── ...
- ├── macos
- │ ├── ...
- ├── Makefile
- ├── README.md --自述文件,CoreMark项目的基本介绍
- ├── rtems
- │ ├── ...
- └──simple
- ├── ...
- └── core_portme.mak
复制代码
1.3.3 运行coremark.exe测试性能
运行coremark.rvexe测试性能。
2. DDR内存性能测试 MYD-YG2LX 核心芯片提供了一个外部 SDRAM 接口,支持外部存储器高达 4 Gbytes,16 位的 DDR3L-1333 / DDR4-1600,该开发板内存采用 DDR4,分为 1GByte 和2GBytes 版本,下面以 1GByte DDR 来说明内存的测试。
2.1 DDR内存基本信息
MYD-YG2LX开发板板载2GB的RAM,通过“free -h”指令读取内存DDR的使用情况。 - //------测试工具(MYD-YG2LX系统已带)
- free
- //---测试指令
- free -h
- 或者
- free -m
- //---参数解析
- -h 参数代表单位为 GByte
- -m 参数代表单位为 MByte
- total :内存总量
- used :被使用的内存量
- free :可使用的内存量
复制代码
2.2 查看内存信息
读取系统中的内存的参数信息,则可以通过/proc/meminfo 文件得到。 - //------查看内存信息
- cat /proc/meminfo
- //---参数解析
- MemTotal:所有可用的 RAM 大小,物理内存减去预留位和内核使用
- MemFree :LowFree + HighFree
- Buffers:用来给块设备做缓存的大小
- Cached:文件的缓冲区大小
- SwapCached:已经被交换出来的内存。与 I/O 相关
- Active:经常(最近)被使用的内存
- Inactive:最近不常使用的内存
- //---示例
- root@myir-yg2lx:~/zmj_ws# cat /proc/meminfo
- MemTotal: 1905056 kB
- MemFree: 900720 kB
- MemAvailable: 1079336 kB
- Buffers: 7064 kB
- Cached: 235636 kB
- SwapCached: 0 kB
- Active: 29408 kB
- Inactive: 349280 kB
- Active(anon): 592 kB
- Inactive(anon): 144636 kB
- Active(file): 28816 kB
- Inactive(file): 204644 kB
- Unevictable: 524288 kB
- Mlocked: 524288 kB
- SwapTotal: 0 kB
- SwapFree: 0 kB
- Dirty: 0 kB
- Writeback: 0 kB
- AnonPages: 660372 kB
- Mapped: 109644 kB
- Shmem: 11148 kB
- KReclaimable: 14216 kB
- Slab: 74784 kB
- SReclaimable: 14216 kB
- SUnreclaim: 60568 kB
- KernelStack: 3440 kB
- PageTables: 3800 kB
- NFS_Unstable: 0 kB
- Bounce: 0 kB
- WritebackTmp: 0 kB
- CommitLimit: 952528 kB
- Committed_AS: 1703192 kB
- VmallocTotal: 135290159040 kB
- VmallocUsed: 4952 kB
- VmallocChunk: 0 kB
- Percpu: 704 kB
- AnonHugePages: 581632 kB
- ShmemHugePages: 0 kB
- ShmemPmdMapped: 0 kB
- FileHugePages: 0 kB
- FilePmdMapped: 0 kB
- CmaTotal: 393216 kB
- CmaFree: 384076 kB
- HugePages_Total: 0
- HugePages_Free: 0
- HugePages_Rsvd: 0
- HugePages_Surp: 0
- Hugepagesize: 2048 kB
- Hugetlb: 0 kB
- root@myir-yg2lx:~/zmj_ws#
复制代码
2.3 内存功能压力测试-memtester内存功能压力测试-memtester 通过给定测试内存的大小和次数, 可以对系统现有的内存进行压力上的测试。可使用系统工具 memtester 进行测试,如指定内存大小 512MB,测试次数为 10,测试命令为“memtester 512M 10"。
下列以使用 512MB 内存空间,单次测试为例: - //------测试工具(MYD-YG2LX系统已带)
- memtester
- //------测试指令
- memtester 512M 1
- //---指令说明
- 指定内存大小 512MB,测试次数为 1
- //---示例
- root@myir-yg2lx:~/zmj_ws# memtester 512M 1
- memtester version 4.3.0 (64-bit)
- Copyright (C) 2001-2012 Charles Cazabon.
- Licensed under the GNU General Public License version 2 (only).
- pagesize is 4096
- pagesizemask is 0xfffffffffffff000
- want 512MB (536870912 bytes)
- got 512MB (536870912 bytes), trying mlock ...locked.
- Loop 1/1:
- Stuck Address : ok
- Random Value : ok
- Compare XOR : ok
- Compare SUB : ok
- Compare MUL : ok
- Compare DIV : ok
- Compare OR : ok
- Compare AND : ok
- Sequential Increment: ok
- Solid Bits : ok
- Block Sequential : ok
- Checkerboard : ok
- Bit Spread : ok
- Bit Flip : ok
- Walking Ones : ok
- Walking Zeroes : ok
- Done.
- root@myir-yg2lx:~/zmj_ws#
复制代码
//------end
|