飞凌课堂丨OK1046A-C内存交互测试,小白也能看懂

原创 2020-03-04 16:34:00 LS1046A 内存交互测试

笔者最近需要进行OK1046A-C内存部分的测试,linux相关的资料和方法纷杂繁多,但如鼠饮河,自得其量,还是找了如下软件进行测试,也分享给大家。

01、工具简介

 Bandwitdh工具简介  

Bandwidth是一款内存带宽基准测试程序,通过顺序读写与随机读写不同大小的数据块,测试系统的内存带宽性能。

它提供了一套汇编语言实现的支持库,用来完成体系结构相关的特定操作,可以测量每个内存系统的最大内存带宽,包括主内存,L1和L2缓存,framebuffer内存和寄存器的快速,连续的内存访问。

Bandwidth也包括自动制图的结果,存储到一个BMP图像文件。

 Mbw工具简介  

Mbw是一个内存带宽测试工具可以测试在字节拷贝,块拷贝,整体拷贝三种不同方式下的内存拷贝速度,程序源码比较简单,便于理解。

▣ 获取方式:git clone http://github.com/raas/mbw 

Memtester工具简介  

Memtester是一款进行内存压力测试的工具,通过对两块内存里的数据进行一系列的加减乘除亦或位与之类的算法后进行对比,用于检查是否存在内存移位之类的问题出现

▣ 获取方式:wget 点此处获取>>

memtester的使用很简单./memtester <memory> [runs]其中<memory>:内存大小,单位M,[runs]:运行次数。

02、编译方法

 bandwidth来源   

▣ 下载并解压bandwidth

源码路径:https://zsmith.co/archives/bandwidth-1.5.1.tar.gz

解压并进入源码目录:

tar xvf bandwidth-1.5.1.tar.gz

cd bandwidth-1.5.1/

▣  修改makefile文件并进行编译

Vim Makefile

修改如下:

CC=arm-xxx-gcc -Wall

LD=arm-xxx-gcc

ARM_AS=arm-xxx-as

ARM_CC=arm-xxx-gcc

退出并make bandwidth-rpi32即可得到二进制程序(arm-xxx-gcc为交叉编译工具)。

 Mbw   

▣ 下载并进入源码目录编译

git clone 

https://github.com/raas/mbw.git

cd mbw

arm-xxx-gcc mbw.c –o mbw

▣ 在源码目录下得到mbw应用程序。

 Memteser   

▣ 下载并解压源码

wget 点此处获取>>

tar xvf memtester-4.3.0.tar.gz

cd memtester-4.3.0/

▣ 修改配置文件:

分别把conf-ld和conf-cc文件中的"cc"(一般在文件首行)替换为“arm-xxx-gcc”

在conf-ld的第一行后面加上 -static

修改文件Makefile,更改 INSTALLPATH = `pwd`/INSTALL

执行make即可编译成功,在源码目录下得到应用程序。

03使用方法和示例

 bandwidth工具的使用   

我们将bandwidth移植到开发板上运行(因OK1046A-C gcc版本过高存在兼容性问题未能编译成功,此处以其它板卡数据结果做工具介绍,数据不做 OK1046A-C 的参考)./bandwidth –fastest 得出如下图表:


这部分图表我们可以得到一些cpu与内存之间互相访问的数据传输和命令交互的性能,以及framebuffer的读写速度。

clip_image002.png

上表可见,内存的读写速度和顺序还是随机还是有很大关系的,在写数据时尤为明显。

其次我们可以观察到,写的数据块的大小会影响读写速度,在两个关键点会产生突变(32kb/256kb),这是由于各级cache的不同,进行内存读写时,较小的数据块会存放在cache中,较大的数据块则会经过cache存放在主存中。

突变的原因就是达到了cache的上限,而转向了下层存储。

 mbw工具的使用   

将mbw工具移植到开发板上,并执行./mbw -q -n 3 320

-q 隐藏日志,3 测试次数,64 内存大小(单位是M)结果如下:

我们只需要关注AVG平均值即可。

三种不同的测试方法分别对应的是memcpy(内存拷贝),dump(字符串拷贝),mcblock(内存块拷贝)。

https://mmbiz.qpic.cn/mmbiz_png/6aVaON9Kibf6rNNoOpEpu2UHw2b0pqkRCGXtHycozFJMElusia6Giar9taX7nGbWwE4kEHM5wsfVKBibxm70xygicPw/640

我们可以看到,OK1046A-C的ddr4d的内存的运行速度是非常快的,再内存拷贝的速度达到了2GiB/s,甚至于接近我们的服务器的读写速度。

 memtester的使用   

▣ 先运行free –h 得出剩余内存:

https://mmbiz.qpic.cn/mmbiz_png/US10Gcd0tQEwx2fRgwiaw8fia8icdOibMck2hCaiaCkNwGteFjxb2EHvewkgzfEAB9yz6vkbz2AwF6LxyZVdvLsounA/640

▣ 可以看到,该开发板剩余1.2G可用内存,所以我使用1G内存大小运行内存检错程序memtester。

▣ ./me mtester 1G 3 截图如下:

https://mmbiz.qpic.cn/mmbiz_png/TN05MmJLxMqhbWI0PTR7PVp5VGQZcyomQGqm9NOibAvmwWicWBCib5zPvibLjtoKNkxEkk7wcLmtG20phiaTvckRVBg/640

如此便是内存运行正常,笔者重复了三天,利用脚本反复调用memtester程序,最终均未发现内存报错和移位的问题,可见内存稳定性基本达标。

 


 

结语

综上我们可以看到,OK1046A-C板卡的ddr4内存读写速度非常快,内存使用也非常稳定,可惜因为版本原因未能测得CPU内存交互的实际速度以及CPU一级二级缓存的使用速度,在后期经过修改后再进行追加。

下一期笔者将针对于OK1046A-C的万兆网测试和网络转换方面,请各位保持关注。

 

相关产品 >

  • FET1046A-C核心板

    4核1.8GHz,原生8网口灵活扩展|LS1046A 系列ARM工控核心板基于 NXP公司的LS1046A高性能64位ARM四核处理器。LS1046A处理器将四个64位ARM Cortex-A72内核与数据包处理加速和高速外设相集成,CoreMark跑分高达45000,LS1046A强大的网络处理能力和丰富的高速接口,适用于工业路由、边缘计算网关、IP-PBX等产品,以及边缘计算、 能源物联网、智慧城市、工业自动化、视频监控等应用领域。

    了解详情
    FET1046A-C核心板
  • OK1046A-C2开发板

    4核1.8GHz,原生8网口,支持万兆网络|
    飞凌嵌入式LS1046a ARM工控主板系列LS1046开发板 基于 NXP LS1046A 四核Cortex A72 CPU,强大的万兆网络处理能力和丰富的高速接口,CoreMark跑分高达45000。飞凌不仅仅提供了LS1046A开发板套件,还提供了调试心得、LS1046A硬件数据手册,并根据应用情况发布了 LS1046A 5G CPE 工业网关方案、边缘计算网关方案,降低了客户二次开发的难度。更多关于LS1046A的解决方案,产品详情,您可以登入飞凌嵌入式官网了解。

    了解详情
    OK1046A-C2开发板

推荐阅读 换一批 换一批