Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Let's look at the order of events in a properly functioning system.</p> <ol> <li>The device boots and load the SD/MMC driver</li> <li>A card is inserted into the card slot</li> <li>A hardware interrupt occurs (maybe a power detect, maybe a data - this is OEM dependent)</li> <li>An interrupt handler notified the SDMMC driver that a card is present</li> <li>The driver queries the card type</li> <li>The proper function driver (storage, etc) is loaded (or notified in the case of storage)</li> <li>The function driver does it's work to expose the hardware to the OS and applications</li> </ol> <p>The problem for you is that #3 isn't happening properly on boot if a card is already in the slot. This is not uncommon in platform development for SD or USB - the interrupt handler has to be functional and unmasked before the slot is powered.</p> <p>It's very difficult to create a software workaround for this, especially if the OAL (the part of the OS developed by the hardware manufacturer, not Microsoft) is a black box. I assume that it is in this case.</p> <p>To be clear, this is definitely a platform bug. The first course of action should be to talk to the support group at the device OEM, tell them they have a bug and see if you can get them to fix it. </p> <p>If that fails (if you don't buy many devices, or the device is old, getting support is....challenging) then I'd suggest digging into the platform SDMMC driver to see if there might be any way to get into the middle of the process. I've never tried (I've always been on the OEM side of this and just fixed the driver or platform code), so I'm not sure if there even is a solution, but it's worth a look. </p> <p>The source code is freely available if you download and install the evaluation version of Platform Builder (be sure to select the 'install source' option). It's all C, and it's not a lot of fun to try to browse, but as the saying goes, "Use the Source, Luke."</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload