I'm looking at the feasibility of incorporating an SD card into a low-end embedded system. Haven't done it before and could us a push in the right direction.
Reading the SanDisk SD card Product Manual, I'm confused about this paragraph in the App. Note section under "File System Support":
"Reading and Writing to an SD Card ... is generally done in 512 byte blocks, however, erasing often occurs in much larger blocks. The NAND architecture used by SanDisk and others currently has Erase Block sizes of (32) or (64) 512 byte blocks, depending on card capacity. In order to re-write a single 512 byte block, all other blocks belonging to the same erase block will be simultaneously erased and need to be rewritten."
So, does that mean you need to have a 16 or 32 KB buffer in the host to hold all the data you're *not* changing if you want to change smaller chunks (such as would happen, I would think, if you wanted to manipulate a file system on the card)? Or just put up with mapping your little on-chip control structure buffer into a 16 or 32 KB chunk, wasting the rest of it, and hope/plan that most of what needs to be stored/read/rewritten comes in big chunks (like much data does in file systems)? Or am I misinterpreting the above and you really *can* rewrite single blocks?
Why I'm asking: A 16 or 32 KB buffer is beyond the on-chip capacity of (most?) low-end controllers, whereas one or two KB is a piece o' cake. I'd obviously rather avoid the cost of extra hardware or a beefier controller.