I was having a problem with my usb drive in that there were lots of directories with no name. I tracked it down to the fat_getDirentry function in fat_driver.c. It was regarding the line which determines the last entry:
//detect last entry - all zeros
if (dsfn->name[0] == 0 && dsfn->name[1] == 0) {
return 0;
}
The comment suggest that the name should have all zeros, the code only checks the first two. On my my usb drive the first entry was zero but the second entry was FF. Is it the file system on my drive that is corrupt? Or is this assumption in usb_mass incorrect?
...could you try usb_mass from SMS project? There's a modified binary (in SMS_Data.c), so you can try 'SifExecModuleBuffer' on it to see if you'll get any further (or just launch SMS to check if it will hang with your USB device).
Best regards
Eugene