DDR进行bitflip压力测试
1 DDR 压力测试
时常有ddr的bitflip问题,需要一些方法对ddr进行压测
2. 方法
1. 使用MTK flashtool的memorytest功能,目前只支持6755(含)之后的平台,如果不支持的话,flashtool会自动隐藏test选项。
使用说明:
默认是Auto, 可以手动选择到Manual.
参数范围:
Address: test起始地址,[ 0 – dram.size )
Length: test 长度, [ 0 – dram.size ], // length =0时,test “address -- dram. end”; length!=0时, test “address -- address + length”;如用户只知道测试的起始地址,直到dram尾部都要测,这样填0就可以了,不用再去计算length.
Stress Test Count: 压力测试次数,32位无符号整数的有效范围
限制条件: Address + Length 不能超过DRAM size大小。
测试步长是flashtool UI控制的,根据输入Length大小分阶梯控制步长,主要影响UI显示时候反馈内容的数量。
步长的设计如下:
Length 测试长度 |
Test_step 测试步长 |
>2MB |
= 2MB |
1KB – 2MB |
1KB |
<1KB |
1Byte |
2. 在preloader或者lk中进行测试 (preloader 只能定址32bit, 超过3GB需要在有mmu的lk作 ,因physical addr :0x40000000~0xFFFFFFFF 为3GB大小)
preloader:
lk: complex_mem_test_lk的内容和preloader原生的内容一致;
如果要通过code实现,建议在lk实现,可以进行大于4G ddr测试。
注意事项:
测试地址需避开其他模块reserved的memory , 否则可能每次会在固定地址范围测试fail (如下图)
reserved的memory 可以从下方法查到
方法1:
搜寻mblock_reserve_ext API 所reserved 的地址空间
方法2:(推荐)
adb shell 命令
显示reserved memory list如下