I figured it out. The problem wasn’t timing with the service, it was problems with an old version of U-boot on a different board than I had been testing with. I updated U-boot (like I had to do on my testing board) and it all works now.
That said I still don’t fully understand the problem. Where is U-boot stored? I’m booting from a microSD card and using that card in one board works, but didn’t when I switched to this other board. Does it not pull that data from the microSD card? Is it reading from the eMMC of the other board?
As I understand the process... Unless the boot-select button is held
down, recent images (mid-Jessie time-frame I believe) contain a u-Boot that
checks for the uSD card. So...
Without boot-select, the u-Boot on the eMMC is loaded. It then checks
for the presence of the uSD card, and then for a bootable system on that
card. If such is found, the uSD card is made primary and booting
/continues/ using the files found on the card. u-Boot is still the version
from the eMMC.
With the boot-select, the eMMC is completely bypassed and the uSD card
is made primary, and u-Boot searched for on the uSD card. If found, it is
loaded and continues booting using the uSD card.
I'm not certain of when the "u-Boot loads device tree" vs "kernel loads
device tree" change took place. If it was after the auto-uSD card boot
change, one has the potential to have an eMMC u-Boot that expects the
kernel to load device tree, while the kernel on the uSD expected u-Boot to
load them (or if the uSD card is old enough, an eMMC u-Boot that does load
device trees, running a kernel that expects to read the device tree files).
Periodic flashing of the eMMC with current images is probably
recommended, just to ensure the u-Boot image is up-to-date (and cleaning
out crud that might have accumulated on the eMMC <G> )
It does come up on the list often that an old u-boot on the eMMC can
cause problems even when using the latest image on micro SD.
If people just want to run from microSD, then Robert normally
recommends people delete u-boot on the eMMC:
sudo dd if=/dev/zero of=/dev/mmcblk1 count=1 seek=1 bs=128k
regards,
drew
I should note that it is important to make sure you are using the
correct mmc device for the eMMC. mmc1 may not always be the emmc.
-Drew