Integrating lpddr4_timing.c for custom board using i.MX 8M plus

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

Integrating lpddr4_timing.c for custom board using i.MX 8M plus

Jump to solution
392 Views
aheck
Contributor II

Hello,

I am bringing up a custom board using an i.MX 8M plus, and I am having trouble with u-boot SPL failing to boot with what I believe is a calibrated lpddr4_timing.c file.

I followed the instructions to use the MSCALE DDR Tool v3.31 to successfully perform a DDR stress test. I then generated a calibrated lpddr4_timing.c.

Following section 4.5.2 of MSCALE_DDR_Tool_User_Guide.pdf, I copied the generated lpddr4_timing.c file into the

board/freescale/imx8mp_evk/

directory in the u-boot-imx project of my Yocto build environment.  I then forced a compilation of u-boot-imx using the command

bitbake u-boot-linux -f -c compile

I then built imx-image-core using the usual command

bitbake imx-image-core

Finally, I wrote the generated .wic.zst image to an SD card as I have done previously when adding packages and modifying the Linux device tree.

However, when I boot, I see the following debug message over UART.

U-Boot SPL 2024.04+g674440bc73e+p0 (Oct 24 2024 - 14:35:20 +0000)
DDRINFO: start DRAM init
DDRINFO: DRAM rate 4000MTS
Training FAILED

Is there a step I am missing when integrating the lpddr4_timing.c into a build of imx-core-image?

Labels (1)
Tags (2)
0 Kudos
Reply
1 Solution
309 Views
aheck
Contributor II

I believe my build of u-boot was not correctly building in the lpddr4_timing.c file using just the

bitbake u-boot-linux -f -c compile

command.

What worked for me was deleting lpddr4_timing.o from the build artifacts. I then forced another u-boot compile using

bitbake u-boot-linux -f -c compile

and verified that lpddr4_timing.o was regenerated.

I then built imx-image-core using the usual command

bitbake imx-image-core

Finally, I wrote the generated .wic.zst image to an SD card as I have done previously when adding packages and modifying the Linux device tree.

When I booted the device, it worked.

I'll need to review how I include my board specific lpddr4_timing.c into my device layer, and how to force a full rebuild, but not a checkout of from source repositories, using bitbake commands.

View solution in original post

2 Replies
310 Views
aheck
Contributor II

I believe my build of u-boot was not correctly building in the lpddr4_timing.c file using just the

bitbake u-boot-linux -f -c compile

command.

What worked for me was deleting lpddr4_timing.o from the build artifacts. I then forced another u-boot compile using

bitbake u-boot-linux -f -c compile

and verified that lpddr4_timing.o was regenerated.

I then built imx-image-core using the usual command

bitbake imx-image-core

Finally, I wrote the generated .wic.zst image to an SD card as I have done previously when adding packages and modifying the Linux device tree.

When I booted the device, it worked.

I'll need to review how I include my board specific lpddr4_timing.c into my device layer, and how to force a full rebuild, but not a checkout of from source repositories, using bitbake commands.

364 Views
JorgeCas
NXP TechSupport
NXP TechSupport

Hello,

You are following the correct steps to generate and implement the DDR scripts using Yocto, there is no additional steps to implement it.

How are you flashing the image? UUU?

Best regards.

0 Kudos
Reply