DDRSS ECC(含bw_mem test ,ecc_enable and ecc_disable)

DDR subsystem(DDRSS)是由DDR controller、DDR PHY 和wrapper logic构成。为了保证SDRAM数据的完整性,DDRSS桥支持对写入或从SDRAM读取的数据进行内联ECC。
ECC对所有在ECC保护地址范围内的访问进行计算。1位错误可通过ECC纠正,2位错误不可纠正,将被软件视为不可恢复错误并触发异常。

如何使能DDRSS ECC

U-Boot默认不使能DDRSS的ECC特性。但是这可以通过在arch/arm/dts/k3-am6*-ddr.dtsi中的memorycontroller节点中添加ti,ecc-enable布尔属性来启用,并重建U-Boot。

&memorycontroller {
	power-domains = <&k3_pds 170 TI_SCI_PD_SHARED>,
								 <&k3_pds 55 TI_SCI_PD_SHARED>;
	clocks = <&k3_clks 170 0>, <&k3_clks 16 4>;
	ti,ecc-enable;
};

bootloader有责任在执行功能性读写之前将已知数据预加载ECC保护区域。在ECC初始化过程中,出现R5 SPL使用CPU辅助memset或DDR控制器中的BIST引擎将整个内存(2GB)加零。BIST引擎方法允许用0启动整个2GB内存空间,时间约为1秒。

U-Boot命令’ ddrss ‘可以用来模拟ECC错误,在特定地址的SDRAM数据。ECC检查可以通过启用ECC,缩小保护范围,修改一个值,然后恢复范围到原始,然后读取修改(和校正)的值来测试,这将导致ECC错误计数增加。’ ddrss '命令模拟了这些步骤。

ddrss ecc_err <addr in hex> <bit_err in hex>

该命令将从addr读取一个32位的数据,并将(data ^ bit_err)写回addr。
以下示例在地址为0x82400000的数据的第0位上产生1位错误

=> ddrss ecc_err 82400000 1
	Testing DDR ECC:
	ECC test: Disabling DDR ECC ...
	ECC test: addr 0x82400000, read data 0x0, written data 0x1, err pattern: 0x1,
read after write data 0x1
	ECC test: Enabled DDR ECC ...
	ECC test: addr 0x82400000, read data 0x0
	ECC test: DDR ECC 1-bit error
	ECC test: 1-bit ECC err count: 1
	ECC test: 1-bit error in [0x2400000:0x2400008]

下面的例子将位返回,清除错误状态

=> ddrss ecc_err 82400000 1
	Testing DDR ECC:
	ECC test: Disabling DDR ECC ...
	ECC test: addr 0x82400000, read data 0x1, written data 0x0, err pattern: 0x1,
read after write data 0x0
	ECC test: Enabled DDR ECC ...
	ECC test: addr 0x82400000, read data 0x0

enable ecc:

root@am64xx-evm:~# bw_mem
Usage: bw_mem [-P <parallelism>] [-W <warmup>] [-N <repetitions>] <size> what [conflict]
what: rd wr rdwr cp fwr frd fcp bzero bcopy
<size> must be larger than 512
root@am64xx-evm:~# bw_mem  1M rd
1.00 1275.05
root@am64xx-evm:~# bw_mem  1M wr
1.00 850.92
root@am64xx-evm:~# bw_mem  1M rdwr
1.00 825.22
root@am64xx-evm:~# bw_mem  1M cp
1.00 485.44
root@am64xx-evm:~# bw_mem  1M frd
1.00 1210.65
root@am64xx-evm:~# bw_mem  1M fcp
1.00 775.92
root@am64xx-evm:~# bw_mem  1M bzero
1.00 1809.41
root@am64xx-evm:~# bw_mem  1M bcopy
1.00 898.15

root@am64xx-evm:~# bw_mem  512M rd
512.00 1262.13
root@am64xx-evm:~# bw_mem  512M wr
512.00 996.84
root@am64xx-evm:~# bw_mem  512M rdwr
512.00 933.53
root@am64xx-evm:~# bw_mem  512M cp
512.00 482.35
root@am64xx-evm:~# bw_mem  512M frd
512.00 1231.09
root@am64xx-evm:~# bw_mem  512M fcp
512.00 796.29
root@am64xx-evm:~# bw_mem  512M bzero
512.00 1721.96
root@am64xx-evm:~# bw_mem  512M bcopy
512.00 888.67


disable ecc:

