USB Development


ASG has developed a number of USB solutions for several clients. USB drivers are typically developed and configured to run in either device (“gadget”) or host mode. ASG has developed drivers for both modes of USB.

Customers’ Challenges

The typical client technology hurdle was to develop a custom driver to support a specific USB chip or processor with integrated USB interface in an embedded computer system. Development of a USB driver is dependent on a number of factors, and less-common embedded platforms do not necessarily provide ideal USB solutions. Often, only templates and examples can be provided, and the developer must then modify whatever is available in order for the interface to operate correctly and efficiently on the specific platform. Additionally, many clients do not have internal software development resources experienced in USB driver development.

Of great importance during the initial design phase is the selection of components that have been commonly used together. Ideally reference designs can be utilized, and device driver example code will be available. The ubiquity of USB has made debugging and testing the interface less demanding than many other technologies. ASG’s experience, however, is that some unique combinations of hardware can lead to compatibility issues, race conditions and hardware interface problems that exacerbate what should be a simple integration problem.

Our Solutions

ASG has developed significant internal expertise in USB driver development and implementation. Several open source drivers have been adapted and implemented in Linux based platforms including ARM, embedded x86 and Freescale Coldfire processors. In embedded microcontroller applications, Interrupt Service Routine software and Interface routines have been developed to support an Atmel 8051 variant (c8051f32) with an integrated USB interface as a USB Device. Other applications have included Windows CE, Windows and Linux operating systems, in which both USB Gadget and Host drivers have been successfully implemented.

Key Technologies

  • USB driver development
  • USB Host and USB Gadget mode
  • Linux, Windows CE, Windows operating systems.
  • Standalone Embedded Microcontroller Applications