We're designing a board using i.mx6sololite that has both eMMC and microsd. The objective that we have is to enable the following usage mode:
- typical usage is system boots from emmc on SD2
- special case usage when emmc is corrupted, we want user to be able to plug in microsd flashed with bootable image so that the user can reflash emmc from the system booted via microsd (on SD1)
If we were using a TI SOC, we can do above by using the boot order (similar to BOOT_CFGx pins) to set the boot order to be microsd first, then emmc second. That way, even if emmc is corrupted the system can still be recovered by the user booting from microsd. The user does not need to change any physical things on the board (meaning no need to press a button, or put a jumper, or dip switch).
With 6sl, I don't see a way to do this as there does not seem to be a boot order type configuration option. The closest option would be to have the user use a DIP switch or jumper to change BOOT_CFG2[4:3] to change the port select between SD1 microsd and SD2 emmc but this means we have to expose those buttons/dip switch/jumper on the board to the user which is not something that is desirable.
Other ideas are to set the system to boot from SD1 microsd and then have the microsd u-boot image check the state of the emmc before trying to boot rest of system from emmc. The problem with that is that if the microsd is not present, then the system won't boot at all which would not be suitable for our customers.
Is my understanding correct or have I missed a method by which bootROM can support trying to boot from microsd, then if fails, try to boot from emmc? Thanks for any advice/suggestions.