diff --git a/projects/documentation/root/DdeKitUsb.txt b/projects/documentation/root/DdeKitUsb.txt new file mode 100644 index 0000000..2e42458 --- /dev/null +++ b/projects/documentation/root/DdeKitUsb.txt @@ -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. + + diff --git a/projects/documentation/root/Makefile b/projects/documentation/root/Makefile new file mode 100644 index 0000000..ace63b5 --- /dev/null +++ b/projects/documentation/root/Makefile @@ -0,0 +1,7 @@ +SRC=DdeKitUsb.txt +DST=$(SRC:%.txt=%.html) + +website:${DST} + +%.html:%.txt Makefile + asciidoc $<