I'm working on a project that uses an SD card in SPI mode, and I have encountered some oddities. Most strikingly, I have code that works perfectly on a bunch of 32Mb Toshiba cards but refuses to work at all on 64Mb cards (also Toshiba, but overbranded PNY). This is not a filesystem layer error - it is a problem at the physical level. If I try to read-modify-write sector 0 (for example), it works on the 32Mb card but the readback is a sector-o-zeroes on the 64Mb card.
Are there some known differences between various types of card, that I should be taking into consideration? I've pored over a bunch of hobbyist implementations in C and a variety of assembly languages, but they all seem to be doing the same steps my code does, in the same order.
I realize this is a vague question, but I can't find any war stories in google, I'm wondering if they exist at all...