mirror of
https://github.com/apache/nuttx.git
synced 2026-05-27 03:05:40 +08:00
Prep for 5.16 release
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3241 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
+125
-36
@@ -800,64 +800,153 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<p><b>nuttx-5.15 Release Notes</b>:
|
<p><b>nuttx-5.16 Release Notes</b>:
|
||||||
|
|
||||||
<p>
|
<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.
|
<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 several bugfixes as well as feature enhancements, primarily for the Olimex LPC1766-STK board.
|
This release includes initial support for USB host in NuttX.
|
||||||
Important bugfxes included:
|
The USB host infrstruture is new to NuttX.
|
||||||
<ul>
|
This initial USB host release is probably only beta quality;
|
||||||
<li>
|
it is expected the some bugs remain in the logic and that the functionality requires extension.
|
||||||
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>
|
|
||||||
</p>
|
</p>
|
||||||
<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>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
The LPC176x Ethernet driver was using all of AHB SRAM Bank0 for Ethernet packet buffers (16Kb).
|
<p>
|
||||||
An option was added to limit the amount of SRAM used for packet buffering and to re-use any extra Bank0 memory for heap.
|
<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>
|
||||||
<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>
|
||||||
<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>
|
||||||
<li>
|
<li>
|
||||||
Added an optional <code>cmddata()</code> method to the SPI interface.
|
<p>
|
||||||
Some devices require an additional out-of-band bit to specify if the next word sent to the device is a command or data.
|
<b>USB Host Class Driver Registry</b>.
|
||||||
The <code>cmddata()</code> method provides selection of command or data.
|
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>
|
||||||
<li>
|
<li>
|
||||||
A driver for the Nokia 6100 LCD (with either the Phillips PCF8833 LCD controller and for the Epson S1D15G10 LCD controller)
|
<p>
|
||||||
and an NX graphics configuration for the Olimex LPC1766-STK have been added.
|
<b>Detection and Enumeration of Connected Devices</b>.
|
||||||
However, neither the LCD driver nor the NX configuration have been verified as of the this release.
|
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>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</p>
|
</ul>
|
||||||
|
|
||||||
<table width ="100%">
|
<table width ="100%">
|
||||||
<tr bgcolor="#e4e4e4">
|
<tr bgcolor="#e4e4e4">
|
||||||
|
|||||||
@@ -1572,3 +1572,85 @@ And feature enhancements:
|
|||||||
configuration for the Olimex LPC1766-STK have been added. However,
|
configuration for the Olimex LPC1766-STK have been added. However,
|
||||||
neither the LCD driver nor the NX configuration have been verified
|
neither the LCD driver nor the NX configuration have been verified
|
||||||
as of the this release.
|
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.
|
||||||
|
|||||||
Reference in New Issue
Block a user