Greetings,
We’re in the process of shifting to a newer U-Boot build, but currently are still loading an older 2015.1 U-Boot on our BBBs. We noticed recently that some BBBs from a recent order were slow to fully boot up to Debian. Connecting directly to the serial UART of the BBB, we saw the following error immediately after power is applied:
U-Boot SPL 2015.01-00001-gb2412df (Jan 29 2015 - 15:01:06)
spl: mmc init failed: err - -19
### ERROR ### Please RESET the board ###
Following that last line of output, the BBB will sit there for ~50 seconds, and then appears to reset (maybe a watchdog kicking the CPU or board?) and it tries to boot again. Sometimes this error is hit on the subsequent reset (or even hit on multiple subsequent resets; I’ve see it happen 4 times in a row before the U-Boot boot succeeds). And maybe ~20% of the time we do not see this error at all following initial power-on.
We noted that the BBB boards we see this on have newer Kingston MT32 eMMC parts, whereas the boards we’ve been using for years without this error have MK27 eMMC parts. Some digging into our version of U-Boot source code indicates that the -19 error in mmc init is a timeout error. We’re still examining source differences to see if there is some eMMC-related handling in the newer U-Boot that ours is missing, but we did casually note that the mmc init routines in our older version of U-Boot call hang()
on some errors (which triggers that ### ERROR ###
line of output and the board going idle) where the newer version of U-Boot (2019.4) currently shipping on BBBs we recently received from DigiKey does not appear to call hang()
in similar circumstances.
Once the BBB has successfully booted Linux (it will eventually succeed, but might hit a few of those -19 U-Boot errors along the way), there do not appear to be any mmc errors or unusual messages in the kernel dmesg logs, nor anything “above” that (e.g. filesystem errors).
Was curious if anyone else has encountered this scenario or had any thoughts/ideas. TIA!