ILD

imx8mp evk update uboot image
作者:Yuan Jianpeng 邮箱:yuanjp89@163.com
发布时间:2026-7-28 站点:Inside Linux Development

手里有一块imx8mp的板子,debix model a。内存是4GB的,但是烧录官方yocto编译后的固件后,

显示内存为6GB。在解压一个大的压缩包后,串口卡死,内核崩了,没有任何输出。


尝试修改内核里面的dtb,发现无效。原来uboot还会修改。需要修改uboot的配置。


源码目录:

sources/meta-imx/meta-imx-bsp/recipes-bsp/u-boot/


编译目录:

build/tmp/work/imx8mpevk-poky-linux/u-boot-imx/2025.04/


修改include/configs/imx8mp_evk.h

将PHYS_SDRAM_SIZE/PHYS_SDRAM_2_SIZE,都修改为2G

Upstream-Status: Submitted
diff --git a/include/configs/imx8mp_evk.h b/include/configs/imx8mp_evk.h
index ce6218fad73..7b5a10a6ab3 100644
--- a/include/configs/imx8mp_evk.h
+++ b/include/configs/imx8mp_evk.h
@@ -24,12 +24,12 @@
 /* Totally 6GB DDR */
 #define CFG_SYS_SDRAM_BASE        0x40000000
 #define PHYS_SDRAM            0x40000000
-#define PHYS_SDRAM_SIZE            0xC0000000    /* 3 GB */
+#define PHYS_SDRAM_SIZE            0x80000000    /* 3 GB */
 #define PHYS_SDRAM_2            0x100000000
 #ifdef CONFIG_TARGET_IMX8MP_DDR4_EVK
 #define PHYS_SDRAM_2_SIZE        0x40000000    /* 1 GB */
 #else
-#define PHYS_SDRAM_2_SIZE        0xC0000000    /* 3 GB */
+#define PHYS_SDRAM_2_SIZE        0x80000000    /* 3 GB */
 #endif
 
 #define CFG_MXC_UART_BASE        UART2_BASE_ADDR



重新编译:

bitbake -c compile -f -v u-boot-imx
bitbake -c deploy -f -v u-boot-imx
bitbake -c compile -f -v imx-boot
bitbake -c deploy -f -v imx-boot


产物

debix-desktop/tmp/deploy/images/imx8mpevk/imx-boot-imx8mpevk-sd.bin-flash_evk


烧录

sudo dd if=imx-boot-imx8mpevk-sd.bin-flash_evk of=/dev/sdx bs=1k seek=32 conv=fsync


重启设备

U-Boot 2025.04-g99518e6b6f20-dirty (Feb 02 2026 - 05:52:54 +0000)

CPU:   i.MX8MP[8] rev1.1 1600 MHz (running at 1200 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 29C
Reset cause: POR
Model: NXP i.MX8MPlus LPDDR4 EVK board
DRAM:  4 GiB



# hexdump -X /sys/firmware/devicetree/base/memory@40000000/reg
0000000  00  00  00  00  40  00  00  00  00  00  00  00  16  00  00  00
0000010  00  00  00  00  58  00  00  00  00  00  00  00  a8  00  00  00
0000020  00  00  00  01  00  00  00  00  00  00  00  00  40  00  00  00
0000030

内存布局总结

这个系统有 3个 内存区域:

区域起始地址结束地址大小
10x400000000x55FFFFFF352 MB
20x580000000xFFFFFFFF2.625 GB
30x1000000000x13FFFFFFF1 GB

总计内存: 约 4 GB (352MB + 2688MB + 1024MB = 4064MB)

注意事项

  1. 内存空洞:地址 0x56000000-0x57FFFFFF (32MB) 被保留(可能是设备MMIO或特殊用途)

  2. 地址空间:前两个区域在32位地址空间,第三个在64位地址空间(超过4GB)

  3. 大端格式:这是ARM/PPC等平台的典型格式


# free -h
               total        used        free      shared  buff/cache   available
Mem:           3.5Gi       553Mi       2.0Gi        42Mi       1.2Gi       3.0Gi
Swap:             0B          0B          0B


Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.