root@am64xx-evm:~# bw_mem 512M rd
512.00 1383.14
root@am64xx-evm:~# bw_mem 512M wr
512.00 1159.89
root@am64xx-evm:~# bw_mem 512M rdwr
512.00 1068.16
root@am64xx-evm:~# bw_mem 512M cp
512.00 537.71
root@am64xx-evm:~# bw_mem 512M fwr
512.00 2107.31
root@am64xx-evm:~# bw_mem 512M frd
512.00 1334.85
root@am64xx-evm:~# bw_mem 512M fcp
512.00 904.74
root@am64xx-evm:~# bw_mem 512M bzero
512.00 2108.03
root@am64xx-evm:~# bw_mem 512M bcopy
512.00 1010.53

root@am64xx-evm:~# bw_mem 1024M rd
1024.00 1387.17
root@am64xx-evm:~# bw_mem 1024M wr
1024.00 1142.55
root@am64xx-evm:~# bw_mem 1024M rdwr
1024.00 1058.32
root@am64xx-evm:~# bw_mem 1024M cp
[  483.545438] bw_mem invoked oom-killer: gfp_mask=0x100cca(GFP_HIGHUSER_MOVABLE), order=0, oom_score_adj=0
[  484.209754] Out of memory: Killed process 1640 (bw_mem) total-vm:2003032kB, anon-rss:1717812kB, file-rss:4kB, shmem-rss:0kB, UID:0 pgtables:3412kB oom_score_adj:0
···
root@am64xx-evm:~# bw_mem 1024M frd
1024.00 1335.56
root@am64xx-evm:~# bw_mem 1024M fcp
error
root@am64xx-evm:~# bw_mem 1024M bzero
1024.00 2115.12
root@am64xx-evm:~# bw_mem 1024M bcopy
error

compare in 512M:

modedisable_eccenable_ecc
rd1383.141262.13
wr1159.89996.84
rdwr1068.16933.53
cp537.71482.35
frd1334.851231.09
fcp904.74796.29
bzero2108.031721.96
bcopy1010.53888.67

以下是在使能ecc的情况下进行测试:

root@am64xx-evm:~# bw_mem 1M bcopy
1.00 885.58
root@am64xx-evm:~# bw_mem 2M bcopy
2.00 893.26
root@am64xx-evm:~# bw_mem 4M bcopy
4.00 915.65
root@am64xx-evm:~# bw_mem 8M bcopy
8.00 903.75
root@am64xx-evm:~# bw_mem 16M bcopy
16.00 909.71
root@am64xx-evm:~# bw_mem 32M bcopy
32.00 843.30
root@am64xx-evm:~# bw_mem 64M bcopy
64.00 628.88
root@am64xx-evm:~# bw_mem 64M bcopy
64.00 895.15
root@am64xx-evm:~# bw_mem 64M bcopy
64.00 842.36
root@am64xx-evm:~# bw_mem 64M bcopy
64.00 893.78
root@am64xx-evm:~# bw_mem 64M bcopy
64.00 892.46
root@am64xx-evm:~# bw_mem 64M bcopy
64.00 886.48
root@am64xx-evm:~# bw_mem 128M bcopy
128.00 931.44
root@am64xx-evm:~# bw_mem 256M bcopy
256.00 906.73
root@am64xx-evm:~# bw_mem 512M bcopy
512.00 876.88


root@am64xx-evm:~# bw_mem 1M rd
1.00 1275.28
root@am64xx-evm:~# bw_mem 2M rd
2.00 1281.02
root@am64xx-evm:~# bw_mem 4M rd
4.00 1286.17
root@am64xx-evm:~# bw_mem 8M rd
8.00 1294.92
root@am64xx-evm:~# bw_mem 16M rd
16.00 1296.60
root@am64xx-evm:~# bw_mem 32M rd
32.00 1298.81
root@am64xx-evm:~# bw_mem 64M rd
64.00 1276.53
root@am64xx-evm:~# bw_mem 128M rd
128.00 1282.49
root@am64xx-evm:~# bw_mem 256M rd
256.00 1270.52
root@am64xx-evm:~# bw_mem 512M rd
512.00 1268.60

root@am64xx-evm:~# bw_mem 1M wr
1.00 832.92
root@am64xx-evm:~# bw_mem 2M wr
2.00 836.00
root@am64xx-evm:~# bw_mem 4M wr
4.00 884.96
root@am64xx-evm:~# bw_mem 8M wr
8.00 937.98
root@am64xx-evm:~# bw_mem 16M wr
16.00 944.57
root@am64xx-evm:~# bw_mem 32M wr
32.00 751.30
root@am64xx-evm:~# bw_mem 32M wr
32.00 976.18
root@am64xx-evm:~# bw_mem 64M wr
64.00 991.37
root@am64xx-evm:~# bw_mem 128M wr
128.00 997.45
root@am64xx-evm:~# bw_mem 256M wr
256.00 986.82
root@am64xx-evm:~# bw_mem 512M wr
512.00 994.63

