手里有一块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个 内存区域:
| 区域 | 起始地址 | 结束地址 | 大小 |
|---|---|---|---|
| 1 | 0x40000000 | 0x55FFFFFF | 352 MB |
| 2 | 0x58000000 | 0xFFFFFFFF | 2.625 GB |
| 3 | 0x100000000 | 0x13FFFFFFF | 1 GB |
总计内存: 约 4 GB (352MB + 2688MB + 1024MB = 4064MB)
内存空洞:地址 0x56000000-0x57FFFFFF (32MB) 被保留(可能是设备MMIO或特殊用途)
地址空间:前两个区域在32位地址空间,第三个在64位地址空间(超过4GB)
大端格式:这是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