Hello, we are trying to develop our own custom development board based on the imx8mm-evk board. We are using Yocto Project to build the operating system. In the LPDDR4 section of the SOM card, the original design uses a 16-gigabit 2GB memory, but due to component availability, we are using a 12-gigabit memory. When I try to boot from the SD card, I get the following information, and then U-Boot doesn't start, it remains like this. What changes do I need to make to resolve this? Can you assist me?
U-Boot SPL 2022.04-lf_v2022.04+g181859317b (Nov 15 2022 - 06:28:05 +0000)
DDRINFO: start DRAM init
DDRINFO: DRAM rate 3000MTS
DDRINFO:ddrphy calibration done
DDRINFO: ddrmix config done
SEC0: RNG instantiated
Normal Boot
Trying to boot from MMC1
NOTICE: BL31: v2.6(release):automotive-13.0.0_1.1.0-0-g3c1583ba0
NOTICE: BL31: Built : 11:00:38, Nov 21 2022
Hi @edayes,
I hope you are doing well.
For different DDR parts, one needs to fill the RPA file using the information given in the datasheet to generate .ds script.
i.MX 8M Family DDR Tool Release
Using that one needs to perform a DDR stress test using MSCALE DDR Tool. It will generate lpddr4_timing.c source code for u-boot. which should be replaced in the /boards directory.
One needs to make changes at multiple places to modify DDR size.
-> memory node under the device tree.
-> PHYS_SDRAM_SIZE in /include/configs/imx8mm_evk.h [u-boot].
-> BL32_BASE in imx-atf [ATF].
-> CFG_DDR_SIZE in plat-imx/conf.mk if OP_TEE is enabled [imx-optee-os].
I hope it helps!
Thanks & Regards,
Dhruvit Vasavada
hi @Dhruvit
I performed a DDR stress test using the MSCALE DDR tool, and the test was successful. I replaced the generated lpddr4_timing.c file with my own file. I set 'Phy_sdram_size' to 0x60000000 for 12 gigabits. However, I couldn't find how to calculate and change the 'bl32_base' value in the 'imx-atf' folder for 12 gigabits. However, I couldn't find how to change the bl32_base value in the imx-atf folder. The system still remains in the same place. How should I calculate the changes in different locations? Can you provide more details?
Hi @edayes,
I hope you are doing well.
BL32_BASE needs to be changed at /plat/imx/imx8m/imx8mm/platform.mk in imx-atf.
it can be calculated as below.
BL32_BASE = DRAM_BASE + DRAM_SIZE - 0x02000000
In your case, BL32_BASE should be 0x9E000000
One needs to also change TEE_LOAD_ADDR to 0x9E000000 at /
Please mention the UART used for debug console.
Thanks & Regards,
Dhruvit Vasavada
I made the following changes for the 12Gbit RAM modification:
I successfully performed the stress test. I replaced the lpddr4_timing.c file with my own version in my folder and built it.
However, it still doesn't work. U-boot does not open. Is there something I missed or did wrong? I would appreciate it if you could help me.
Hi @edayes,
I hope you are doing well.
Can you please mention which uart port is used for debug logs?
Please try to get debug logs after adding CONFIG_LOG_MAX_LEVEL=7 in u-boot defconfig.
in which folder, you have put lpddr4_timing.c file?
Please provide me with u-boot defconfig for further debugging.
Thanks & Regards,
Dhruvit Vasavada