summaryrefslogtreecommitdiffstats
path: root/nuttx/ReleaseNotes
diff options
context:
space:
mode:
authorpatacongo <patacongo@7fd9a85b-ad96-42d3-883c-3090e2eb8679>2011-01-11 02:02:28 +0000
committerpatacongo <patacongo@7fd9a85b-ad96-42d3-883c-3090e2eb8679>2011-01-11 02:02:28 +0000
commita9b8f8a22c3514cdc62f69a11ee27a60dce23028 (patch)
tree24bf715572d0bc96dcfc11ea34ff1676e31960d9 /nuttx/ReleaseNotes
parent95a19a931260ba1115e8518859922470ad8e551a (diff)
Prep for 5.16 release
git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@3241 7fd9a85b-ad96-42d3-883c-3090e2eb8679
Diffstat (limited to 'nuttx/ReleaseNotes')
-rw-r--r--nuttx/ReleaseNotes82
1 files changed, 82 insertions, 0 deletions
diff --git a/nuttx/ReleaseNotes b/nuttx/ReleaseNotes
index 26185ac8f3..712617611a 100644
--- a/nuttx/ReleaseNotes
+++ b/nuttx/ReleaseNotes
@@ -1572,3 +1572,85 @@ And feature enhancements:
configuration for the Olimex LPC1766-STK have been added. However,
neither the LCD driver nor the NX configuration have been verified
as of the this release.
+
+nuttx-5.16
+^^^^^^^^^^
+
+The 63rd release of NuttX, Version 5.16, was made on January 10, 2010 and is
+available for download from the SourceForge website. This release includes
+initial support for USB host in NuttX. The USB host infrstruture is new to
+NuttX. This initial USB host release is probably only beta quality; it is
+expected the some bugs remain in the logic and that the functionality
+requires extension.
+
+Below is a summary of the NuttX USB host implementation as extracted from
+the NuttX Porting Guide:
+
+ 6.3.9 USB Host-Side Drivers
+ o include/nuttx/usb/usbhost.h. All structures and APIs needed to work
+ with USB host-side drivers are provided in this header file.
+ o struct usbhost_driver_s. Each USB host controller driver must
+ implement an instance of struct usbhost_driver_s. This structure is
+ defined in include/nuttx/usb/usbhost.h.
+ Examples: arch/arm/src/lpc17xx/lpc17_usbhost.c.
+ o struct usbhost_class_s. Each USB host class driver must implement
+ an instance of struct usbhost_class_s. This structure is also defined
+ in include/nuttx/usb/usbhost.h.
+ Examples: drivers/usbhost/usbhost_storage.c
+ o USB Host Class Driver Registry. The NuttX USB host infrastructure
+ includes a registry. During its initialization, each USB host class
+ driver must call the interface, usbhost_registerclass() in order add
+ its interface to the registery. Later, when a USB device is connected,
+ the USB host controller will look up the USB host class driver that
+ is needed to support the connected device in this registry.
+ Examples: drivers/usbhost/usbhost_registry.c,
+ drivers/usbhost/usbhost_registerclass.c, and
+ drivers/usbhost/usbhost_findclass.c,
+ o Detection and Enumeration of Connected Devices. Each USB host device
+ controller supports two methods that are used to detect and enumeration
+ newly connected devices (and also detect disconnected devices):
+ + int (*wait)(FAR struct usbhost_driver_s *drvr, bool connected);
+ Wait for a device to be connected or disconnected.
+ + int (*enumerate)(FAR struct usbhost_driver_s *drvr);
+ Enumerate the connected device. As part of this enumeration process,
+ the driver will (1) get the device's configuration descriptor, (2)
+ extract the class ID info from the configuration descriptor, (3)
+ call usbhost_findclass() to find the class that supports this device,
+ (4) call the create() method on the struct usbhost_registry_s
+ interface to get a class instance, and finally (5) call the connect()
+ method of the struct usbhost_class_s interface. After that, the class
+ is in charge of the sequence of operations.
+ o Binding USB Host-Side Drivers. USB host-side controller drivers are not
+ normally directly accessed by user code, but are usually bound to another,
+ higher level USB host class driver. The class driver exports the standard
+ NuttX device interface so that the connected USB device can be accessed
+ just as with other, similar, on-board devices. For example, the USB host
+ mass storage class driver (drivers/usbhost/usbhost_storage.c) will
+ register a standard, NuttX block driver interface (like /dev/sda) that
+ can be used to mount a file system just as with any other other block
+ driver instance. In general, the binding sequence is:
+
+ 1. Each USB host class driver includes an intialization entry point
+ that is called from the application at initialization time. This
+ driver calls usbhost_registerclass() during this initialization in
+ order to makes itself available in the event the the device that it
+ supports is connected.
+ Examples: The function usbhost_storageinit() in the file
+ drivers/usbhost/usbhost_storage.c
+ 2. Each application must include a waiter thread thread that (1) calls
+ the USB host controller driver's wait() to detect the connection of a
+ device, and then (2) call the USB host controller driver's enumerate
+ method to bind the registered USB host class driver to the USB host
+ controller driver.
+ Examples: The function nsh_waiter() in the file
+ configs/nucleus2g/src/up_nsh.c and the function nsh_waiter() in the
+ file configs/olimex-lpc1766stk/src/up_nsh.c.
+ 3. As part of its operation during the binding operation, the USB host
+ class driver will register an instances of a standard NuttX driver
+ under the /dev directory. To repeat the above example, the USB host
+ mass storage class driver (drivers/usbhost/usbhost_storage.c) will
+ register a standard, NuttX block driver interface (like /dev/sda)
+ that can be used to mount a file system just as with any other other
+ block driver instance.
+ Examples: See the call to register_blockdriver() in the function
+ usbhost_initvolume() in the file drivers/usbhost/usbhost_storage.c.