Chapter 1. Overview

The Simtec Electronics USB Stack is a multi platform Universal Serial Bus (USB) stack. It comprises of a central core, host controller drivers, hub driver and USB device drivers.

The central core provides common services for the rest of the USB system. These components are:

Each physical host controller requires a driver to take transactions from the core and present them to the hardware in the correct way. For example, Simtec Electronics have produced a reference driver for their Phillips 1161 based cards. Other such drivers might be for OHCI or UHCI type controllers.

Hubs are considered a special USB device and hence have a driver differing from USB devices proper. Without the hub driver a USB system cannot operate, as even the sockets on any controller are considered a "root" hub. The hub driver is responsible for reacting to events such as, insertion or removal of a physical device and changes in device power requirements. The hub driver under RISC OS provides for starting drivers either as modules or applications.

It is expected there will be numerous 3rd party drivers is in USB device drivers. These drivers interface USB devices such as mice keyboards etc. to either, an application directly or the operating system on which the driver runs. A simple input only Human Interface Device (HID) driver for keyboards and mice is provided by Simtec Electronics as an example. The source for this driver is available for developing other drivers and is intended not only as an example but possibly as the base for more HID drivers.

This document is mainly concerned with enabling programmers to write USB device drivers. Some consideration will be given to host controllers but it is envisaged that such customers will contact Simtec Electronics directly for assistance.

To use this document most effectively it is recommended that the programmer obtain a copy of the USB specification 1.1 and familiarise themselves with general USB concepts. The user guide and the "howto" chapter also attempt to provide a general grounding. This document may make some assumptions about the readers prior USB knowledge. If the reader finds they cannot find a piece of assumed knowledge please contact Simtec Electronics and we will endeavour to assist.

It is Simtec Electronics intention to enable as many 3rd parties to write drivers as possible. We are continually striving to improve this product and as such there may be some errors and omissions in this document. If you have any technical queries regarding the USB stack or its documentation, please do not hesitate to contact Simtec Electronics.