It's tricky to know what to suggest. FileCore does a lot more cross-checking
of disc parameters and free space maps than is possible with FAT, so if the
image has been incorrectly written, then it would produce the error "Disc
not understood - has it been formatted?" rather than a drive empty error.
Drive empty could be caused by a bad contact with the card detect switch
(since Linux presumably can't cope with cards being swapped, I don't know
offhand if it even bothers checking it). After detecting an inserted card,
the first thing SDIODriver does is the card initialisation sequence - this
is so that it can discover the card's address (RCA) and various other things
like whether it's an MMC or an SD card and whether it's byte addressed or
sector addressed - things which are required in order to be able to
correctly formulate other commands. If these initialisation commands aren't
responded to, SDIODriver assumes the card was incorrectly inserted, or
perhaps that someone inserted a passive micro-SD-to-SD adaptor with no
micro-SD card in it, and so treats it the same as if the slot was empty.
It's also useful that it starts from scratch like that because the module
can be reinitialised or re-loaded after boot - so there's no guarantee that
there's any card in the slot any more - and also because on multi-slot
machines like the Pandora, the second slot has (a) not been initialised at
all by the bootloader, and (b) may or may not contain a card.
Nevertheless, it would appear that in this case, the card successfully
initialised (enough for the bootloader to load RISC OS) but then failed the
second time, when SDIODriver starts. I don't think I've seen that myself
since we fixed the pull-up resistor issue, despite having regularly used
several different brands of card.
I can only speculate about why some people find it fails. It could be a
mechanical problem with their SD sockets, it could be something to do with
their power supply, or the exact card they're using (how much power they
draw, how slowly they initialise, and so on). It might be that SDIODriver is
trying to run the card at a speed that it doesn't work at, if the bootloader
configures it differently somehow - but that's hard to confirm, especially
when the bootloader is closed-source