From a9b8f8a22c3514cdc62f69a11ee27a60dce23028 Mon Sep 17 00:00:00 2001 From: patacongo Date: Tue, 11 Jan 2011 02:02:28 +0000 Subject: Prep for 5.16 release git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@3241 7fd9a85b-ad96-42d3-883c-3090e2eb8679 --- nuttx/ReleaseNotes | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) (limited to 'nuttx/ReleaseNotes') 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. -- cgit v1.2.3