Adding the DDEKIT USB related documentation.

This commit is contained in:
Kees Jongenburger
2012-06-11 13:47:06 +02:00
parent ce96e64fe7
commit 7504ba99fe
2 changed files with 111 additions and 0 deletions

View File

@@ -0,0 +1,104 @@
Information about MINIX 3 USB support
======================================
We are using the driver portability layer called
link:http://os.inf.tu-dresden.de/ddekit/[Device Driver Environment kit] to
provide support for USB host on the MINIX 3 operating system. The Device Driver
Environment was developed for reuse of legacy device drivers. It defines an
operating system agnostic kernel application programming interface (API) and
provides Linux 2.6.29 based legacy drivers for supporting USB-host among other
things. DDE with USB host support has been ported to MINIX 3 by Dirk Vogd.
Functional decomposition
------------------------
DdeKit
~~~~~~~
DDEKIT provides a BSD licensed abstraction layer for driver development. This
abstraction, defined in includes files, defines the following primitives: data
types, memory allocation, paging, threading, semaphores, timers, low level
hardware I/O, requesting interrupts and dma access. It is located inside the
MINIX3 source tree at /usr/src/minix/include/ddekit and implemented in
/usr/src/minix/lib/libddekit.
Dde-linux26
~~~~~~~~~~~~
The dde-linux26 is a GPLv2 package that uses ddekit host Linux device drivers.
Using ddekit it replaces key parts of the Linux device driver model to be able
to run drivers on a non Linux kernel. It contains large parts of the Linux
2.6.29 source code in the contrib directory and provide abstractions for a the
following type of drivers: common, block, common, net, partitions, scsi and usb.
This code only depends on ddekit and is not MINIX 3 specific.
Dde-linux26-usb-drivers
~~~~~~~~~~~~~~~~~~~~~~~~
The Dde-linux26-usb-drivers use dde-linux26 to implement an USB stack for MINIX.
USB host controller driver (USBD)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The USB host controller driver is a MINIX 3 service that talks to the USB host
controller hardware using established standards like EHCI and OHCI and mediates
access to USB devices by implementing a virtual host controller driver.
UsbStubDriver::
For new device notification
UsbHostControllerDriver::
MINIX bus driver implementation using usbcore
USBCORE::
Linux library to implement host controllers
EHCI::
Standard way of talking to the usb host controller
DDELinux::
the support library for things like platform_device creation
USB class driver (mass storage/hid)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The USB drivers in MINIX3 will communicates with USB devices host controller
over a virtual host controller interface provided by USBD. The class drivers
uses the DDE kit and Linux drivers like SCSI to implement Their service.
UsbClassStorage::
implements a minix interface like block device
DDE helpers::
helpers like the SCSI lib part in case of the USB mass storage class
VHCI::
Virtual host controller as also used to provide usb over ethernet. This
driver talks to USBD using grants and messages.
Device manager (DEVMAN)
~~~~~~~~~~~~~~~~~~~~~~~
Devman is a device manager who's main goal is to enable hot-plugging of
hardware. Based on events from USBD and a configuration file it will create
device nodes and start or stop USB class drivers
Features added to MINIX 3
--------------------------
The project adds new features to the MINIX operating system:
* A model to integrate Linux drivers.
* A system to handle hotplugging of hardware.
* An USB host implementation that can be used to access USB devices.
Runtime dependencies
~~~~~~~~~~~~~~~~~~~~
The first component to start is the device manager. The second component to
start is the USB daemo. It connects to the device manager to register changes
to the bus. Starting and stopping of driver happens by the device manager.

View File

@@ -0,0 +1,7 @@
SRC=DdeKitUsb.txt
DST=$(SRC:%.txt=%.html)
website:${DST}
%.html:%.txt Makefile
asciidoc $<