Prep for NuttX-5.17

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3267 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo 2011-01-20 02:41:15 +00:00
parent bc5634d2ad
commit 2ae6b79306
3 changed files with 96 additions and 179 deletions

View File

@ -1418,7 +1418,7 @@
* drivers/usbhost -- Add a USB host class driver for the (Bulk-Only) USB * drivers/usbhost -- Add a USB host class driver for the (Bulk-Only) USB
Mass Storage Class. Mass Storage Class.
5.17 2011-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr> 5.17 2011-01-19 Gregory Nutt <spudmonkey@racsa.co.cr>
* include/nuttx/usb -- rename usb_storage.h to storage.h. * include/nuttx/usb -- rename usb_storage.h to storage.h.
* arch/arm/src/lpc17xx/lpc17_usbhost.c -- Add support for low-speed devices. * arch/arm/src/lpc17xx/lpc17_usbhost.c -- Add support for low-speed devices.
@ -1436,4 +1436,6 @@
* configs/olimex-lpc1766stk/hidkbd - Added a configuration to build the * configs/olimex-lpc1766stk/hidkbd - Added a configuration to build the
USB host HID keyboard class driver test for the LPC17xx. USB host HID keyboard class driver test for the LPC17xx.
* Ran the tool CppCheck (http://sourceforge.net/apps/mediawiki/cppcheck) and * Ran the tool CppCheck (http://sourceforge.net/apps/mediawiki/cppcheck) and
fixed several errors in the code identified by the tool. fixed several errors in the code identified by the tool.
5.18 2011-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>

View File

@ -800,153 +800,31 @@
</tr> </tr>
</table> </table>
<p><b>nuttx-5.16 Release Notes</b>: <p><b>nuttx-5.17 Release Notes</b>:
<p> <p>
The 63<sup>rd</sup> release of NuttX, Version 5.16, was made on January 10, 2010 and is available for download from the The 64<sup>th</sup> release of NuttX, Version 5.17, was made on January 19, 2010 and is available for download from the
<a href="http://sourceforge.net/project/showfiles.php?group_id=189573">SourceForge</a> website. <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>. The change log associated with the release is available <a href="#currentrelease">here</a>.
Unreleased changes after this release are available in CVS. Unreleased changes after this release are available in CVS.
These unreleased changes are listed <a href="#pendingchanges">here</a>. These unreleased changes are listed <a href="#pendingchanges">here</a>.
</p> </p>
<p> <p>
This release includes initial support for USB host in NuttX. This release follows close on the heels of the 5.16 release and extends the USB host capabilities first introduced in that version.
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> <p>
Below is a summary of the NuttX USB host implementation as extracted from the
<a href="NuttxPortingGuide.html">NuttX Porting Guide</a>:
</p>
<ul> <ul>
<h3>6.3.9 USB Host-Side Drivers</h3> <li>
The LPC17xx USB host controller driver was extended to (1) add support for low-speed devices,
<ul> (2) handle multiple concurrent transfers on different endpoints (still only one TD per endpoint), and
<li> (3) handle periodic interrupt endpoint types.
<p> </li>
<b><code>include/nuttx/usb/usbhost.h</code></b>. <li>
All structures and APIs needed to work with USB host-side drivers are provided in this header file. Add a USB host HID keyboard class driver.
</p> Now you can connect a standard USB keyboard to NuttX and receive keyboard input for an application.
</li> </li>
<li>
<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>
<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>
<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>
<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>
</ul> </ul>
<p>
And other changes as detailed in the ChangeLog.
</p>
<table width ="100%"> <table width ="100%">
<tr bgcolor="#e4e4e4"> <tr bgcolor="#e4e4e4">
@ -1394,9 +1272,17 @@
</p> </p>
<p> <p>
<b>Nucleus2G LPC1768</b>. <b>Nucleus2G LPC1768</b>.
Some initial files for the LPC17xx family were released in NuttX 5.6, but the first <ul>
functional release for the NXP LPC1768/Nucleus2G occured with NuttX 5.7 with some <li>
additional enhancements through NuttX-5.9. Some initial files for the LPC17xx family were released in NuttX 5.6, but
</li>
<li>
The first functional release for the NXP LPC1768/Nucleus2G occured with NuttX 5.7 with
Some additional enhancements through NuttX-5.9.
</li>
</ul>
</p>
<p>
That initial, 5.6, basic release included <i>timer</i> interrupts and a <i>serial console</i> and was That initial, 5.6, basic release included <i>timer</i> interrupts and a <i>serial console</i> and was
verified using the NuttX OS test (<code>examples/ostest</code>). verified using the NuttX OS test (<code>examples/ostest</code>).
Configurations available include include a verified NuttShell (NSH) configuration Configurations available include include a verified NuttShell (NSH) configuration
@ -1408,21 +1294,43 @@
</p> </p>
<p> <p>
<b>mbed LPC1768</b>. <b>mbed LPC1768</b>.
Support for the mbed board was contributed by Dave Marples and released in NuttX-5.11. <ul>
<li>
Support for the mbed board was contributed by Dave Marples and released in NuttX-5.11.
</li>
</ul>
</p>
<p>
This port includes a NuttX OS test configuration (see <code>examples/ostest</code>). This port includes a NuttX OS test configuration (see <code>examples/ostest</code>).
</p> </p>
<p> <p>
<b>Olimex LPC1766-STK</b>. <b>Olimex LPC1766-STK</b>.
Support for that Olimex-LPC1766-STK board was added to NuttX 5.13. <ul>
The NuttX-5.14 release extended that support with an <i>Ethernet driver</i>. <li>
The NuttX-5.15 release further extended the support with a functional <i>USB device driver</i> and <i>SPI-based micro-SD</i>. Support for that Olimex-LPC1766-STK board was added to NuttX 5.13.
And the NuttX-5.16 release added a functional <i>USB host driver</i>. </li>
<li>
The NuttX-5.14 release extended that support with an <i>Ethernet driver</i>.
</li>
<li>
The NuttX-5.15 release further extended the support with a functional <i>USB device driver</i> and <i>SPI-based micro-SD</i>.
</li>
<li>
The NuttX-5.16 release added a functional <i>USB host controller driver</i> and <i>USB host mass storage class driver</i>.
</li>
<li>
The NuttX-5.17 released added support for low-speed USB devicers, interrupt endpoints, and a <i>USB host HID keyboard class driver</i>.
</li>
</ul>
</p>
<p>
Verified configurations are now available for the NuttX OS test, Verified configurations are now available for the NuttX OS test,
for the NuttShell with networking and microSD support(NSH, see the <a href="ttp://www.nuttx.org/NuttShell.html">NSH User Guide</a>), for the NuttShell with networking and microSD support(NSH, see the <a href="ttp://www.nuttx.org/NuttShell.html">NSH User Guide</a>),
for the NuttX network test, for the <a href="http://acme.com/software/thttpd">THTTPD</a> webserver, for the NuttX network test, for the <a href="http://acme.com/software/thttpd">THTTPD</a> webserver,
and for USB serial and USB storage examples. for USB serial deive and USB storage devices examples, and for the USB host HID keyboard driver.
Support for the USB host mass storage device can optionally be configured for the NSH example.
A driver for the <i>Nokia 6100 LCD</i> and an NX graphics configuration for the Olimex LPC1766-STK have been added. A driver for the <i>Nokia 6100 LCD</i> 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 the NuttX-5.15 release. However, neither the LCD driver nor the NX configuration have been verified as of the the NuttX-5.17 release.
</p> </p>
<p> <p>
<b>Development Environments:</b> <b>Development Environments:</b>
@ -2058,18 +1966,25 @@ Other memory:
</table> </table>
<ul><pre> <ul><pre>
nuttx-5.16 2011-01-10 Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt; nuttx-5.17 2011-01-19 Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
* include/nuttx/usb -- Created new directory. Moved all usb-related header * include/nuttx/usb -- rename usb_storage.h to storage.h.
files to this new directory. Created a skeleton for a new USB host header * arch/arm/src/lpc17xx/lpc17_usbhost.c -- Add support for low-speed devices.
file * drivers/usbhost/usbhost_skeleton.c -- Template for new class drivers
* drivers/usbhost -- Add USB host "registry" where connect devices can be * include/nuttx/usb/hid.h and drivers/usbhost/usbhost_hidkbd.c -- New
matched with the correct USB class driver. files for HID keyboard support.
* arc/arc/src/lpc17xx/lpc17_usbhost.c -- Add a simple USB host driver for * arch/arm/src/lpc17xx/lpc17_usbhost.c -- Will now handle multiple
the NXP lpc17xx. concurrent transfers on different endpoints (still only one TD per
* drivers/usbhost -- Add generic USB device enumeration logic. endpoint). All methods are protected from re-entrancy; lots of re-
* drivers/usbhost -- Add a USB host class driver for the (Bulk-Only) USB structuring in preparation for interrupt endpoint support.
Mass Storage Class. * arch/arm/src/lpc17xx/lpc17_usbhost.c -- Add support for periodic
interrupt transfers.
* examples/hidkbd - Added a simple test for the USB host HID keyboard
class driver.
* configs/olimex-lpc1766stk/hidkbd - Added a configuration to build the
USB host HID keyboard class driver test for the LPC17xx.
* Ran the tool CppCheck (http://sourceforge.net/apps/mediawiki/cppcheck) and
fixed several errors in the code identified by the tool.
pascal-2.0 2009-12-21 Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt; pascal-2.0 2009-12-21 Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
@ -2099,25 +2014,7 @@ buildroot-1.8 2009-12-21 &lt;spudmonkey@racsa.co.cr&gt;
</table> </table>
<ul><pre> <ul><pre>
nuttx-5.17 2011-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt; nuttx-5.18 2011-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
* include/nuttx/usb -- rename usb_storage.h to storage.h.
* arch/arm/src/lpc17xx/lpc17_usbhost.c -- Add support for low-speed devices.
* drivers/usbhost/usbhost_skeleton.c -- Template for new class drivers
* include/nuttx/usb/hid.h and drivers/usbhost/usbhost_hidkbd.c -- New
files for HID keyboard support.
* arch/arm/src/lpc17xx/lpc17_usbhost.c -- Will now handle multiple
concurrent transfers on different endpoints (still only one TD per
endpoint). All methods are protected from re-entrancy; lots of re-
structuring in preparation for interrupt endpoint support.
* arch/arm/src/lpc17xx/lpc17_usbhost.c -- Add support for periodic
interrupt transfers.
* examples/hidkbd - Added a simple test for the USB host HID keyboard
class driver.
* configs/olimex-lpc1766stk/hidkbd - Added a configuration to build the
USB host HID keyboard class driver test for the LPC17xx.
* Ran the tool CppCheck (http://sourceforge.net/apps/mediawiki/cppcheck) and
fixed several errors in the code identified by the tool.
pascal-2.1 2010-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt; pascal-2.1 2010-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;

View File

@ -1654,3 +1654,21 @@ the NuttX Porting Guide:
block driver instance. block driver instance.
Examples: See the call to register_blockdriver() in the function Examples: See the call to register_blockdriver() in the function
usbhost_initvolume() in the file drivers/usbhost/usbhost_storage.c. usbhost_initvolume() in the file drivers/usbhost/usbhost_storage.c.
nuttx-5.17
^^^^^^^^^^
The 64th release of NuttX, Version 5.17, was made on January 19, 2010 and is
available for download from the SourceForge website. This release follows
close on the heels of the 5.16 release and extends the USB host capabilities
first introduced in that version.
1. The LPC17xx USB host controller driver was extended to (1) add support
for low-speed devices, (2) handle multiple concurrent transfers on
different endpoints (still only one TD per endpoint), and (3) handle
periodic interrupt endpoint types.
2. Add a USB host HID keyboard class driver. Now you can connect a
standard USB keyboard to NuttX and receive keyboard input for an
application.
And other changes as detailed in the ChangeLog.