Embedded USB Device Stack

Device Classesspace Supported Controllersspace Demosspace Documentationspace Prices

Embedded USB Device StackThesycon’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.

Device Classes

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.

 

In the future, Thesycon will provide further device classes such as Mass Storage device class.

Platform Integration

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.

 

Supported Controllers Status
Atmel
AT91SAM available
AT91RM9200, AT91SAM7X128, AT91SAM7X256, AT91SAM7X512
AT91SAM available
AT91SAM7A3, AT91SAM7S128, AT91SAM7S256, AT91SAM7S321, AT91SAM7S512, AT91SAM7S64, AT91SAM7SE32, AT91SAM7SE256, AT91SAM7SE512, AT91SAM7XC128, AT91SAM7XC256, AT91SAM7XC512, AT91SAM9260, AT91SAM9261, AT91SAM9261S, AT91SAM9263, AT91SAM9R64, AT91SAM9RL64, AT91SAM9XE128, AT91SAM9XE256, AT91SAM7XE512, AT91SAM9G20
AVR32-32bit available
AT32AP7000, AT32AP7001, AT32AP7002, AT32UC3A0128, AT32UC3A0256, AT32UC3A0512, AT32UC3A1128, AT32UC3A1256, AT32UC3A1512, AT32UC3B0128, AT32UC3B0256, AT32UC3B064, AT32UC3B1128, AT32UC3B1256, AT32UC3B164
NXP
LPC214x family available
LPC2141, LPC2142, LPC2144, LPC2146, LPC2148, LPC2158
LPC23xx family available
LPC2364, LPC2366, LPC2368, LPC2378, LPC2387, LPC2388
LPC24xx family available
LPC2458, LPC2460, LPC2468, LPC2470, LPC2478
LPC288x family under development
LPC2880, LPC2888
LPC31xx family available
LPC3180
LPC32xx family under development
ISP1362 on request
ISP1362
ISP158x family available
ISP1582, ISP1583
Renesas
H8SX/1653 Group available
H8SX/1653F, H8SX/1654F
H8SX/1663 Group available
H8SX/1663F, H8SX/1664F
H8SX/1668R Group available
H8SX/1663RF, H8SX/1664RF, H8SX/1668RF
H8S/2472 Group available
H8S/2462, H8S/2472
H8S/2215 Group available
H8S/2215C, H8S/2215B, H8S/2215, H8S/2215T, H8S/2215R
M16C/6C Group available
M16C/6C
STMicroelectronics
STR9 family available
STR911FAM42, STR911FAW42, STR911FAM44, STR911FAW44, STR912FAW32, STR912FAW42, STR912FAZ42, STR912FAW44, STR912FAZ44
STM32 family under development
STM32F103C6, STM32F103C8, STM32F103CB, STM32F103R6, STM32F103R8, STM32F103RB, STM32F103RC, STM32F103RD, STM32F103T6, STM32F103T8, STM32F103V8, STM32F103VB, STM32F103VC, STM32F103VD, STM32F103VE, STM32F103ZC, STM32F103ZD, STM32F103ZE
Fujitsu
F2MC-16LX MB90335 series available
MB90F337
F2MC-16FX MB96330 series available
MB96F338

 

Other device controller drivers can be created on request. Please contact for more information.

Free Demo Download

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 a free Evaluation Version of the package available.

 

The demo package contains all demo applications described below and is available for the following evaluation boards:

 

Evaluation Board Device Controllers Version Free Download
NXP ISP1582 PCI
Eval

NXP ISP158x family
ISP1582, ISP1583
1.03.0 usbf_isp1582pci_demo.exe
EBV ChameleonARM


NXP LPC23xx family
LPC2364, LPC2366, LPC2368, LPC2378, LPC2387, LPC2388
1.03.0 usbf_chameleon_demo.exe
Keil MCB2300
Keil MCB2360
Keil MCB2370
Keil MCB2387
Keil MCB2388

