We have a new batch of DDR3 IC used in our mass production custom ARM board, they differ from the old one in term of some memory parameters and most notably the data rate (1600 VS 1866 MT/s).
The funny part is the old bootloader is still bootable on new board, and we have run memory test and our application for more than 72 hours without error, but we're not sure whether the different timing parameters will have any effects in the long run.
So is there any way to differentiate them programmatically? Or what is the best way to program different bootloader apart from inspecting the DDR3 part number manually?
If you have DDR3 DIMM module with a SPD EEPROM, then the EEPROM can be queried over I2C to get the memory's timing parameters.
But likely you have just raw DRAM chips on your board. I know of no way to query a DDR3 DRAM chip for any information such as a part number or timing parameters.
Usually DRAM parameters are hard-coded into the bootloader on embedded ARM devices. How exactly varies greatly between SoCs. Perhaps you can use something like GPIO lines that you have strapped to different values to figure out what version board is running, and then program the proper DRAM parameters based on that? Usually there are a few GPIO lines that are very easy to read and can fit in code that runs before DRAM is configured by the bootloader.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With