We have built our own board that is based on i.MX7Dual SABRE development kit. The board memory design is copied directly from SABRE. The original design has 1GB of memory with two MT41K256M16HA DDR3 chips, this setup works fine. We are now trying to double the memory size in a new version of our board by replacing the original DDR3 chips with MT41K512M16HA chips that have double capacity.
We are using exactly the same PCB layout in both board versions, since the memory chips are pin compatible. The number of row address lines increases from 15 to 16 with this change; The larger memory chip has ADDR15 pin, but in the smaller memory this pin is just NC.
I've used the NXP's MX7D_DDR3_register_programming_aid_v1_1.xlsx for creating the proper register settings for the i.MX7 DDR memory controller (https://community.nxp.com/docs/DOC-152468)
The only notable resulting differences between the two memory chips are in the following ADDRMAP0, ADDRMAP1 and ADDRMAP6 mapping registers:
Old settings for 1GB configuration:
memory set 0x307A0200 32 0x00000016 # DDRC_ADDRMAP0
memory set 0x307A0204 32 0x00171717 # DDRC_ADDRMAP1
memory set 0x307A0218 32 0x0F040404 # DDRC_ADDRMAP6
New settings for 2GB configuration:
memory set 0x307A0200 32 0x00000017 # DDRC_ADDRMAP0
memory set 0x307A0204 32 0x00181818 # DDRC_ADDRMAP1
memory set 0x307A0218 32 0x04040404 # DDRC_ADDRMAP6
- ADDRMAP6 has now the row address bit 15 enabled in the 2GB config
- ADDRMAP0 and ADDRMAP1 changes nudge the bank address bits 0-2 and the CS bit 0 one bit higher (to make room for the row address 15)
When I try to run the NXP's DDR stress tester / calibration tool with the new 2GB configuration, the tool hangs. However, if I use the 1GB address mapping register settings, the calibration and stress test succeed ok with the 2GB hardware (only 1GB of memory is detected by the tool).
I have also tried integrating these register settings to U-Boot DCD table and the results are in line with the DDR stress test utility; The 1GB image seems to work ok on the 2GB board, but the 2GB image doesn't boot at all...
Has anyone had success using 2GB memory with i.MX7? I've been trying to find reference designs that would have 2GB memory with i.MX7, but haven't had any luck yet. Most of the designs have either 1GB or 512MB.
Is the DRAM register programming aid v.1.1 (https://community.nxp.com/docs/DOC-152468) up-to-date with i.MX7? Or could I be perhaps missing some crucial register setting here, since the stress tester hangs?
I have attached the excel sheet with MT41K512M16HA settings here for reference. Any help would be greatly appreciated.