This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PROCESSOR-SDK-AM62X: DDR4 read/write access failed is there a bug in the AM62x DDR managment ?

Part Number: PROCESSOR-SDK-AM62X
Other Parts Discussed in Thread: AM625, AM623, SYSCONFIG

Hello,

We have design 2 king of bord base on AM62x SK EVM board.

One design is using AM623 with 2x2GB of DDR4, the other design use AM625 with 2x1GB.

I configure the DDR in the device tree of u-boot and the linux kernel using the sysconfig tools from TI and modify the device tree as explain by TI support team.

I attached the device files modified to this thread.

I can detect the memory up to 4GB and 2 GB of RAM in linux and u-boot.

So I ran memory test under u-boot and the SoC is crashing me writing or reading some part of the memory, 0xB7EEF680 and 0xF7EEF680

It is a big issue for us that the MPU is not able to work properly, is there a none issue with the AM62x MPU ?

Here are the trace from u-boot mtest command:

Design with 2x1GB of DDR4:

mtest 0x80000000 0xB7EF0000 0 1
Testing 80000000 ... b7ef0000:
Pattern 00000000  Writing...  Reading...
Mem error @ 0xB7EEF680: found B7EEF6A0, expected 06FDDED0

Mem error @ 0xB7EEF688: found C19BF1749BDC06A7, expected 06FDDED1

Mem error @ 0xB7EEF690: found EFBE4786E49B69C1, expected 06FDDED2

Design with 2x2GB of DDR4:

mtest 0xF0000000 0xF7EEFFFF 0 1

Testing f0000000 ... f7eeffff:
Pattern 00000000  Writing...  Reading...
Mem error @ 0xF7EEF680: found F7EEF6A0, expected 00FDDED0

Mem error @ 0xF7EEF688: found C19BF1749BDC06A7, expected 00FDDED1

Mem error @ 0xF7EEF690: found EFBE4786E49B69C1, expected 00FDDED2

....

Unhandled Exception in EL3.
x30            = 0x000000009e780f88
x0             = 0x00000000fffab16b
x1             = 0x0000000000000414
x2             = 0x0000000000fddeee
x3             = 0x00000000f7eef190
x4             = 0x00000000f7eef1d0
x5             = 0x00000000f7eefff8
x6             = 0x0000000000000046
x7             = 0x000000000000000f
x8             = 0x00000000f7eef6d8
x9             = 0x0000000000000008
x10            = 0x00000000ffffffe0
x11            = 0x0000000000000010
x12            = 0x0000000000000006
x13            = 0x000000000001869f
x14            = 0x00000000f7eefa20
x15            = 0x0000000000000001
x16            = 0x00000000fff64784
x17            = 0x0000000000000000
x18            = 0x00000000f7ef8de0
x19            = 0x00000000f7eef710
x20            = 0x00000000f7eef238
x21            = 0x00000000ffffffc8
x22            = 0x00000000f0000000
x23            = 0x00000000f7eef710
x24            = 0x00000000f7eef238
x25            = 0x0000000000fddeee
x26            = 0x00000000fffa9000
x27            = 0x00000000fffab000
x28            = 0x00000000f7eef64c
x29            = 0x00000000f7eef0b0
scr_el3        = 0x000000000000073d
sctlr_el3      = 0x0000000030cd183f
cptr_el3       = 0x0000000000000000
tcr_el3        = 0x0000000080803520
daif           = 0x00000000000002c0
mair_el3       = 0x00000000004404ff
spsr_el3       = 0x00000000000002c9
elr_el3        = 0x00000000fff9f174
ttbr0_el3      = 0x000000009e7910c0
esr_el3        = 0x0000000092000010
far_el3        = 0x0000000000fddeee
spsr_el1       = 0x0000000000000000
elr_el1        = 0x0000000000000000
spsr_abt       = 0x0000000000000000
spsr_und       = 0x0000000000000000
spsr_irq       = 0x0000000000000000
spsr_fiq       = 0x0000000000000000
sctlr_el1      = 0x0000000030d00801
actlr_el1      = 0x0000000000000000
cpacr_el1      = 0x0000000000000000
csselr_el1     = 0x0000000000000000
sp_el1         = 0x0000000000000000
esr_el1        = 0x0000000000000000
ttbr0_el1      = 0x0000000000000000
ttbr1_el1      = 0x0000000000000000
mair_el1       = 0x0000000000000000
amair_el1      = 0x0000000000000000
tcr_el1        = 0x0000000000800080
tpidr_el1      = 0x0000000000000000
tpidr_el0      = 0x0000000000000000
tpidrro_el0    = 0x0000000000000000
par_el1        = 0x0000000000000000
mpidr_el1      = 0x0000000080000000
afsr0_el1      = 0x0000000000000000
afsr1_el1      = 0x0000000000000000
contextidr_el1 = 0x0000000000000000
vbar_el1       = 0x0000000000000000
cntp_ctl_el0   = 0x0000000000000000
cntp_cval_el0  = 0x0000000000000000
cntv_ctl_el0   = 0x0000000000000000
cntv_cval_el0  = 0x0000000000000000
cntkctl_el1    = 0x0000000000000000
sp_el0         = 0x0000000000000000
isr_el1        = 0x0000000000000000
dacr32_el2     = 0x0000000000000000
ifsr32_el2     = 0x0000000000000000
cpuectlr_el1   = 0x0000000000000040
cpumerrsr_el1  = 0x000000000b080388
l2merrsr_el1   = 0x000000001228e6b0
cpuactlr_el1   = 0x00001000090ca000

