Hahahaha! You know as well as anyone the hoops and 'workarounds' that often have to be found to get around limitations in the system. It pains me to think of some of the corners we hacked ourselves into in trying to coax every last bit of storage and performance out of some of the earlier systems; decisions that would sometimes come back to haunt us and often meant we had to build in other layers of hacks to workaround the existing hacks. Although that's pretty standard, isn't it? I still see it a lot today... :smile:
We had one last year where inbetween prototyping and production a 2GB eMMC was replaced with a 4GB eMMC but nobody told me, when the first batch of production boards turned up the eMMC didn't work at all. We use a commercial FAT filing system which supports journaling and stuff, but it's closed source, we literally just provide the low level interface to the chip.
I ended up having to patch our low level code so that when the CSD was read, it "munged" it into something which the FAT filing system was happy with, but that wasn't enough to make it work. The filing system (and 2GB eMMC module) used byte addressing and the 4GB uses block addressing, so I also had to translate these on the fly in the lowest level so that read/write operations worked correctly!
My colleague was sweating for a bit as he'd made quite a few of these in the production run and they wouldn't work unless I could make it!
Long story short, before replacing a component with something else, check with me that it works as expected first! lol