【x3m】 ddr稳定性测试

DDR压力测试方案:

测试项

测试类别 环境温度 测试时长
DDR常温压力测试 25度 48H
DDR高温压力测试 60度 48H
DDR低温压力测试 -25度 48H

测试环境

DUT压力程序

ITEM 版本号/设备编号 适用测试项
测试脚本 xj3_ddr_stress.tar.gz 压力测试通用
DUT数量 5台及以上 压力测试通用

从 X3M附加工具包 的 DDR_Stress_Test选择对应sdk版本的目录下载 xj3_ddr_stress.tar.gz

设置CPU模式和降频温度

# 若设备重启需再次配置这两条指令
echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor 
echo 105000 > /sys/devices/virtual/thermal/thermal_zone0/trip_point_1_temp

执行压力测试脚本, 后台运行cpu test和bpu test

sh ./scripts/xj3-stress.sh
#1 cpu test
echo 4 > /proc/sys/vm/drop_caches
nohup /userdata/xj3_ddr_stress/bin/stressapptest -s 172800 -M 100 -f /tmp/sat.io1 -f /tmp/sat.io2 -i 4 -m 8 -C 2 -W >/userdata/cpu-stress.log &

Kernel随机panic

在DDR参数已经相对稳定了后,在长稳、高低温等长稳测试中,可能会发生一些随机的Kernel panic,每次panic的位置不同,且panic的位置多在Kernel的通用代码中。这种就没必要分析软件逻辑了,很可能是DDR不稳定或者软件内存破坏导致。

例如下图中出错的地址是ffc00000f630,而正常的ARM64的kernel是ffffff开头的。

【x3m】 ddr稳定性测试_第1张图片

比如下图中的错误地址,地址的最高24位由ffffff变成了fff7ffb,说明在bit52和bit59发生了翻转,这种问题经常在高低温测试中遇到

【x3m】 ddr稳定性测试_第2张图片

Stressapptest内存压力测试错误

DDR长稳测试中经常使用stressapptest做内存压力测试,开发中遇到怀疑有DDR故障的板子也可以使用stressapptest做一下测试,确认ddr问题。比如下面log,检测到miscompare错误,是DDR不稳定导致。

【x3m】 ddr稳定性测试_第3张图片

stressapptest是开源工具,可以进行内存、CPU和存储的压力测试。

预编译测试工具路径:sample\sample_base_test\bin

下载源码自行交叉编译:GitHub - stressapptest/stressapptest: Stressful Application Test - userspace memory and IO test。

常用测试命令:

./stressapptest -M 128M -s 3600 -m 8 -i 8 -C 8 -l /userdata/x3_stressapptest.log --cc_test

类似下方的打印应当出现:

【x3m】 ddr稳定性测试_第4张图片

ECC错误检测

XJ3 系统软件支持DDR的ECC错误纠错、检测功能。打开ECC保护后,如果检测到ECC错误,也可以确认为DDR不稳定。

可以在如下sysfs接口中查询是否发生1bit、2bit和3bit以上翻转。

cat /sys/devices/platform/soc/a2d10000.ddr_monitor/ddr_ecc_stat

打开ECC后,如果发生了Kernel Panic,也会在panic log中打印ecc统计信息。如下图log,发生了2次2bit的翻转。

【x3m】 ddr稳定性测试_第5张图片

ECC保护可以通过下面命令打开,重启后生效。

hrut_ddr_ecc s on
reboot

你可能感兴趣的:(X3M,linux)