Added example code for doing DMA transfers with isochronous IN/OUT endpoints, testable with sample linux code used in the non-dma sample.
During previous testing we were able to achieve full theoretical speed of 1023000 bytes/sec for a single ISOC IN endpoint (when setting max data size to 1023 and doing transfers every frame, the sample isn't configured to run that fast but a tweak to the configuration descriptor will do the trick)
Sample device code and linux host side devfs-based code has been added to demonstrate communications in isochronous mode.
I plan to completely get rid of usage of the interrupt-on-NAK feature. It causes a very high interrupt rate which results in a lot of questions by people using the stack.
The virtual COM port example is already converted (now uses the frame interrupt to trigger the first packet of a sequence of bytes going from device to host). Next target is the mass storage example.
I'm considering to move the sources over from CVS to SVN sometime in the coming days.
I've decided to change the license from LGPL to BSD.
The BSD license will be applied soon to the core of the lpcusb code. Some of the application examples still use LGPL code, so those parts will take some time for the license to be changed.
I've just created release v20060903, consisting of a couple of bug fixes and simplification of the API. Also the source code is now updated to be used with doxygen to create 'automatic' source code documentation. Sorry, no interrupt support yet in this release.
Some stuff I'm thinking about to improve lpcusb:
* Finally add the interrupt support
* Add DMA support. I initially skipped this because I thought it would be complicated. It now seems a lot easier than I initially thought.
* Figure out the exact requirements for USB mass storage and implement them.
A serious bug was discovered in the sources, possibly causing random memory overwrites.
This bug has been fixed in version v20060729.
Planned for the next version:
* interrupt support for USB virtual COM port
* better documentation of source code with doxygen
Current CVS now contains an initial version of a USB mass storage application example. It already passes the MSC compliance tests, but there are still minor issues making it work in Windows (reading / writing data / quick format succeeds, full format still fails).
It will be part of the next release.
As you may have noticed already, anonymous CVS has not been updated for some time now (several weeks). Normally, the anonymous CVS repository is kept in sync with developers' CVS (with just a few hours delay), but it appears there are some sitewide problems with it, see the sourceforge status page:
Development is still going on. An implementation of USB mass-storage on an SD-card is almost ready and planned for the next release (currently passes most tests of the USB compliance verifier and appears as a removeable disk with read/write access under both Windows XP and Linux 2.6)
The current CVS version now has an example showing how to implement a virtual COM port. This means that (under Windows) plugging in the LPC214x results in an additional COMx port that you can use to talk to your device (e.g. through hyperterminal).
On Linux, the serial port can be accessed with the cdc_acm driver through a /dev/ttyACM0 device file.
To try it out, check out the code from anonymous CVS, or wait until the next release (which is planned as soon as current CVS problems are resolved).
The latest version of the LPC214x USB stack now passes the chapter 9 USB compliance tests from the USBCV test suite, thanks to fixes made by Martin Mueller. The updated code can be checked out through CVS and will be incorporated in the next release.
See the Files section.
Welcome to the LPC214x USB stack project.
Check out the CVS archive for initial sources. The sources include a simple example implementing a dummy device that demonstrates how to use the stack for USB enumeration and configuration.
An actual release is planned for the end of february.