Enabling 4 GB RAM on a custom board based on the beagleboard-x15

Hello,

We’ve replaced the RAM chips of a custom board based on the beagleboard-x15 to upgrade the RAM from 2 GB to 4 GB.

The memory chips we’re using are the Micron MT41K512M16HA.

After receiving some help in the IRC forums and our own research we were able to boot the Linux kernel recognizing the extra RAM.

First, we modified board/ti/am57xx/board.c in u-boot:

static const struct emif_regs beagle_x15_emif1_ddr3_532mhz_emif_regs = {
.sdram_config_init = 0x61851bb2, /* 0x61851b32 to 0x61851bb2 configure 16 row bits /
.sdram_config = 0x61851bb2, /
0x61851b32 to 0x61851bb2 configure 16 row bits */
[…]
};

static const struct emif_regs beagle_x15_emif2_ddr3_532mhz_emif_regs = {
.sdram_config_init = 0x61851bb2, /* 0x61851b32 to 0x61851bb2 configure 16 row bits /
.sdram_config = 0x61851bb2, /
0x61851b32 to 0x61851bb2 configure 16 row bits */
[…]
};

Booting into this modified u-boot still only shows 2GB, as reported by bdinfo:

=> bdinfo

DRAM bank = 0x00000000
→ start = 0x80000000
→ size = 0x80000000

Next, we recompiled the Linux kernel with LPAE turned on and the following addition to arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi

memory@1 {

device_type = “memory”;
reg = <0x2 0x0 0x0 0x80000000>;
};

After booting this kernel We can see this memory map:

cat /proc/iomem

80000000-9fffffff : System RAM
80008000-813fffff : Kernel code
81600000-8176dcff : Kernel data
b8000000-ffffffff : System RAM
200000000-27fcfffff : System RAM