AnsweredAssumed Answered

IMX6DL memory corruption

Question asked by Robert Pot on Aug 1, 2018
Latest reply on Aug 1, 2018 by igorpadykov

We have produced hundreds of boards equipped with the IMX6DL with Linux and 1GB of DDR3.

Most boards work fine but now we have a board where it looks like we have a memory issue although I'm not sure what exactly is the reason. I have seen another board with the same symptoms but this board was lost during the test.

 

What happens is that our software is crashing and sometimes the Linux kernal stops.

I ran a memory test program, memorytester that does several tests and it shows that sometimes a bit is failing (always the same bit). DDR stress tester and u-boot tests don't show any issues.

 

So I focussed on the DDR calibration and the correct setting of the MMDC but didn't found anything that could be a reason and also no change I tried showed any difference in behavior, for the better or the worse.

We checked the power and indeed the VDDARM and VDDSOC had some issues with spikes and we improved this, but again no change on the memory test.

 

A strange thing is that memorytester is a linux application running in user space. It is testing about 100K and it showed issues that the first read of a tested memory location was wrong while the second read was fine. This was already strange because after the first read the content should be in cache memory so why would the second read be different from the first one if it was a DDR3 issue.

 

Next I did a test with the cpu frequency scaling and it appeared that when I force the unit to always stay at 792MHz instead of changing between 396 and 792MHz the issue was gone. But when the force the CPU to always stay at 396 MHz the fault was still there.

The issue is also gone when I change the DTB definitions that define the voltage at every frequency, I changed it such that both at 792 and 396MHz the voltage is 1175000 uV (originally at 396 it was 1075000 uV).

 

So power looks fine now, also the powers after the internal LDO and when the power is changing between the two setpoints this is doing it nicely. So to me it looks like a power issue but actually I'm not sure if there are other reasons that can cause this.

 

Any suggestion would be helpfull.

Robert

 

! Issue is already found. The operating point for 396MHz was incorrect. The voltage of 1.075V for the ARM core was too low.

This was based on an old datasheet of the IMX6DL (rev4) while in the latest (rev8) the minimum voltage for 396MHz was set to 1.125V. The voltage is increased in the DTB file and the system is working correct now.

Outcomes