对于大于3GB容量的内存,需要拆分成2段,映射到不同的位置。如4GB,需拆分成3GB+1GB
参考uboot/include/configs/imx8mq_arm2.h
#define CONFIG_SYS_SDRAM_BASE 0x40000000
#define PHYS_SDRAM 0x40000000
#ifdef CONFIG_TARGET_IMX8MQ_DDR3L_ARM2
#define PHYS_SDRAM_SIZE 0x80000000 /* 2GB DDR3L for two rank */
#define CONFIG_NR_DRAM_BANKS 1
#else
#define PHYS_SDRAM_SIZE 0xc0000000 /* 3GB */
#define PHYS_SDRAM_2 0x100000000
#define PHYS_SDRAM_2_SIZE 0x40000000 /* 1GB */
#define CONFIG_NR_DRAM_BANKS 2
#endif
2. kernel设备树配置
由于在kernel启动阶段,uboot会传递内存参数给kernel,因此,设备树中无需配置内存容量信息;
只需要根据内存容量调整CMA大小即可。