u-boot-k3-am62x-r5-lp-sk.dts.txt
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
// SPDX-License-Identifier: GPL-2.0
/*
* AM62x LP SK dts file for R5 SPL
* Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/
*/
#include "k3-am62x-lp-sk.dts"
#include "AM62x-LP4-50-800_dualrank_SVB.dtsi"
#include "k3-am62-ddr.dtsi"
#include "k3-am62x-lp-sk-u-boot.dtsi"
#include "k3-am62x-r5-sk-common.dtsi"
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
u-boot-k3-am62x-r5-sk-common.dtsi.txt
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// SPDX-License-Identifier: GPL-2.0
/*
* Common dtsi file for R5 SPL for AM62x SK and derivatives
* Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/
*/
/ {
aliases {
remoteproc0 = &sysctrler;
remoteproc1 = &a53_0;
serial0 = &wkup_uart0;
serial3 = &main_uart1;
};
chosen {
stdout-path = "serial2:115200n8";
tick-timer = &timer1;
};
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
u-boot-k3-am62x-sk-common.dtsi.txt
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// SPDX-License-Identifier: GPL-2.0
/*
* Common dtsi for AM62x SK and derivatives
*
* Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/
*/
/dts-v1/;
#include <dt-bindings/leds/common.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/net/ti-dp83867.h>
#include "k3-am625.dtsi"
/ {
aliases {
serial2 = &main_uart0;
mmc0 = &sdhci0;
mmc1 = &sdhci1;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
kernel-k3-am62x-sk-common.dtsi.txt
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// SPDX-License-Identifier: GPL-2.0
/*
* Common dtsi for AM62x SK and derivatives
*
* Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/
*/
/ {
aliases {
serial2 = &main_uart0;
mmc0 = &sdhci0;
mmc1 = &sdhci1;
spi0 = &ospi0;
usb0 = &usb0;
usb1 = &usb1;
ethernet0 = &cpsw_port1;
ethernet1 = &cpsw_port2;
};
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
AM62x-LP4-50-800_dualrank_SVB.dtsi.txt

Let me know ASAP what you thik of this issue and a fix for it.

Regards,

Alexis

  • Hello,

    Sorry it is my mistake. It seems that mtest tools doesn't take in account the reserved memory and test it by writing and reading.

    Here is the dbinfo information return for 2GB and 4 GB configuration, the addresses 0xB7EEF680 and 0xF7EEF680 are located in reserve memory area :

    lmb_dump_all:
    memory.cnt = 0x2
    memory.size = 0x0
    memory.reg[0x0].base = 0x80000000
    .size = 0x40000000
    memory.reg[0x1].base = 0x880000000
    .size = 0x40000000

    reserved.cnt = 0x3
    reserved.size = 0x0
    reserved.reg[0x0].base = 0x9db00000
    .size = 0xc00000
    reserved.reg[0x1].base = 0x9e780000
    .size = 0x1880000
    reserved.reg[0x2].base = 0xb7eee620
    .size = 0x81119e0

    lmb_dump_all:
    memory.cnt = 0x2
    memory.size = 0x0
    memory.reg[0x0].base = 0x80000000
    .size = 0x80000000
    memory.reg[0x1].base = 0x880000000
    .size = 0x80000000

    reserved.cnt = 0x3
    reserved.size = 0x0
    reserved.reg[0x0].base = 0x9db00000
    .size = 0xc00000
    reserved.reg[0x1].base = 0x9e780000
    .size = 0x1880000
    reserved.reg[0x2].base = 0xf7eee620
    .size = 0x81119e0

    Regards,

    Alexis.