Advantages over other Firmware-Only Implementations
A similar driver for the AVR series
of microcontrollers is available from Igor Češko
. Our USB driver has the following advantages over Igor's driver:
* All customizable code written in ANSI-C and thus easier to maintain.
* Modular concept: easier to integrate into existing designs.
* Slightly smaller code size in spite of high level language modules.
* Faster: All encoding/decoding (USB requires NRZI coding and bit stuffing) is done in real-time, not in the main loop after storing away the raw data stream.
* More endpoints, USB descriptors can be better customized.
* AVR-USB comes with a free shared Vendor- / Product-ID pair.
* The level of standards conformance is documented (description of limitations and potential problems).
* Licensed under the terms of the GNU General Public License or alternatively under a commercial license.
Dick Streefland has stripped down an older version of AVR-USB to the basics. His code
is easier to read and understand, but lacks some of the features found in AVR-USB:
* AVR-USB supports up to 4 endpoints. This allows implementing devices conforming to the HID or CDC device class.
* AVR-USB passes the tests in usb.org's test utility.
* AVR-USB supports 12 MHz and 16 MHz crystal clocks as well as 16.5 MHz internal RC oscillator clock.