I have a custom board using imx6 Solo and about 30% of my initial boards have been unable to boot reliably (eMMC or SD Card). I have found that applying heat directly to the top of the imx6 will cause it to NEVER boot, and applying cool air will cause it to ALWAYS boot. This is true of some boards, and the reverse of this is true on others (will always boot hot and never boot cold). This is also true for both SD card booting and eMMC booting.
I am using BOOT_MODE [1:0] set to 0b10 and using u-boot I have been able to read the register and verify that the imx6 is latching the correct set value, and similarly have been able to verify that BOOT_CFG1 & BOOT_CFG2 values are properly read at reset. The hot/cold is not extreme at all, in some cases, the board will boot at room temp and then when running for a few minutes (warmed up), it will not boot if reset. The effect of spraying the cold air is instantaneous - if I have a warmed imx6 that will not boot, I can spray it with canned air for less than 1 second and apply power in less than one second and the board will boot. I just fused a board and the issue is still the same.
During a bad boot, it seems that the board is not even attempting to communicate with the eMMC. I see no activity on the clock, cmd, or data lines during a failed boot. Furthermore, if I apply the cool air to boot the imx6 properly, I can then do anything to the imx6 (extreme hot/cold) and have no issues with reading and writing to the eMMC.
Any thoughts or suggestions will be greatly appreciated.