CodeConcept UK

Custom USB Host driver

Universal Serial Bus (USB) is a fast and flexible interface that allows different peripherals to be connected to a host computer via single, standardized socket. It offers plug and play capabilities including hot swap functionality and was designed to be used with wide range of devices starting from standard peripherals like keyboards, mice and printers, ending with specialized devices. Mentioned flexibility and functionality (causing huge popularity among consumers and wide range of hardware manufacturers) led our customer to order dedicated USB Host driver for his custom platform.

Features:

USB Host driver for dedicated ASIC controller capable to manage and communicate with custom devices of CDC class (custom protocol over CDC).

  • ASIC controller by Atmel based on ARM9 architecture
  • USB Host controller compliant with Open HCI specification 1.0a
  • Stack of USB drivers correctly handling attaching of any USB device
  • Testing environment including custom USB Device driver of CDC class
  • Suite of documents including marketing and technical specifications

Example screens:

  

Application layer


  • Test applications – separate applications (one on USB Host side and second on USB Device side) that provide testing environment of USB Host drivers stack

Drivers layer


  • Interface Driver – driver tailoring interface of USB Host Driver to the requirements of application layer
  • USB Host Driver – driver responsible for performing enumeration and high-level communication with attached device
  • USB Host Controller Driver – driver for USB Host Controller hardware offering devices attachment / removal detection, status management and low-level communication
  • CDC Custom Device, USB Device Driver, USB Device Controller Driver – stack of USB Device drivers that handle enumeration process and low- and high-level communication. Those drivers were provided by the customer, but were adapted to comply with testing environment.

Hardware layer


  • USB Host Controller – part of ASIC microcontroller offering USB Host connectivity in compliance with Open HCI specification
  • USB Device Controller – part of evaluation board microcontroller offering USB Device connectivity

Project


  • Development environment: Green Hills Software MULTI
  • Programming language: C
  • Size: 3 man-months.