Hi,
My DDR consists of two 2GB DDR4 chips with a total size of 4GB. The model of the DDR chip is MT40A1G16KD.
I am using kernel version 5.4.3 and U-Boot version 2019.04 on MYS-8MMX board from MYIR.
I tried to modify and apply the following steps:
1. I modified include/configs/mys_iot_imx8mm.h in U-Boot.
The modification is as follows:
diff --git a/include/configs/mys_iot_imx8mm.h b/include/configs/mys_iot_imx8mm.h
index f932e2ba0f..5f52a3c74b 100755
--- a/include/configs/mys_iot_imx8mm.h
+++ b/include/configs/mys_iot_imx8mm.h
@@ -262,7 +262,10 @@
#define CONFIG_SYS_SDRAM_BASE 0x40000000
#define PHYS_SDRAM 0x40000000
-#define PHYS_SDRAM_SIZE 0x80000000 /* 2GB DDR */
+#define CONFIG_NR_DRAM_BANKS 2
+#define PHYS_SDRAM_SIZE 0x80000000 /* 2GB */
+#define PHYS_SDRAM_2 0xC0000000
+#define PHYS_SDRAM_2_SIZE 0x80000000 /* 2GB */
#define CONFIG_SYS_MEMTEST_START PHYS_SDRAM
#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START + \
2. I also used MSCALE_DDR_Tool.exe to calibrate the DDR, and the calibration was successful. The stress test was also successful, and the generated ddr4_timing.c was replaced with board/myir/mys_iot_imx8mm/ddr4_timing.c.
Finally, I compiled imx-boot through Yocto and replaced it on the development board, but a Kernel panic error occurred. The complete log is as follows:
U-Boot 2019.04-5.4.3-2.0.0+g0543d2f8d7 (Nov 06 2023 - 03:08:43 +0000)
CPU: Freescale i.MX8MMQ rev1.0 1600 MHz (running at 1200 MHz)
CPU: Industrial temperature grade (-40C to 105C)CPU Temperature (50000C) has beyond alert (85000C), close to critical (95000C) at 50C
Reset cause: POR
Model: MYS IOT i.MX8MM board
DRAM: 4 GiB
MMC: FSL_SDHC: 1, FSL_SDHC: 2
Loading Environment from MMC... *** Warning - bad CRC, using default environment
No panel detected: default to MIPI2HDMI
LT8912 ID: bdf81112, b2
LT8912 0x69 [e] [8e]
LT8912 0x6c [95]
LT8912 6b[81]
LT8912 0x83 [80] 0x84[7]
LT8912 0x87 [40] 0x88[5]
LT8912 0x89 [14] 0x8a[8c]
LT8912 0x8b [3] 0x8c[0]
LT8912 0x8d [58] 0x8e[24]
LT8912 0x8f [4]
LT8912 0x90 [1e]
LT8912 0x91 [d2]
LT8912 0x92 [1c]
Display: MIPI2HDMI (1920x1080)
Video: 1920x1080x24
In: serial
Out: serial
Err: serial
BuildInfo:
- ATF f1a195b
- U-Boot 2019.04-5.4.3-2.0.0+g0543d2f8d7
switch to partitions #0, OK
mmc2(part 0) is current device
flash target is MMC:2
Net: get PHY for FEC0: addr 4
Error: ethernet@30be0000 address not set.
get PHY for FEC0: addr 4
Error: ethernet@30be0000 address not set.
eth-1: ethernet@30be0000
Fastboot: Normal
Normal Boot
switch to partitions #0, OK
mmc2(part 0) is current device
35373568 bytes read in 425 ms (79.4 MiB/s)
Booting from mmc ...
42627 bytes read in 4 ms (10.2 MiB/s)
## Flattened Device Tree blob at 43000000
Booting using the fdt blob at 0x43000000
Using Device Tree in place at 0000000043000000, end 000000004300d682
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[ 0.000000] Linux version 5.4.3-2.0.0+g1d2ecb8 (oe-user@oe-host) (gcc version 9.2.0 (GCC)) #1 SMP PREEMPT Thu Jun 9 01:05:54 UTC 2022
[ 0.000000] Machine model: MYS i.MX8MM EVK board V2.0
[ 0.000000] earlycon: ec_imx6q0 at MMIO 0x0000000030890000 (options '115200')
[ 0.000000] printk: bootconsole [ec_imx6q0] enabled
[ 0.000000] efi: Getting EFI parameters from FDT:
[ 0.000000] efi: UEFI not found.
[ 0.000000] Reserved memory: created CMA memory pool at 0x0000000078000000, size 640 MiB
[ 0.000000] OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool
[ 0.000000] Internal error: synchronous external abort: 96000210 [#1] PREEMPT SMP
[ 0.000000] Modules linked in:
[ 0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 5.4.3-2.0.0+g1d2ecb8 #1
[ 0.000000] Hardware name: MYS i.MX8MM EVK board V2.0 (DT)
[ 0.000000] pstate: 20000085 (nzCv daIf -PAN -UAO)
[ 0.000000] pc : __create_pgd_mapping+0x190/0x748
[ 0.000000] lr : __create_pgd_mapping+0x150/0x748
[ 0.000000] sp : ffff800011fd3d60
[ 0.000000] x29: ffff800011fd3d60 x28: ffff800010080000
[ 0.000000] x27: ffff800010080000 x26: fffffdfffe436800
[ 0.000000] x25: ffff800011ae5008 x24: fffffdfffe437000
[ 0.000000] x23: ffff800010080000 x22: 0000000000000040
[ 0.000000] x21: 0000000001110000 x20: 0000000040480000
[ 0.000000] x19: ffff800040000000 x18: 0000000000000010
[ 0.000000] x17: 0000000000001400 x16: 0000000000001c00
[ 0.000000] x15: ffff800011fe2c30 x14: ffffffffffffffff
[ 0.000000] x13: ffff800091fd3ae7 x12: 0000000000000000
[ 0.000000] x11: 0000000000000004 x10: 0000000000000018
[ 0.000000] x9 : 0000000000000000 x8 : fffffdfffe43a000
[ 0.000000] x7 : 0000000000000000 x6 : 0000000000000000
[ 0.000000] x5 : ffff80001223f000 x4 : 000fffffdfffe437
[ 0.000000] x3 : 0000000000000037 x2 : ffff80001118ffff
[ 0.000000] x1 : ffff80003fffffff x0 : 000000013ffff003
[ 0.000000] Call trace:
[ 0.000000] __create_pgd_mapping+0x190/0x748
[ 0.000000] map_kernel_segment+0x70/0xa4
[ 0.000000] paging_init+0x12c/0x5d0
[ 0.000000] setup_arch+0x268/0x5e8
[ 0.000000] start_kernel+0x88/0x46c
[ 0.000000] Code: f94053e2 92628673 d1000661 eb02003f (f9400301)
[ 0.000000] random: get_random_bytes called from print_oops_end_marker+0x28/0x50 with crng_init=0
[ 0.000000] ---[ end trace 0000000000000000 ]---
[ 0.000000] Kernel panic - not syncing: Attempted to kill the idle task!
[ 0.000000] ---[ end Kernel panic - not syncing: Attempted to kill the idle task! ]---
Perhaps optee or atf also needs to be modified? But I don't know how to modify them. I tried searching, but I didn't find anything useful for me.
Hello,
You have to change the address in uboot and try the latest kernel since 5.4.3 is not supported by NXP.
Regards