imx6sx stuck in kernel loading with 512MB RAM

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

imx6sx stuck in kernel loading with 512MB RAM

Jump to solution
1,884 Views
rakesh_patel
Senior Contributor I

Hi,

We have a custom board based on imx6sx. 

We have two revisions for a custom board.

Revision#1: Have 1GB RAM ==> Working fine with boot (Memory part: MT41K256M16TW-107 XIT:P)

Revision#2: Have 512MB RAM ==> Stuck in kernel loading.(Memory part: MT41K128M16JT-107 IT:K TR)

Both revisions have same thing except the RAM part number as mentioned above.

In revision#2, we are facing below issue:

================

U-Boot 2016.03-nxp/imx_v2016.03_4.1.15_2.0.0_ga+g7a2ba64 (Jun 26 2020 - 16:12:40 +0530)

CPU: Freescale i.MX6SX rev1.4 at 792MHz
CPU: Automotive temperature grade (-40C to 125C) at 47C
Reset cause: POR
DEBUG: Board: MX6SX SABRE SDB
I2C: ready
DEBUG1 DRAM: 512 MiB
PMIC: PFUZE100 ID=0x10
MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
*** Warning - bad CRC, using default environment

Display: Hannstar-XGA (1024x768)
Video: 1024x768x18
In: serial
Out: serial
Err: serial
switch to partitions #0, OK
mmc2(part 0) is current device
Net: FEC [PRIME]
Error: FEC address not set.

Normal Boot
Hit any key to stop autoboot: 0
reading m4_pzt_application.bin
29632 bytes read in 18 ms (1.6 MiB/s)
## Starting auxiliary core at 0x007F8000 ...
switch to partitions #0, OK
mmc2(part 0) is current device
switch to partitions #0, OK
mmc2(part 0) is current device
reading boot.scr
** Unable to read file boot.scr **
reading zImage
5582288 bytes read in 158 ms (33.7 MiB/s)
Booting from mmc ...
reading imx6sx-sdb-m4.dtb
38271 bytes read in 18 ms (2 MiB/s)
Kernel image @ 0x80800000 [ 0x000000 - 0x552dd0 ]
## Flattened Device Tree blob at 83000000
Booting using the fdt blob at 0x83000000
Using Device Tree in place at 83000000, end 8300c57e
switch to ldo_bypass mode!
## else Transferring control to Linux (at address 80800000)...

DEBUG: =====Starting kernel ...

DEBUG: Before bootstage_mark_name
DEBUG: after bootstage_mark_name
DEBUG: Before cleanup_before_linux
DEBUG: After cleanup_before_linux
==DEBUG: Before kernel_entry
Uncompressing Linux... done, booting the kernel.DEBUG

================

We have changed below things:

1) u-boot DCD values as per NXP register Xls in imximage.cfg file. I also performed calibration and updated values accordingly.

2) kernel dts file for memory 

memory {
reg = <0x80000000 0x20000000>;
linux,usable-memory = <0x80000000 0x1CD00000>;
};

Do you have an idea for how to solve this?

Labels (1)
0 Kudos
Reply
1 Solution
1,717 Views
rakesh_patel
Senior Contributor I

igorpadykov‌:

Thanks for sharing this. It works well.

View solution in original post

0 Kudos
Reply
8 Replies
1,717 Views
igorpadykov
NXP Employee
NXP Employee

Hi Rakesh

if you already run ddr test for that board and updated dcd, next may be

check board power supplies: voltage values, ripples as described in

Hardware Development Guide for i.MX 6SoloX Applications Processors - IMX6SXHDG

If this is just one board, issue may be caused by poor soldering. One can try to resolder chip.

Try nxp uboot and linux from nxp  source.codeaurora.org/external/imx/ repository

uboot-imx - i.MX U-Boot 

linux-imx - i.MX Linux kernel 

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos
Reply
1,717 Views
rakesh_patel
Senior Contributor I

igorpadykov‌: 

That may be some changes for HW poor soldering. But in this case.. Uboot loading also should not work.. Right ?

