Alternate/New DDR Silicon revsions crash with "Undefined Instruction"

Started by srungerson, July 04, 2014, 02:38:24 PM

Previous topic - Next topic


This is a new topic to refresh the original thread on Alliance DDR ("1.50 EUR DDR1 Memory ...)

We are trying update the Mini/Nano design to use alternate & currently produced  DDRs. We tried Alliance, but gave up and went back to Micron.

Our original and current design uses Micron Commercial MT46V32M16P-5B:F   (REV F) which work perfectly.
We have now tested the currently produced MT46V32M16P-5B:J (and industrial Temp MT46V32M16P-5B XIT:J)

However,  all  MICRON rev:J does not work,  only  :F version works .
Micron Rev:J now gives  Undefined Instruction  r14_ on DDR Init...This was the same error we had when we used Alliance DDRs

It seems Rev F and Rev J  are nearly identical in the Data Sheet (below) ... but the Rev J consistently fails

Does anyone have ANY experience with modifying DDR settings to work with DDR1 silicon variants?

Best , SR



We are using MT46H32M16LFBF-6, booting via bootlets and adjusted the DDR settings.

How do you boot the device? bootlets? u-boot?
Which memory clock setting?

Assuming its not an hardware related error:
Undefined instruction on DDR Init is strange because this code is located in the on-chip ram.

Did you single stepped your startup code?





I am chasing this down now. I dont' use Mobile DDR but have made a successful boot now with Rev J:! However, it is not with my code, but rather with an Olimex Image I found on an SDCard.

This card is the working . Here is the OLIMEX debug!

PowerPrep start initialize power... Battery Voltage = 2.11V .......
LLCMay 11 201215:26:EMI_CTRL 0x1C08404init_ddr_mt46v32m10Frac 0x92926192

Notice this debug is ordered  EMI_CTRL >>>  init_ddr_mt46v32m10  >>>Frac

Unfortunately, My Freescale build shows a different sequence and does not show the same DDR in debug, but rather it has this source printf("init_ddr_mt46v32m16_133Mhz\r\n");  (notice it is not "m10:)

My code matches this :
Clearly I am not running the same code, and these codes init the DDR differently.

Is there an init-mx23.c somewhere that has the working code sequence that also shows "init_ddr_mt46v32m10" ? I'd love to build and compare this!



Does anyone have the version of init-mx23.c that references
the printf of "init_ddr_mt46v32m10" ??

If so I would really appreciate a paste or attachment posted.  :)



Hi SR,

I doubt there is a standard 'init_ddr_mt46v32m10', it more seems that your bootlet is a modified one for a very special case.

I don't know which mem chip is referenced by mt46v32m10. The m10 makes no sense because there is no Micron DDR SDRAM (MT46) with a 10 width (x10).

Additionally I don't think trying different bootlets by try and error is much promising.

The best way IMHO is to start with the MT46V32M16 init and reduce the clks to conservative values according to the datasheet.

Is this working?




Thank you for the reply..I will do this.. I am just looking at 2 different source code debugs and see 2 different versions. Before I start changing code, it makes sense for me to start by looking at these changes first as ONE WORKS! This is why I know there are 2 sources.....

My code from Olimex Mini has this debug. It is from a purchased product. I did not complile it, it works!

EMI_CTRL 0x1C08404
Frac 0x92926192

However, when I use my compiled Olimex code (ising Freescale  init-mx23.c) , the debug reports a different debug in a different sequence. It does not work.

EMI_CTRL 0x1C084040
FRAC 0x92926192

power 0x00820710
Frac 0x92926192
start change cpu freq

It seems to me the first step is try to find why there are 2 source codes 'out there' and look at the file compares of the working and no-working versions.

Maybe Olimex knows where the first source is or why it is shipped.

Thank you so much for the replies.


I checked my SD card I got with my first Olimex iMX233 board and you are right. The bootlet says 'init_ddr_mt46v32m10'.

If you want to know which changes are made and/or get the source you can try to contact Dimitar Gamishev. I think he compiled the kernel for the olimex card. Maybe he knows more about the bootlet.

You will find his eMail addy on his github page:




thank you for checking..!  this clears the mystery
I wrote Dimitar :) and will post my findings