What is the procedure for DRAM auto-sizing ?
We want to have a single bootstream that supports 64MB, 128MB, 256MB.
So we need to have different settings for DRAM_REG[29] ....
Can I just change DRAM_REG[29] on the fly ??
So I set it for 256MB ... look for pattern wraparound at 64MB and 128MB and
then set DRAM_REG[29] to 64MB setting or 128MB settings or leave it at 256MB
depending on wraparound results ....
Or do I have to do something to shutdown and restart the DRAM controller in order to
change DRAM_REG[29] ?
Hi Stuart
correct procedure would be restart the DRAM controller
using small subroutine running in iRAM.
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
What do I need to do to stop the DRAM controller before going through the startup sequence again ???
Here is what we do to startup the DRAM: Init_mddr_200MHz(); value = HW_DRAM_CTL17_RD(); value &= ~BM_DRAM_CTL17_SREFRESH; HW_DRAM_CTL17_WR(value); value = HW_DRAM_CTL16_RD(); value |= BM_DRAM_CTL16_START; HW_DRAM_CTL16_WR(value); //Wait for DDR ready while(!(HW_DRAM_CTL58_RD()&0x100000));
Hello Stuart!
Did you achieve your goal?
I am in the same situation as you, as we are upgrading various memory sizes (128MB=default, 256M, 512M and 1GB as options) in our iMX28 based boards.
Some memories need to have one CS but different memory layout, some other will have more than one CS and different row and columns, ...
Did you find a suitable solution to cover a wide spread range of memory sizes in bootlets?
one can set START=0 in HW_DRAM_CTL16.
~igor