NXP LPC23xx family
LPC2364, LPC2366, LPC2368, LPC2378, LPC2387, LPC2388
1.03.0 Download MCB2300 Demos
Keil MCB2400*


NXP LPC24xx family
LPC2458, LPC2460, LPC2468, LPC2470, LPC2478
1.03.0 usbf_ea-lpc2468_demo.exe
Keil MCBSTR9





ST Microelectronics STR91x
STR911FAM42, STR911FAW42, STR911FAM44, STR911FAW44, STR912FAW32, STR912FAW42, STR912FAZ42, STR912FAW44, STR912FAZ44
1.03.0 usbf_mcbstr9_demo.exe
Embedded Artists*
LPC2468 OEM Board


NXP LPC24xx family
LPC2458, LPC2460, LPC2468, LPC2470, LPC2478
1.03.0 usbf_ea-lpc2468_demo.exe
Renesas MCUs
Download Renesas Demos
Atmel
AT91RM9200-EK


AT91SAM
AT91RM9200
1.03.0 usbf_at91rm9200-ek_demo.exe
Atmel
AT91SAM7X-EK


AT91SAM
AT91SAM7X128, AT91SAM7X256, AT91SAM7X512
1.03.0 usbf_at91sam7x-ek_demo.exe
Atmel
ATEVK1100



AVR32
AT32UC3A0128, AT32UC3A0256, AT32UC3A0512, AT32UC3A1128, AT32UC3A1256, AT32UC3A1512
1.03.0 usbf_atevk1100_demo.exe


Fujitsu USB Firmware API
MB90F337, MB96F338

Download

 

* The Embedded Artists LPC2468 OEM Board is also shipped as MCB2400 evaluation board by Keil. Therefore the same demo package is used for both boards.

Demo Applications

USBF Bulk Loop Demo

The Bulk Loop Demo application is implemented on top of the USB Function Library. 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.

CDC/ACM Loop Demo

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.

CDC/ACM Multi Instance Loop Demo

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).

RNDIS Simple IP Demo

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.

Free Evaluation Version

On request Thesycon provides a free evaluation package which contains the Embedded USB Device Stack as linkable object code (link library). With the evaluation package it is possible to modify the demo application source code and to recompile the application. It is also possible to integrate the device stack link library into the target application to evaluate its functionality before a license is purchased.

To receive a free evaluation package, an evaluation agreement needs to be signed and returned. Please contact for more information.

Documentation

Memory Footprints

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.

 

Modul
USB Function
CDC/ACM
RNDIS Code + const data (FLASH)
~ 10 KB
~ 1.7 KB
~ 3.5 KB
Data (RAM)
~ 0.5 KB
~ 0.2 KB
~ 1.8 KB
Description
native USBF with 2 endpoints
single CDC/ACM instance with 3 endpoints
single RNDIS instance with 3 endpoints

Licensing conditions & Prices

Single product and product family licenses are available. A device stack license includes the full source code and allows royalty-free distribution of binaries compiled from the sources. Distribution of source code is not permitted. For complete license conditions and prices please contact

USB Vendor and Product ID

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. This service is free of charge. You will receive a set of product ID's that is, if used in combination with Thesycon's vendor ID, unambiguous world-wide. You can use these ID's for your products.

 

If you are interested, please contact us at e-mail:

Keep up to Date

If you would like to be kept informed of product updates, please subscribe to the Thesycon newsletter.

 

 

© 2008 THESYCON

Device Driver - Software Development - Consulting home to the german version
-
-Home
-
-USB
-USB Device Drivers
-USB Device Stack
-USB Host Stack
-USB Firmware
-Price Overview
-
-IEEE1394
-IEEE1394 Device Driver
-IEEE1394 Bus Driver
-Price Overview
-
-Installation
-Device Installation
-
-Services
-Software Development
-Consulting
-References
-
-Free Utilities
-Free Downloads
-
-Information
-Newsletter
-Partners