root@am64xx-evm:~# bw_mem 1M cp
1.00 488.28
root@am64xx-evm:~# bw_mem 2M cp
2.00 484.67
root@am64xx-evm:~# bw_mem 4M cp
4.00 489.78
root@am64xx-evm:~# bw_mem 8M cp
8.00 503.65
root@am64xx-evm:~# bw_mem 16M cp
16.00 478.25
root@am64xx-evm:~# bw_mem 32M cp
32.00 486.05
root@am64xx-evm:~# bw_mem 64M cp
64.00 494.37
root@am64xx-evm:~# bw_mem 128M cp
128.00 495.84
root@am64xx-evm:~# bw_mem 256M cp
256.00 495.29
root@am64xx-evm:~# bw_mem 512M cp
512.00 482.21

root@am64xx-evm:~# bw_mem 1M bcopy
1.00 900.25
root@am64xx-evm:~# bw_mem 2M bcopy
2.00 883.78
root@am64xx-evm:~# bw_mem 4M bcopy
4.00 891.86
root@am64xx-evm:~# bw_mem 8M bcopy
8.00 897.77
root@am64xx-evm:~# bw_mem 16M bcopy
16.00 893.16
root@am64xx-evm:~# bw_mem 32M bcopy
32.00 846.45
root@am64xx-evm:~# bw_mem 64M bcopy
64.00 895.02
root@am64xx-evm:~# bw_mem 64M bcopy
64.00 876.23
root@am64xx-evm:~# bw_mem 64M bcopy
64.00 882.95
root@am64xx-evm:~# bw_mem 64M bcopy
64.00 881.85
root@am64xx-evm:~# bw_mem 64M bcopy
64.00 888.38
root@am64xx-evm:~# bw_mem 128M bcopy
128.00 910.41
root@am64xx-evm:~# bw_mem 128M bcopy
128.00 932.31
root@am64xx-evm:~# bw_mem 128M bcopy
128.00 919.63
root@am64xx-evm:~# bw_mem 128M bcopy
128.00 907.40
root@am64xx-evm:~# bw_mem 128M bcopy
128.00 939.79
root@am64xx-evm:~# bw_mem 128M bcopy
128.00 933.35
root@am64xx-evm:~# bw_mem 128M bcopy
128.00 914.60
root@am64xx-evm:~# bw_mem 256M bcopy
256.00 929.23
root@am64xx-evm:~# bw_mem 256M bcopy
256.00 919.35
root@am64xx-evm:~# bw_mem 256M bcopy
256.00 914.48
root@am64xx-evm:~# bw_mem 256M bcopy
256.00 926.80
root@am64xx-evm:~# bw_mem 512M bcopy
512.00 884.09
root@am64xx-evm:~# bw_mem 512M bcopy
512.00 883.60
root@am64xx-evm:~# bw_mem 512M bcopy
512.00 872.75

root@am64xx-evm:~# bw_mem 64M fcp
64.00 753.52
root@am64xx-evm:~# bw_mem 64M fcp
64.00 804.47
root@am64xx-evm:~# bw_mem 64M fcp
64.00 805.65
root@am64xx-evm:~# bw_mem 128M fcp
128.00 812.47
root@am64xx-evm:~# bw_mem 128M fcp
128.00 820.24
root@am64xx-evm:~# bw_mem 128M fcp
128.00 808.63
root@am64xx-evm:~# bw_mem 512M fcp
512.00 794.93
root@am64xx-evm:~# bw_mem 512M fcp
512.00 795.48
root@am64xx-evm:~# bw_mem 512M fcp
512.00 794.59
root@am64xx-evm:~# bw_mem 64M rdwr
64.00 961.06
root@am64xx-evm:~# bw_mem 64M rdwr
64.00 947.08
root@am64xx-evm:~# bw_mem 128M rdwr
128.00 936.54
root@am64xx-evm:~# bw_mem 128M rdwr
128.00 926.27
root@am64xx-evm:~# bw_mem 512M rdwr
512.00 931.76
root@am64xx-evm:~# bw_mem 512M rdwr
512.00 936.20
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值