Simtec's USB stack Introduction
Software Description
The Simtec USB stack is available as a complete turnkey licenseable product for ABLE and RISC OS. Device drivers for differing OHCI host controllers for these OS can be written either by Simtec or by a third party as required (full documentation is available).
The Simtec USB stack can be supplied in source form to enable customer porting to other OS as required. This porting work can also be performed by Simtec.
The components of the stack are arranged in a layered manner.

The core stack is made up of three main areas
- The Core
- An API for USB device drivers such as mice and keyboards
- An API for OHCI USB host controllers such as the Philips ISP1161
- Tracking of all connected devices to each host controller
- Creating, mapping and tracking all logical pipes to physical devices
- Transaction processing and queueing
- USB bandwidth management
- Memory and buffer management facilities
- Hardware drivers
- ISP1161 driver which provides:
- OHCI implementation for the Philips ISP1161 chip
- Root hub
- ISP1161 driver which provides:
- Device Drivers
- The Hub module
- Generic hub driver.
- Manages events from hub and translates them into system events
- Controls registered devices
- Provides database of unclaimed devices/interfaces
- Configures device resources on insertion
- The Hub module
In addition to these core parts Simtec also have resources for
- Full parsing HID class driver
- Mouse and keyboard direct support
- Support for "sub drivers" which gives access to parsed HID data and reports allowing development of both generic and device specific drivers. Joystick drivers are supplied as an example.
- Printer class driver.
- Mass storage driver for transparent SCSI command set.
- Atmel WIfi based devices.
- Driver Firmware Upload (DFU) for "soft" devices.
Code layout and output size
The Simtec USB stack is a complete implementation of the USB 1.1 specification. This implementation is in portable ANSI C code and is split into OS independent and OS dependent parts simplifying porting to new environments.
The build environment can be any ANSI C compiler, development has primarily been with GNU GCC and ARM Norcroft compilers. Make files for both GNU Make and AMU are available however other make systems may be used.
The environment independent sections of the code comes to around 45,000 lines. This includes (but is not limited to) code for the core module, the hub driver, OHCI driver for the ISP1161, several class drivers (HID,Printer,Mass storage(SCSI)).
Some specific values (for guidance only) for one very well supported OS (which includes three language APIs and numerous drivers) totals less than 15,000 lines. The compiled output for core components (core, ISP1161 driver and hub module) on this particular OS is around 64KB.
Other pages
- Availability - Price and availability.
- Resources - Documentation and software resources for the Simtec's USB stack.