So, we have an established product with a bootloader, whose sole function is to upload new firmware to the product when prompted. Otherwise, it drops out and runs the main code. The product only supports FAT32 SD cards right now. With the rise of 64GB+ where ExFAT is the format, I decided to look at updating the code to support both formats. However, the extra ExFAT code won't fit in the bootloader (if the FAT32 code is kept). So, my question for those that use SD cards in their embedded system is: Are you migrating to only supporting ExFAT or are you supporting both? I've noticed the smaller cards are getting less and less available, and smaller cards can be formatted to ExFAT, so I was wondering if I should drop FAT32. Advice on this? Thanks.
- we had one customer who lost his SD card (2GB that comes with the system) and he got a new 64GB card, which wouldn't work (because it was ExFAT). He had to go buy or find a card that supported FAT32. That's what prompted this post.
Yes, I've encountered this too. In my case the product was using embedded Linux, so we just enabled the additional filesystem in our kernel setup, etc, and then we were fine. Supporting both was easy in our case.
It is frustrating, but simply asking people to reformat to FAT32 is a short term option. I would suggest putting together a standard response or document with instructions for Windows and MacOS (and perhaps Ubuntu or other common Linux environments) on how to reformat a card to FAT32.
Or, depending upon the product/business, ship customers a free branded SD card already formatted and with the latest update files already on the card! :-)
Oooh that's a tricky one.
It depends on a number of factors which will be unique to your product and company, including, but not limited to:
1. How many products out there?
2. How often do they need new firmware
3. How long will these products continue to be sold.
4. Can you guarantee that moving from Fat32 to ExFat won't brick anyone's devices. (They'll need two cards... a Fat32 one to do the first upgrade, and then a ExFat one to boot from?)
Maybe your company could buy a boat-load of Fat32 cards and keep them in stock, and give them away to customers when needed.
Anyway, I wish you luck with your decision, and would encourage extensive testing.
Thanks for the reply.
We have features in the software that allow saving of user data to SD cards. So, I updated the main code to have ExFAT support. However, to update the firmware (not very often - new features or bug fixes, if the user wants it), the bootloader would also have to have the ExFAT support to use 64GB+ cards. The systems (4 different types) would have to come back to our facility to flash the new bootloader. So, for now, I think we'll require FAT32 to do any upgrade, but ExFAT is OK for saving data.
Can your customer with 64GB card (or 512GB in two years time) format it to 2GB (or less) with FAT32?
As far as I know, you can only format 64GB+ cards to FAT32 with 3rd party software. Windows doesn't allow it.
I wouldn't rely on MS as your trusted long-term partner in the world of embedded development. Nothing can stop them from dropping support of any FAT altogether in the next version of Windows, leaving only the ability to format as NTFS. What would you do then with your established product already fixed to accommodate ExFAT?
Get yourself Linux (or what was the last Windows version that could format FAT32? or what was that third-party tool?), if not already. Format these SD cards yourself, and, as already suggested, send them with the latest and greatest version to your customers.
All versions of Windows can format FAT32. Just not on any SD cards 64GB+. FAT32 is limited to 32GB cards or less. It's not a Windows limitation.
It is essentially Windows limitation that it can not format 64GB card to 8GB FAT32 card.
Yeah, that's true.