I’ve traced the problem reported in the previous post. As I suspected, it is related to the type of file system on the microSD card. There appears to be an issue with the library routine that DSmaps invokes to create its working folder in the root of the microSD card. Using a little test program, I can consistently cause corruption when using FAT32 but never when using FAT16.
N.B. Most microSD cards come pre-formatted with the FAT16 file system, so unless you have re-formatted your card to FAT32, you will not be affected by this problem. That said, the standard caveats when using any pre-release software still apply.
To determine if you are affected, pop your microSD card into a PC and run the chkdsk command on the command line (if your card appears as the E: drive, the command syntax would be “chkdsk E:” – be careful to use the correct drive letter!). The first line of output from chkdsk will tell you the file system type, where “FAT” means that you’re using FAT16 and “FAT32″ means you’re using FAT32. If file system corruption is reported, re-run the command in fix mode (following the previous example, the command syntax would be “chkdsk E: /F”).
I’ve contacted the original creator of the library I’m using, in an effort to get some help. With a bit of luck there will be a simple coding work-around, in which case I’ll issue a patched revision asap. In the meantime, if you are using FAT32 and want to try out DSmaps without re-formatting your card, simply create the DSMAPS working folder on your card before you start DSmaps for the first time – if the folder is already present I don’t need to create it so the problem doesn’t arise.
Tuesday, 19th February, 2008 at 9:04 pm |
DLDI? Why would you use any other library?
Tuesday, 19th February, 2008 at 9:21 pm |
@Ryan – DLDI is just part of libfat. It’s an abstraction of a low level storage facility that libfat invokes to interact with the storage hardware. Each implementation of the DLDI interface (a ‘patch’ to use libfat-speak) supports a specific type of homebrew device.