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?
Solved! Go to Solution.
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.
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.
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.