ddr系统检验

本文介绍了使用stressapptest和memtester工具进行DDR内存的压力测试,以及如何根据测试结果进行故障排查。测试参数根据内存容量调整,并展示了正常与异常的日志情况。此外,还提到了reboot烤机测试作为验证手段,以及分析paniclog和硬件排查方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)stressapptest
./stressapptest -h
1970/01/01-00:28:32(UTC) Stats: SAT revision 1.0.9_autoconf, 64 bit binary
Usage: ./sat(32|64) [options]
-M mbytes megabytes of ram to test // 多少M内存需要测试
–reserve-memory If not using hugepages, the amount of memory to reserve for the system
-H mbytes minimum megabytes of hugepages to require
-s seconds number of seconds to run //测试多长时间
-m threads number of memory copy threads to run
-i threads number of memory invert threads to run //多少线程交叉去i
-C threads number of memory CPU stress threads to run //多少个CPU去测试
–findfiles find locations to do disk IO automatically
-d device add a direct write disk thread with block device (or file) ‘device’
-f filename add a disk thread with tempfile ‘filename’
-l logfile log output to file ‘logfile’
–no_timestamps do not prefix timestamps to log messages
–max_errors n exit early after finding ‘n’ errors
-v level verbosity (0-20), default is 8
–printsec secs How often to print ‘seconds remaining’
-W Use more CPU-stressful memory copy // 使用更多的cpu去测试
-A run in degraded mode on incompatible systems
-p pagesize size in bytes of memory chunks
–filesize size size of disk IO tempfiles
-n ipaddr add a network thread connecting to system at ‘ipaddr’
–listen run a thread to listen for and respond to network threads.
–no_errors run without checking for ECC or other errors
–force_errors inject false errors to test error handling
–force_errors_like_crazy inject a lot of false errors to test error handling
-F don’t result check each transaction
–stop_on_errors Stop after finding the first error. //发现错误后停止
–read-block-size size of block for reading (-d)
–write-block-size size of block for writing (-d). If not defined, the size of block for writing will be defined as the size of block for reading
–segment-size size of segments to split disk into (-d)
–cache-size size of disk cache (-d)
–blocks-per-segment number of blocks to read/write per segment per iteration (-d)
–read-threshold maximum time (in us) a block read should take (-d)
–write-threshold maximum time (in us) a block write should take (-d)
–random-threads number of random threads for each disk write thread (-d)
–destructive write/wipe disk partition (-d)
–monitor_mode only do ECC error polling, no stress load.
–cc_test do the cache coherency testing
–cc_inc_count number of times to increment the cacheline’s member
–cc_line_count number of cache line sized datastructures to allocate for the cache coherency threads to operate
–cc_line_size override the auto-detected cache line size
–cpu_freq_test enable the cpu frequency test (requires the --cpu_freq_threshold argument to be set)
–cpu_freq_threshold fail the cpu frequency test if the frequency goes below this value (specified in MHz)
–cpu_freq_round round the computed frequency to this value, if set to zero, only round to the nearest MHz
–paddr_base allocate memory starting from this address
–pause_delay delay (in seconds) between power spikes
–pause_duration duration (in seconds) of each pause
–local_numa choose memory regions associated with each CPU to be tested by that CPU
–remote_numa choose memory regions not associated with each CPU to be tested by that CPU
–channel_hash mask of address bits XORed to determine channel. Mask 0x40 interleaves cachelines between channels
–channel_width bits width in bits of each memory channel
–memory_channel u1,u2 defines a comma-separated list of names for dram packages in a memory channel. Use multiple times to define multiple channels.
12小时:126060S=43200
总容量是512 64MB进行测试
./stressapptest -s 43200 -i 4 -C 4 -W --stop_on_errors -M 64
如果总容量是1GB则申请128MB进行stressapptest
./stressapptest -s 43200 -i 4 ‐C 4 ‐W --stop_on_errors -M 128
总容量是2GB则申请256MB进行stressapptest
./data/stressapptest -s 43200 -i 4 -C 4 -W --stop_on_errors -M 256
如果总容量是4GB则申请51 2MB进行stressapptest
./stressapptest -s 43200 -i 4 ‐C 4 ‐W --stop_on_errors ‐M 512
stressapptest 每隔1 0秒会打印一条log, log显示测试剩余时间。测试完成后会打印测试结果,如果测试通过
打印Status: PASS,测试失败打印Status: FAIL
(2)memtester申请内存测试,申请内存测试:
如果总容量是51 2MB则申请64MB进行memtester
memtester 64M
1GB则申请128MB进行memtester
memtester 128m
2GB则申请256MB进行memtester
memtester 256m
如果总容量是4GB则申请512MB进行memtester
memtester 512m
测试过程如果有发现错误会自动停止测试,如果持续测试.
12小时后,memtester仍在继续运行,说明测试过程没有发现错误.
没有问题log:
Loop 10 : 
  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
有问题log:
FAILURE : 0xffffffff  ! = 0xffffbfff at offset 0x03b7d9e4 . 
EXIT_FAIL_OTHERTEST
(3)reboot烤机测试
sleep 60 //每60秒测试一次 测试一晚上
reboot

1.查看串口log
1.如果串口log是在loader中的DDR初始化部分报错的话一定是DDR问题。
2.查看loader中DDR初始化部分log中的DDR容量行列bank及颗粒类型位宽信息是否正确。如果信息错误
可能引起DDR问题。
3.如果串口log是系统中的paniclog的话,可以多尝试几次看多次panic的地址是否一致,如果一致的话基
本上不可能是DDR问题,如果不一致的话有可能是DDR问题,也可能是电源问题。
看显示是否正常。如果显示异常是DDR问题的概率比较大。
3.做排查试验:
1.arm gpu降频,定频适当抬压,如果有效果的话就不是DDR问题。基本上能确认是电源问题。
2.关闭DDR变频功能,有效果则DDR变频导致的问题概率比较大。
3.降低DDR频率到稳妥频率如200M 如果有效果那很大概率是DDR信号质量有问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弱鸡在进步

老铁觉得好的话

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值