I have posted a new version of SdFat that has CRC support for SD cards. Enabling CRC checking increases reliability
at the cost of speed.
I have implemented two options, a faster larger table driven CRC-CCITT version and a smaller slower version.
Here are benchmarks with the new SdFat:
Write 192.6 KB/sec
Read 296.2 KB/sec
Lookup table CRC (total cost about 800 bytes of flash):
Write 135.1 KB/sec
Read 184.6 KB/sec
Non-lookup CRC (total cost about 300 bytes of flash):
Write 92.9 KB/sec
Read 116.4 KB/sec
I also have made changes to support alternative serial libraries like my SerialPort library.
Error messages and output from programs are now sent to a stdOut Print
The default stdOut is a small non-interrupt driven class that outputs messages
to serial port zero. This allows an alternative Serial library like SerialPort
to be used with SdFat.
You can redirect stdOut with SdFat::setStdOut(Print* stream) and
get the current stdOut stream with SdFat::stdOut().
If USE_SERIAL_FOR_STD_OUT in SdFatConfig.h is nonzero, the Arduino Serial
object will be used as the default for stdOut.
This version is SdFatBeta20120327.zip at http://code.google.com/p/beta-lib/downloads/list