This is only stucking while loading kernel.

Waiting for your reply.

0 Kudos
Reply
1,717 Views
igorpadykov
NXP Employee
NXP Employee

can you confirm that for revision#2 you separately run ddr test,

updated dcd header and not used dcd header from revision#1.

Best regards
igor

0 Kudos
Reply
1,717 Views
rakesh_patel
Senior Contributor I

igorpadykov‌:

Yes. 

--> I have run ddr test for revision#2 and updated dcd as well.

0 Kudos
Reply
1,717 Views
igorpadykov
NXP Employee
NXP Employee

one can try to decrease cma size in dts:

imx6sx.dtsi\dts\boot\arm\arch - linux-imx - i.MX Linux kernel 

Best regards
igor

0 Kudos
Reply
1,717 Views
rakesh_patel
Senior Contributor I

igorpadykov‌:

I already have decreased CMA from 14000000 to 14000000/2. 

I found the issue: It is because of rpmsg driver static address.

diff --git a/arch/arm/mach-imx/imx_rpmsg.c b/arch/arm/mach-imx/imx_rpmsg.c
index 06a846b..9b58965 100644
--- a/arch/arm/mach-imx/imx_rpmsg.c
+++ b/arch/arm/mach-imx/imx_rpmsg.c
@@ -300,15 +300,15 @@ static int imx_rpmsg_probe(struct platform_device *pdev)
rpdev->vring[1] = res->start + size;
} else {
/* hardcodes here now. */
- rpdev->vring[0] = 0xBFFF0000;
- rpdev->vring[1] = 0xBFFF8000;
+ rpdev->vring[0] = 0x9FFF0000;
+ rpdev->vring[1] = 0x9FFF8000;
}
}
} else {
break;
}

Now, it is not hanging up..

But again, rpmsg is not loading well.

Revision#1:

virtio_rpmsg_bus virtio0: rpmsg host is online
virtio_rpmsg_bus virtio0: creating channel rpmsg-openamp-demo-channel addr 0x0
imx rpmsg driver is registered.

Revision#2:

virtio_rpmsg_bus virtio0: rpmsg host is online
imx rpmsg driver is registered.

so,

"modprobe imx_rpmsg_tty" does not generating /dev/ttyRPMSG node.

Do you have an idea about this?

While debugging, I observed this thing:

Revision#1 boot logs:

Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
vmalloc : 0xbd800000 - 0xff000000 (1048 MB)
lowmem : 0x80000000 - 0xbd000000 ( 976 MB)
pkmap : 0x7fe00000 - 0x80000000 ( 2 MB)
modules : 0x7f000000 - 0x7fe00000 ( 14 MB)
.text : 0x80008000 - 0x80b017c0 (11238 kB)
.init : 0x80b02000 - 0x80b70000 ( 440 kB)
.data : 0x80b70000 - 0x80bdeb20 ( 443 kB)
.bss : 0x80be1000 - 0x80c517c0 ( 450 kB)

Revision#2 boot logs:

Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
vmalloc : 0x9d000000 - 0xff000000 (1568 MB)
lowmem : 0x80000000 - 0x9cd00000 ( 461 MB)
pkmap : 0x7fe00000 - 0x80000000 ( 2 MB)
modules : 0x7f000000 - 0x7fe00000 ( 14 MB)
.text : 0x80008000 - 0x80b017c0 (11238 kB)
.init : 0x80b02000 - 0x80b70000 ( 440 kB)
.data : 0x80b70000 - 0x80bdeb20 ( 443 kB)
.bss : 0x80be1000 - 0x80c517c0 ( 450 kB)

Do you have idea for how to resolve this?

0 Kudos
Reply
1,717 Views
igorpadykov
NXP Employee
NXP Employee

Hi Rakesh

 

for rpmsg remapping one can look below:

pastedImage_1.jpg

 

Best regards
igor

0 Kudos
Reply
1,718 Views
rakesh_patel
Senior Contributor I

igorpadykov‌:

Thanks for sharing this. It works well.

0 Kudos
Reply