16 of 1000 boards using the K70 have failed memory tests to date.
Here is the background:
1) Used the TWR-K70F120M tower board as a reference design
a) Followed the schematic
b) Used the artwork/routing from the design files of the tower board to prevent introducing errors.
2) MQX 3.8
3) Using Micron MT47H64M16NF-25E:M - The Tower board uses the MT47H64M16HR-25:H
Originally used the DDR INIT settings from the MQX 3.8 K70 tower board BSP. (FYI... Found that CR53 was repeated in CR54 and CR55. Manually changed CR54 and CR55)
ddr->CR50 = 0x00000064;
ddr->CR52 = 0x02000602;
ddr->CR53 = 0x03c80000;
ddr->CR54 = 0x03c803c8; ///AVM/// ddr->CR53 = 0x03c803c8;
ddr->CR55 = 0x03c803c8; ///AVM/// ddr->CR53 = 0x03c803c8;
ddr->CR56 = 0x020303c8;
ddr->CR57 = 0x01010002;
4) Created a memory test procedure (tested all 1000 boards)
Fill DDR memory with random data. While filling, look at the first byte of the memory to see if it changes (points to addressing error). Once filled, the test reads back the entire range of memory to verify contents. On the 16 failed units there are thousands of errors and it appears and it appears to be the high byte in multiple of 4 bytes.
5) Replaced 4 of the non working boards with new K70 micros and the error disappeared. Memory test passes every time.
6) Then tried to use the K70 DDR INIT tool and came up with different values than the tower board init settings. In fact, a few of the registers were left empty. Found out that there is a bug in the K70 DDR INIT tool
Tried using the DDR Init values from the above and still get memory errors
Any ideas on what is going on or how to proceed?
Hi Eric, I'm in a very similar situation as you and would like to get in contact with you to discuss this. I'm the one who initially found this issue well over a year ago. I've twice now started using a work-around only to find a few months later that it wasn't a not a solid solution. I'm specifically interested in the memory test you wrote but I'm sure there will be other benefits as well. Please find my e-mail address in my profile and send me an email as soon as possible :smileyhappy:
BTW, I have two contacts at AVNET but haven't talked to them in a year or so (I rather not mention their names here without their approval).
Thanks a ton, looking forward to your email!!
Could we get some more information about the failures to try and narrow things down? Maybe you've answered some of these questions already, and I wasn't looped in on all the discussion, so my apologies if there are repeats in here..
1. On the boards that are failing, when you get errors what values do you read back from memory compared to what you are expecting? Is there a pattern to the bad memory values?
2. After you have a board in a failing state, if you reset the RCR (set SIM_MCR[RCRRSTEN], then clear it), does that fix the issue at least temporarily?
3. What frequency are you using for the DDR_CLK? Have you tried decreasing the frequency?
(set SIM_MCR[RCRRSTEN], then clear it) fix the issue (at least temporarily)?