We have this issue on few of the built boards. Most of the boards are working fine.
Hardware details:
Imx6q.
The EHCI host controller is connected to USB hub – SMSC 2514. In which, an USB to serial controller is connected (EXAR XR21V1414IM48).
Linux kernel version: 4.9.88
U-Boot version: 2014.04 v7
We have done the DDR calibration and those values are put into the U-Boot. We used the U-Boot method, as mentioned in the link https://community.nxp.com/docs/DOC-105652 for DDR calibration.
We have ran the DDR calibration on different boards, the results are shown below.
MMDC_MPWLDECTRL0 (ch0) | 0x00150013 | 0x0025001F | 0x00150017 | 0x00180018 | 0x002E0030 | 0x0022001F | 0x00190021 | 0x001C001B | 0x00190017 | 0x0019001B | 0x00170017 |
MMDC_MPWLDECTRL1 (ch0) | 0x001D0018 | 0x002A0023 | 0x0021001A | 0x0022001D | 0x00300030 | 0x002B0028 | 0x00230019 | 0x0028001C | 0x0023001E | 0x0021001B | 0x0026001F |
MMDC_MPWLDECTRL0 (ch1) | 0x00070019 | 0x0013001F | 0x000E001C | 0x00120021 | 0x000A001A | 0x0015002A | 0x00180027 | 0x000E0018 | 0x000C001D | 0x00170027 | 0x000D001D |
MMDC_MPWLDECTRL1 (ch1) | 0x000A0019 | 0x00110026 | 0x0007001A | 0x0007001C | 0x00050012 | 0x001D001F | 0x00110025 | 0x00040015 | 0x00000018 | 0x00140024 | 0x00000015 |
MPDGCTRL0 PHY0 | 0x431C0334 | 0x43200338 | 0x43240330 | 0x4324033C | 0x43440358 | 0x457C060C | 0x432C0344 | 0x43280334 | 0x43280338 | 0x432C033C | 0x43300344 |
MPDGCTRL1 PHY0 | 0x031C0310 | 0x03200318 | 0x031C0310 | 0x031C0314 | 0x033C0334 | 0x06140618 | 0x032C031C | 0x0328031C | 0x03240318 | 0x03240318 | 0x03280318 |
MPDGCTRL0 PHY1 | 0x43280334 | 0x43200334 | 0x43200334 | 0x43200330 | 0x43340344 | 0x46380644 | 0x43280338 | 0x43200334 | 0x43200330 | 0x43280344 | 0x432C0338 |
MPDGCTRL1 PHY1 | 0x03280270 | 0x0328026C | 0x031C0260 | 0x031C0264 | 0x03300270 | 0x057C054C | 0x0328026C | 0x0320026C | 0x031C0268 | 0x03300270 | 0x03200264 |
MPRDDLCTL PHY0 | 0x463C3C3E | 0x463A3E3E | 0x483A3C3E | 0x4E3E4042 | 0x4A404246 | 0x463E3A3A | 0x4E3A3E42 | 0x4E3C3E40 | 0x4A3A3E3E | 0x4A3A3C42 | 0x4A3A3E42 |
MPRDDLCTL PHY1 | 0x46463C4A | 0x46463C4E | 0x403E3A4C | 0x403A384A | 0x423E3C48 | 0x443A3C48 | 0x443E3648 | 0x42423A46 | 0x42443E4A | 0x48443E4E | 0x3E3E3A48 |
MPWRDLCTL PHY0 | 0x363A3C3A | 0x363C3E3E | 0x383C4040 | 0x363A3E3A | 0x343E3E3C | 0x3A3A403E | 0x383E443E | 0x343E423A | 0x323C403C | 0x363E3E3C | 0x3A3E403C |
MPWRDLCTL PHY1 | 0x48344A3A | 0x46344A3E | 0x4438483E | 0x44324838 | 0x44364638 | 0x463C5042 | 0x4432443C | 0x4234463C | 0x463A4A40 | 0x42344A3E | 0x4436483A |
Test application being ran:
A test application is being run, this will write some data (12 bytes) continuously onto the USB to serial port.
The issue is on few boards, the system just hung (no output in the console). On few boards, there is some kernel panic/crash messages. These messages are not consistent, we get randomly.
Also, the issue reproducing time on a particular board varies from 5 mins to 3 hours.
We have tried disabling the DDR self-refresh, MMDCx_MDMISC Bit 16 (WALAT) is SET to 1, as posted in other threads and changing the kernel configuration to CONFIG_PREEMPT_VOLUNTARY, we see improvements. But, these stuffs doesn’t fix the issue.
Our question:
Hi Sankarraj
issue may be also caused by instable power supplies, ripples on power lines.
One can try linux memtester as it also well test not only memory but also
stresses power supplies. For checking power one can follow
i.MX6 System Development User’s Guide, sect.Table 2-6. Power and decouple recommendations,
ripple requirements.
https://www.nxp.com/docs/en/user-guide/IMX6DQ6SDLHDG.pdf
As an experiment one can try to hand solder 22uF capacitors directly under center of chip,
try software increase voltages of ARM_CAP, SOC_CAP, PU_CAP.
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------