Thesycon’s USB device software stack implements the core functionality of a USB device and optionally provides device class specific protocols. It enables developers to easily add USB device functionality to embedded systems.
The software stack complies with the USB v1.1 and USB v2.0 specifications. It supports all transfer modes (control, bulk, interrupt, isochronous) at low, full and high speed. Complete USB request processing and extended error recovery mechanisms that are required for reliable operation are implemented internally.
The modular design allows to implement proprietary USB interfaces and standard device classes. The creation of composite devices which implement multiple logical functions on one physical controller as well as multi-configuration devices are fully supported.
To use the USB Function API directly without a device class, basic USB knowledge is required. The device class specific APIs provide a high abstraction level and are easy to use. No USB know-how is required.
Thesycon also offers the appropriate device drivers for PC and so is able to provide complete software solutions.
The CDC/ACM protocol module implements a standard-compliant serial link (RS-232) emulation on top of USB. This provides an easy migration path for existing applications. Thesycon also offers an appropriate CDC/ACM class driver for Windows operating systems. The combination of the CDC/ACM device class and the CDC/ACM class driver for Windows allows to re-use existing Windows applications unmodified.
The RNDIS module implements an Ethernet emulation on top of USB. This approach is especially useful if an embedded system contains an Ethernet interface and a TCP/IP protocol implementation. A suitable RNDIS device driver is included in Windows and some other operating systems.
The Mass Storage protocol module emulates a disc drive with FAT or CD-ROM file system. It can be used to create a CD-less PC software installation, or to exchange static data files between the device and the PC. The required PC drivers are part of Windows, MacOS, and Linux. Under Windows the CD-ROM emulation supports the auto-run feature.
The THID module implements a generic HID device (Human Interface Device). The device does not require a device driver installation under Windows. It uses the in-box HID class driver. Applications can communicate with the THID device by means of Windows HID API functions. Thesycon provides sample application source code.
The USB stack firmware is written in ANSI-C and can be ported to any hardware platform. For easy integration the software is designed as a library and provided as source code. The library does not depend on any specific operating system support. It can be integrated into any embedded OS, or can be used in stand-alone applications. Hardware access is encapsulated by a Hardware Abstraction Layer (HAL) which needs to be implemented in a platform-specific way. The stack supports 32-bit and 16-bit CPUs and works in either endian mode.
The demo package includes:
Note: The source code and the appropriate project files contained in the demo package are for documentation only. It is not possible to recompile the applications. For this purpose there is an Evaluation Version available.
The Bulk Loop Demo application is implemented on top of the USB FunctionLibrary. It represents a plain sample for the usage of the USB Function Library without a device class.
Thesycon’s USBIO device driver for Windows can be used with the BULK Loop Demo and therefore is included in the demo package. Additionally, there are two sample applications for the PC enclosed which can be used to communicate with the device.
The CDC/ACM Loop Demo application is implemented on top of the CDC/ACM device class. It represents a plain sample for the usage of the CDC/ACM device class.
Thesycon’s CDC/ACM class driver for Windows can be used with the CDC/ACM Loop Demo and therefore is included in the demo package. The driver creates a virtual COM port. So standard terminal programs, such as HyperTerminal can be used to communicate with the embedded device.
The CDC/ACM Multi Instance Loop Demo application is implemented on top of the CDC/ACM device class. It represents a plain sample for the usage of the CDC/ACM device class with multiple instances (so called composite device).
A customized version of Thesycon’s CDC/ACM class driver for Windows which supports multiple instances can be used with the CDC/ACM Multi Instance Loop Demo and therefore is included in the demo package. The driver creates two virtual COM ports for the two CDC/ACM device class instances. So standard terminal programs, such as HyperTerminal can be used to communicate with the embedded device. The data received on one instance will be looped in the embedded device and sent back to the other instance (COM port).
The RNDIS Simple IP Demo application is implemented on top of the RNDIS device class. The application provides very basic IP protocol functionality to support ARP, ICMP and DHCP. So it is possible to attach the device to a PC and to test the USB connection by means of ping.
For more information about a specific demo application refer to the section "Demo Applications" in the appropriate manual.
The Mass storage Demo application is implemented on top of the mass storage device class (MSD). It works as a block device driver for the memory. This sample implements the USB mass storage device that can expose multiple logical units (LUN). It supports the SCSI transparent command set and the emulation of CD-ROM and disk drives. The CD-ROM can be used to automatically start an application on Windows. A special compression algorithm can be used for ISO images. (At this time, only integrated in the NXP LPC1768 demo.)
Embedded USB Device Stack Product Sheet 
Embedded USB Device Stack Manual 
The code size and the memory requirements mainly depend on the processor architecture, the bit alignment as well as the used compiler and its optimization settings.
The following values are achieved on an ARM7 CPU in the release build without debug information. The ARM RealView compiler was used with default optimization (-O2). Data buffers as well as USB descriptors are not considered because they belong to the application layer. They have to be allocated in the application outside the Embedded USB Device Stack. Depending on the number of endpoints and the configuration of the device USB descriptors usually consume between 150 and 400 bytes of constant data.
When designing a USB device you need an official USB vendor ID (VID) which is unique world-wide. Vendor ID's will be assigned by the USB Implementers Forum (www.usb.org). There is a fee of $1500 US.
Thesycon owns a USB vendor ID and provides a subset of product ID's (PID) to customers who licensed our USB software.
If you would like to be kept informed of product updates, please subscribe to the Thesycon newsletter.
© 2010 THESYCON


