Author Topic: Does anyone actually still use MMC cards? How about "very small" SD cards?  (Read 910 times)

0 Members and 1 Guest are viewing this topic.

Offline Freddie Chopin

  • Contributor
  • Posts: 11
  • Country: pl
I'm writing a driver for SD/MMC cards (in SDMMC mode, not SPI mode) for my C++ RTOS and this code works fine for SD v2.0 cards. I'm at the stage of writing unit tests and it turned out to be quite complex, mainly for two reasons:
- at my desk I have no MMC cards and no "old" SD v1.0 cards, so I actually don't know whether this code works for such cards at all,
- all the complexities required for supporting 3 different types of cards with one source file make the code really convoluted.

So it took a small step back and started rethinking basic assumptions. This in turn made me question whether there is actually any point in trying to support MMC cards and "old" SD v1.0 cards. According to my research and experience MMC cards are actually "dead" for like 10 years at least. If you want, you can buy a 512 MB MMC card (used or "new") for sth like ~10 €. If you try really REALLY hard maybe you'll find a 1 GB MMC card. At the same time for half this price you can buy a new 32 GB SD card almost anywhere. Then there are "old" SD v1.0 cards. If I read the specs right, the SD v2.0 standard was published 13 years ago, which is like "forever" for software and at least "very long time ago" for embedded electronics. As for the prices, a 32 MB SD card (used or "new") costs more or less the same as a 32 GB new one.

