I'm using ECC to test ddr4, and I find two registers named ECCPOISONADDR0 and ECCPOISONADDR1,
ECCPOISONADDR0 need rank and column values.
ECCPOISONADDR1 need bank bank-group an row values.
What should I do to get these values.
I got a memory address 0X9BA17000,
2 bits bank
1 bit bank group
2 chips = x16 + x16 = 32bits
I had tried :
column = (0X9BA17000 >> 2) & 0x00003FFF
row =(( 0X9BA17000 >>2 )>> 10) & 0x0000FFFF
bank = ( (0X9BA17000>>2) >> 26) & 0x00000003
bank group = ( (0X9BA17000>>2) >> 28) & 0x00000001
That is right?
If there is others registers can give out more infomation, please help point them out.
I had tried the method in the link, and got nothing except the value 0x00001234.
I just find a hint in the ECCPOISONADDR0, 'This register is static. Static registers can only be written when the controller is in reset.'
If this register need reset, what should I do to program this register in my app?