Hello fat16lib.
My current project calls for USB Mass Storage along with a custom-made daughter board and so I am not going the Ethernet-shield route. I don't need the RJ-45 Ethernet -- I need 802.11g/n WiFi! That left me with the only option of driving the Native USB port with a card-reader/USB-thumb-drive attached to it.
For about last 3 months I have been ramping up my knowledge on the OTG port hardware of SAM3X/A and have been able to come up with a rudimentary read/write mechanism (no performance, no DMA) on it.
So, I have taken up your code base sdfatlib20130629 and have made changes in the Sd2Card.cpp/h to interface with the front-end of my MINMSC (minimal Mass Storage Class) driver. I have tried to make the MINMSC plug-n-play and it should drive most card readers that are out there. Real spinning hard disks are a different story. My 320GB WD Passport is recognized but MINMSC cannot drive it because it doesn't report a SCSI Transparent Cmd Set.
Right now I am in the process of linking 4 things (USBHost lib, sdfat lib, MINMSC lib, libsam) together to make a build that works and then I can go back to MINMSC to clean it up and add AHB-speed DMA to it. At least two months of work is needed to complete it. And I have no intention of keeping it private ... it will have the same GNU FSF license as yours.
So, if you are interested, maybe we can share the code among ourselves first and find out the best way to interface, etc.
You wont believe how many hardware related gotchas are in there on the OTG port of DUE that would discourage most people but having spent most of my life in that hardware/software boundary and RTOS, I have been able to make some slow progress.
My congrats and gratitude to you for providing such a useful library for open software community.
Regards.