AT91SAM7S USB Mass Storage

Hi,

(There is quite a long background to my question, so I apologies in advance for a longish post.)

I'm building an Atmel AT91SAM7S128/256 based product that needs to support the USB Mass Storage Device class. My project is currently compiled under WinARM (but can be GNUARM), GCC 4.1.0.

I have taken the Atmel CDC example code, changed the descriptors and a few other minor things; pieced it together with the msc_bot and msc_scsi layers of the USBLPC (wiki.sikken.nl - this is for the LPC214x micros - thanks Bertrik for a very useful site!)library and got a few things to happen. Windows XP sees my device, enumerates it happily and even requests sector 0 from the media successfully. But then things don't go too well. Also, I've had no success with the USBIF mass storage compliance tool.

The short of it is that I'm not comfortable with my "solution" so far and don't really see that I'm going to become comfortable without spending a *lot* of time digging into the poorly documented UDP (The AT91SAM7's USB peripheral). I know that my port of the CDC example is not up to scratch but I'm not sure if I should persevere and sort it out or go a different route altogether.

Commercial USB device stacks all seem very expensive (>$3K). I could handle $1K maybe even $2K, but the budget is tight. Another option I have is to port the Atmel Mass Storage Demo code to GCC. I have the source code for V1.7 which I think will be fairly robust by now (I hope). The code itself looks awful but, in principal, I don't think it would be too difficult or risky to port it to GCC. (It is written for IAR.)

My question at last: can anyone comment on the wisdom of porting the Atmel demo? Or, can anyone suggest a better alternative (or an existing port)?

Any pointers would be greatly appreciated!

Regards, Dennis.

Reply to
Dennis Greenwood
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.