LOCAL BUS SYSTEMS
The EUROS USB stack implements all components that are required in order to use USB devices in EUROS embedded applications:
- USB Host Software
- USB Host-Controller
- USB Device/Class driver
The USB host software is a software layer between host controller drivers and class/device drivers. The host software’s responsibilities are to:
- set up memory areas to manage host controllers, device drivers and connected devices.
- provide a hardware-independent interface to class/device drivers to be able to communicate with connected devices.
- handle device connects/disconnects.
- search for suitable class/device driver for a connected device and its interfaces.
- associate a class/device driver with a connected device’s interface, if available.
USB host controller drivers abstract from the physical implementation of USB host controllers and provide a uniform software interface to the host software. The host controller driver’s responsibilities are to:
- enable the USB host software and USB class/device drivers to install and remove communication channels to endpoints in a connected device. These so-called "pipes" are used by the host software and by class/device drivers to perform USB communication like device enumeration.
- provide an interface to manipulate the root hub, e.g. to reset or disable a port.
- notify the host software when devices are connected or disconnected.
USB host controller drivers are typically implemented as Port Drivers under EUROS. Specific host controller drivers are described in the documentation of the specific driver.
USB class/device drivers implement everything that is necessary to support a specific device or device class. They typically also provide an application interface so that the application is enabled to use a connected device of that class. The class/device driver’s responsibilities are to:
- indicate to the host software which devices or classes it is able to support.
- set up all pipes that are required to implement the device class.
- communicate with the device through the host software and host controller driver.
- possibly provide a suitable user interface for applications.
USB class drivers are typically implemented as Resource Managers under EUROS, i.e. they can be used by applications by means of system calls of the I/O system. USB class drivers may also have other user interfaces, or even none at all (like the hub class driver).
USB class/device drivers can be implemented to support a specific device from a specific vendor, possibly by using a vendor-specific protocol, or they can support an entire class of devices, using a standardized protocol.