But anything I come up with will still be just my personal opinion, so I decided to ask - whether anyone actually still uses MMC or "old" SD v1.0 cards for anything or can I safely assume that these are extinct and belong only in the museums? (; My RTOS is very unlikely to be used in an old/existing project (you rarely change such a core component, especially in a mature project) and for a new project this seems natural to also use a "new" type of memory card anyway...

Thanks for any opinions!
 

Online Kleinstein

  • Super Contributor
  • ***
  • Posts: 5360
  • Country: de
I would consider the old MMC cards obsolete and essentially extinct in the wild. So I see no real need to support this old format anymore. Only something like a dedicated card reader may still want to support the old format - just to recover old data, though those cards are not really good for long time storage.

Old SD V1.0 may be rare, but here it may be difficult to see the difference. So there is a small chance they may be used by accident. So there should be at least a kind of warning, error detection.
 

Online magic

  • Regular Contributor
  • *
  • Posts: 206
  • Country: pl
I have some old SDs for those devices that don't take SDHC and even my 16MB MMC found use as a bootdisk for one ARM machine.

I wouldn't stick any of them into a modern device for real data storage, but if it only needs the card to store a kernel image or otherwise no more than a few (hundred) megs, I would rather pull one of my old cards than go buy another SDHC.

If you need cards for testing, 2GB are still being sold for pre-SDHC devices and surely cheaper than 10€ if you don't mind onehunglow brands. Used cards ought to be available for peanuts on certain auction site.
 

Offline Freddie Chopin

  • Contributor
  • Posts: 11
  • Country: pl
If you need cards for testing, 2GB are still being sold for pre-SDHC devices and surely cheaper than 10€ if you don't mind onehunglow brands. Used cards ought to be available for peanuts on certain auction site.
I have two 2 GB cards and both of them are SD v2.0 (;

The SD v2.0 specification was published in 2006, so to get a SD v1.0 you have to get something older and definitely smaller than 2 GB.
 

Offline amyk

  • Super Contributor
  • ***
  • Posts: 6101
eMMC is still available and uses the same basic protocol in a different package.
I have not read the specs in a while but I remember the versions being backwards-compatible.
 

Online magic

  • Regular Contributor
  • *
  • Posts: 206
  • Country: pl
What's the difference between "standard capacity" 2.0/3.0 and 1.x? I thought there is only the CSD version field and it is 0 for SC cards regardless of what spec they are made to and something else for HC/XC.

And by the way, there are cards up to 4GB which work with pre-2006 devices. I could swear they ought to use the version 0 CSD from 1.x spec because otherwise those devices wouldn't parse them, but I have one such card and its CSD reported by Linux shows version 1 and the HC/XC layout. Maybe Linux lies or I did something wrong :wtf:
 

Offline Freddie Chopin

  • Contributor
  • Posts: 11
  • Country: pl
eMMC is still available and uses the same basic protocol in a different package.
I have not read the specs in a while but I remember the versions being backwards-compatible.
But eMMC is something completely different and I imagine that a separate driver for eMMC is much better than trying to pretend that a removable microSD card in a socket is the same thing as an eMMC chip soldered to the PCB (;

What's the difference between "standard capacity" 2.0/3.0 and 1.x? I thought there is only the CSD version field and it is 0 for SC cards regardless of what spec they are made to and something else for HC/XC.
The difference between v1.0 and v2.0 is mostly in the supported commands, which affects initialization procedure. For example v1.0 does not have CMD8 and for v2.0 it is mandatory to issue this command between CMD0 and ACMD41. What is in the CSD_STRUCTURE bitfield is something completely different - in fact the 2 GB cards which I have (v2.0) both have CSD_STRUCTURE equal to 0. SD specification is a real mess...
« Last Edit: March 17, 2019, 06:21:37 am by Freddie Chopin »
 

Offline mariush

  • Super Contributor
  • ***
  • Posts: 3444
  • Country: ro
  • .
Well, I still have the 32 MB SD card that came in the package with my Canon Powershot A580 : https://www.amazon.com/Canon-SDC-32M-Digital-Powershot-Cameras/dp/B008IA1R56

Not sure if it's SD 1.0 or 2.0, don't know how to determine that.
But, if you can't source your own SD 1.0 cards and this one is SD 1.0, I'm willing to mail it to you.

I bought the camera around 2009 so I suspect it may be SD 2.0
 

Offline Synthtech

  • Regular Contributor
  • *
  • Posts: 154
  • Country: au
Lots of synthesizers and high end music workstations are still in use that use used MMC, CF and SD cards. And these machines often only work with the early smaller capacity cards. Much like the way that some equipment (Rigol scopes) needs old, small capacity USB thumb drives of they just won’t recognise the media.
« Last Edit: March 17, 2019, 06:47:56 am by Synthtech »
 

Offline Freddie Chopin

  • Contributor
  • Posts: 11
  • Country: pl
But, if you can't source your own SD 1.0 cards and this one is SD 1.0, I'm willing to mail it to you.
Thanks for the offer - I'll keep it in mind if such need arises!

Lots of synthesizers and high end music workstations are still in use that use use MMC, CF and SD cards.
Maybe the question was not entirely clear, so I'll try to refine it a bit. I'm sure there are devices which are still manufactured which use MMC cards or very VERY small SD cards, but I'm rather wondering whether anyone would choose such a card when starting a new project from scratch.
 

Offline mikeselectricstuff

  • Super Contributor
  • ***
  • Posts: 11826
  • Country: gb
    • Mike's Electric Stuff
I've noticed that newer cards can be a lot slower in SPI mode, both for read and especially write, like a factor of 5-8x worse. I suspect the latter may be a block-size issue, the cards having a larger actual block than 512 bytes and using some form of inefficient emulation.
It can be quite hard to find old "real" 256/512M cards  - I suspect a lot of what's out there are bigger cards that have been re-configured to look like the smaller old ones.
Youtube channel:Taking wierd stuff apart. Very apart.
Mike's Electric Stuff: High voltage, vintage electronics etc.
Day Job: Mostly LEDs
 

Online magic

  • Regular Contributor
  • *
  • Posts: 206
  • Country: pl
The difference between v1.0 and v2.0 is mostly in the supported commands, which affects initialization procedure. For example v1.0 does not have CMD8 and for v2.0 it is mandatory to issue this command between CMD0 and ACMD41. What is in the CSD_STRUCTURE bitfield is something completely different - in fact the 2 GB cards which I have (v2.0) both have CSD_STRUCTURE equal to 0. SD specification is a real mess...
Makes sense, I wasn't aware the differences already start at early init.
I guess it now explains why my 4GB SDSC presents itself as SDHC to Linux - it detects a 2.0 host probing it and goes SDHC for compatibility with the 2.0 spec, which forbids 4GB SDSC cards. Smart little card.

BTW, if CMD8 is the only difference I wouldn't worry too much about compatibility. It seems you are supposed to notice that the card responds "invalid command" to CMD8 and simply proceed to issue ACMD41 without the "high capacity" bit set. I'm not even sure if SDSC v2 cards like those you have even bother responding to CMD8 at all? Certainly CMD8 isn't required for their operation, because they work on v1 hosts.
 

Offline Freddie Chopin

  • Contributor
  • Posts: 11
  • Country: pl
No, trust me, CMD8 is just the first difference you notice. v2.0 cards can work with 50 MHz clock (also in SPI mode!), but to use it, you have to first switch the card to "high speed" mode with CMD6, which is supported only in v1.1 cards, but v1.1 spec was released just a few months before v2.0, so I guess there finding such card would be even harder than v1.0 (;

BTW - v2.0 cards obviously respond to CMD8 - there is no rule that SC cards are v1.0 and HC cards are v2.0. There are SC cards which are also v2.0 and these would be all the cards you can actually buy in the shops (; In the SD spec there is a description of "SD_SPEC, SD_SPEC3, SD_SPEC4, SD_SPECX" fields and this chapter explains some of the differences between the versions. To find more you have to browse through the whole document, but the other major thing missing in v1.0 is the support for 50 MHz clock.
 

Online magic

  • Regular Contributor
  • *
  • Posts: 206
  • Country: pl
I guess it all depends on who your users are.

If it's some toy OS for hobbyists I guess it's no big deal to tell them to buy a card made in this decade or eff off.
If it's for a commercial product, it may be worth doing it right. A few customers will inevitably stick old cards in it and complain.
Even if current production 2GB cards are v2 it doesn't mean there are no 2GB cards made before 2006 waiting to bite you. It only makes it harder to source specimens for compatibility tests ;)

There is the option to leave the code as is, implementing v1 support only theoretically per the spec, and wait for bug reports to come in >:D

And whatever you do, please do not take the Panasonic route and display "insert card again"  when you don't like the filesystem it's formatted with :rant:
 

Offline Nerull

  • Frequent Contributor
  • **
  • Posts: 570
But eMMC is something completely different and I imagine that a separate driver for eMMC is much better than trying to pretend that a removable microSD card in a socket is the same thing as an eMMC chip soldered to the PCB (;

The trick for dumping the NAND flash of a Nintendo 3DS is to solder wires from a SD adapter onto the eMMC chip and then plug it into an SD reader.
 

Offline Peabody

  • Frequent Contributor
  • **
  • Posts: 420
  • Country: us
I'm working on an SD card bootloader for MSP430 processors.  I think Dave uses a similar firmware update system for his new meter.  Anyway, the smallest card I can find on Ebay is 128MB SD for about $1 each.  I've ordered a couple to test.

For bootloader purposes, I'm assuming the card would be provided along with the device, so the developer would be sure in advance it would work with the bootloader.  I'm trying to limit the bootloader to 1K, and may need to limit it to standard SD cards, not SDHC.  That would support SD up to 2GB, which I think are still widely available at low cost online.  Of course we're talking about firmware files of 16K or so, so any card is going to be way too big.  And for this purpose speed isn't an issue.  The risk is that SD may at some point no longer be manufactured.  Then I would need to make the bootloader larger, or re-write it for SDHC only.

I would say if MMC cards aren't avilable for purchase anymore, it would make sense not to support them.  I haven't seen one in some time, and I assume they haven't been manufactured in the last couple decades.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf