diff options
author | patacongo <patacongo@7fd9a85b-ad96-42d3-883c-3090e2eb8679> | 2011-01-11 02:02:28 +0000 |
---|---|---|
committer | patacongo <patacongo@7fd9a85b-ad96-42d3-883c-3090e2eb8679> | 2011-01-11 02:02:28 +0000 |
commit | a9b8f8a22c3514cdc62f69a11ee27a60dce23028 (patch) | |
tree | 24bf715572d0bc96dcfc11ea34ff1676e31960d9 | |
parent | 95a19a931260ba1115e8518859922470ad8e551a (diff) |
Prep for 5.16 release
git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@3241 7fd9a85b-ad96-42d3-883c-3090e2eb8679
-rw-r--r-- | nuttx/Documentation/NuttX.html | 161 | ||||
-rw-r--r-- | nuttx/ReleaseNotes | 82 |
2 files changed, 207 insertions, 36 deletions
diff --git a/nuttx/Documentation/NuttX.html b/nuttx/Documentation/NuttX.html index 011f69b638..d8e5fbab59 100644 --- a/nuttx/Documentation/NuttX.html +++ b/nuttx/Documentation/NuttX.html @@ -800,64 +800,153 @@ </tr> </table> -<p><b>nuttx-5.15 Release Notes</b>: +<p><b>nuttx-5.16 Release Notes</b>: <p> - This 62<sup>nd</sup> release of NuttX, Version 5.15, was made on December12, 2010 and is available for download from the + The 63<sup>rd</sup> release of NuttX, Version 5.16, was made on January 10, 2010 and is available for download from the <a href="http://sourceforge.net/project/showfiles.php?group_id=189573">SourceForge</a> website. The change log associated with the release is available <a href="#currentrelease">here</a>. Unreleased changes after this release are available in CVS. These unreleased changes are listed <a href="#pendingchanges">here</a>. </p> <p> - This release includes several bugfixes as well as feature enhancements, primarily for the Olimex LPC1766-STK board. - Important bugfxes included: - <ul> - <li> - Additional fixes needed with the TCP sequence number problem "fixed" in nuttx-5.14. - </li> - <li> - In the <code>send()</code> logic, now checks if the destination IP address is in the ARP table before sending the packet; - an ARP request will go out instead of the TCP packet. - This improves behavior, for example, on the first on the first GET request from a browser - </li> - <li> - All USB class drivers need to call DEV_CONNECT() when they are ready to be enumerated. - That is, (1) initially when bound to the USB driver, and (2) after a USB reset. - </li> - <li> - The SPI_SETBITS macro was calling the SPI setmode method. - </li> - <li> - And several other bug fixes of lower criticality (see the ChangeLog for details). - </li> - </ul> + 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. </p> <p> - And feature enhancements: + Below is a summary of the NuttX USB host implementation as extracted from the + <a href="NuttxPortingGuide.html">NuttX Porting Guide</a>: +</p> +<ul> + <h3>6.3.9 USB Host-Side Drivers</h3> + <ul> <li> - The LPC176x Ethernet driver was using all of AHB SRAM Bank0 for Ethernet packet buffers (16Kb). - An option was added to limit the amount of SRAM used for packet buffering and to re-use any extra Bank0 memory for heap. + <p> + <b><code>include/nuttx/usb/usbhost.h</code></b>. + All structures and APIs needed to work with USB host-side drivers are provided in this header file. + </p> </li> <li> - Enabled networking and SD/MMC card support in the Olimex LPC1766-STK NuttShell (NSH) configuration. + <p> + <b><code>struct usbhost_driver_s</code></b>. + Each USB host controller driver must implement an instance of <code>struct usbhost_driver_s</code>. + This structure is defined in <code>include/nuttx/usb/usbhost.h</code>. + </p> + <p> + <b>Examples</b>: + <code>arch/arm/src/lpc17xx/lpc17_usbhost.c</code>. + </p> </li> <li> - The LPC176x USB driver is now fully fully functional. + <p> + <b><code>struct usbhost_class_s</code></b>. + Each USB host class driver must implement an instance of <code>struct usbhost_class_s</code>. + This structure is also defined in <code>include/nuttx/usb/usbhost.h</code>. + </p> + <p> + <b>Examples</b>: + <code>drivers/usbhost/usbhost_storage.c</code> + </p> + </li> + <li> + <p> + <b>USB Host Class Driver Registry</b>. + The NuttX USB host infrastructure includes a <i>registry</i>. + During its initialization, each USB host class driver must call the interface, <code>usbhost_registerclass()</code> + 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. + </p> + <p> + <b>Examples</b>: + <code>drivers/usbhost/usbhost_registry.c</code>, <code>drivers/usbhost/usbhost_registerclass.c</code>, and <code>drivers/usbhost/usbhost_findclass.c</code>, + </p> </li> <li> - Added an optional <code>cmddata()</code> method to the SPI interface. - Some devices require an additional out-of-band bit to specify if the next word sent to the device is a command or data. - The <code>cmddata()</code> method provides selection of command or data. + <p> + <b>Detection and Enumeration of Connected Devices</b>. + Each USB host device controller supports two methods that are used to detect and enumeration newly connected devices + (and also detect disconnected devices): + </p> + <p> + <ul> + <li> + <p> + <code>int (*wait)(FAR struct usbhost_driver_s *drvr, bool connected);</code> + </p> + <p> + Wait for a device to be connected or disconnected. + </p> + </li> + <li> + <p> + <code>int (*enumerate)(FAR struct usbhost_driver_s *drvr);</code> + </p> + <p> + 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 <code>usbhost_findclass(</code>) to find the class that supports this device, + (4) call the <code>create()</code> method on the <code>struct usbhost_registry_s interface</code> to get a class instance, and + finally (5) call the <code>connect()</code> method of the <code>struct usbhost_class_s</code> interface. + After that, the class is in charge of the sequence of operations. + </p> + </ul> + </p> </li> <li> - A driver for the Nokia 6100 LCD (with either the Phillips PCF8833 LCD controller and for the Epson S1D15G10 LCD controller) - and an NX graphics 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. + <p> + <b>Binding USB Host-Side Drivers</b>. + 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 (<code>drivers/usbhost/usbhost_storage.c</code>) will register a standard, NuttX block driver interface (like <code>/dev/sda</code>) + that can be used to mount a file system just as with any other other block driver instance. + In general, the binding sequence is: + </p> + <p> + <ol> + <li> + <p> + Each USB host class driver includes an intialization entry point that is called from the + application at initialization time. + This driver calls <code>usbhost_registerclass()</code> during this initialization in order to makes itself available in the event the the device that it supports is connected. + </p> + <p> + <b>Examples</b>: + The function <code>usbhost_storageinit()</code> in the file <code>drivers/usbhost/usbhost_storage.c</code> + </p> + </li> + <li> + <p> + Each application must include a <i>waiter</i> thread thread that (1) calls the USB host controller driver's <code>wait()</code> to detect the connection of a device, and then + (2) call the USB host controller driver's <code>enumerate</code> method to bind the registered USB host class driver to the USB host controller driver. + </p> + <p> + <b>Examples</b>: + The function <code>nsh_waiter()</code> in the file <code>configs/nucleus2g/src/up_nsh.c</code> and + the function <code>nsh_waiter()</code> in the file <code>configs/olimex-lpc1766stk/src/up_nsh.c</code>. + </p> + </li> + <li> + <p> + 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 <code>/dev</code> directory. + To repeat the above example, the USB host mass storage class driver (<code>drivers/usbhost/usbhost_storage.c</code>) will register a standard, NuttX block driver interface (like <code>/dev/sda</code>) + that can be used to mount a file system just as with any other other block driver instance. + </p> + <p> + <b>Examples</b>: + See the call to <code>register_blockdriver()</code> in the function <code>usbhost_initvolume()</code> in the file <code>drivers/usbhost/usbhost_storage.c</code>. + </p> + </li> + </ol> + </p> </li> </ul> -</p> +</ul> <table width ="100%"> <tr bgcolor="#e4e4e4"> 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. |