You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by gn...@apache.org on 2020/01/26 14:39:38 UTC

[incubator-nuttx-website] branch master updated: Create release notes for all past releases.

This is an automated email from the ASF dual-hosted git repository.

gnutt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx-website.git


The following commit(s) were added to refs/heads/master by this push:
     new 3f15692  Create release notes for all past releases.
3f15692 is described below

commit 3f1569275a9d1307b2202028163a2146ab98051a
Author: Brennan Ashton <ba...@brennanashton.com>
AuthorDate: Sun Jan 19 14:27:47 2020 -0800

    Create release notes for all past releases.
    
    Release pages were generated using the syncbbrelease.py script.
    Also rework the download page to list old releases and prepare for
    Apache release when they are ready.
    
    Signed-off-by: Brennan Ashton <ba...@brennanashton.com>
---
 _config.yml              |    5 +
 _releases/7.13.md        |  319 ++++++++++
 _releases/7.14.md        |  298 +++++++++
 _releases/7.15.md        |  310 ++++++++++
 _releases/7.16.md        |  403 +++++++++++++
 _releases/7.17.md        |  737 +++++++++++++++++++++++
 _releases/7.18.md        |  560 +++++++++++++++++
 _releases/7.19.md        |  832 ++++++++++++++++++++++++++
 _releases/7.20.md        |  502 ++++++++++++++++
 _releases/7.21.md        | 1029 +++++++++++++++++++++++++++++++
 _releases/7.22.md        | 1108 ++++++++++++++++++++++++++++++++++
 _releases/7.23.md        | 1145 +++++++++++++++++++++++++++++++++++
 _releases/7.24.md        |  787 ++++++++++++++++++++++++
 _releases/7.25.md        |  811 +++++++++++++++++++++++++
 _releases/7.26.md        | 1497 ++++++++++++++++++++++++++++++++++++++++++++++
 _releases/7.27.md        | 1040 ++++++++++++++++++++++++++++++++
 _releases/7.28.md        | 1142 +++++++++++++++++++++++++++++++++++
 _releases/7.29.md        | 1137 +++++++++++++++++++++++++++++++++++
 _releases/7.30.md        |  651 ++++++++++++++++++++
 _releases/7.31.md        | 1037 ++++++++++++++++++++++++++++++++
 _releases/8.1.md         | 1201 +++++++++++++++++++++++++++++++++++++
 _releases/8.2.md         | 1015 +++++++++++++++++++++++++++++++
 download.md              |   96 +--
 helpers/syncbbrelease.py |  125 ++++
 24 files changed, 17750 insertions(+), 37 deletions(-)

diff --git a/_config.yml b/_config.yml
index ee39ad4..b1618cd 100644
--- a/_config.yml
+++ b/_config.yml
@@ -25,5 +25,10 @@ keep_files: [".git", ".svn", "apidocs"]
 # The base path where the website is deployed
 baseurl:
 
+# Custom collections
+collections:
+    releases:
+        output: true
+        permalink: /releases/:title/
 # End _config.yml
 
diff --git a/_releases/7.13.md b/_releases/7.13.md
new file mode 100644
index 0000000..9b7693e
--- /dev/null
+++ b/_releases/7.13.md
@@ -0,0 +1,319 @@
+---
+layout: page
+released: true
+apache: false
+title: 7.13
+date: 2016-01-28
+summary: >
+    Release v7.13
+
+artifact-root: "https://bitbucket.org/nuttx/nuttx/downloads/"
+checksum-root: ""
+key-file: ""
+
+source-os-dist:
+    - "nuttx-7.13.tar.gz"
+source-app-dist:
+    - "apps-7.13.tar.gz"
+
+---
+
+
+<!--
+{% comment %}
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to you under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+{% endcomment %}
+-->
+
+{% include JB/setup %}
+
+NuttX-7.13 Release Notes
+------------------------
+
+The 113th release of NuttX, Version 7.13, was made on December 5, 2015,
+and is available for download from the Bitbucket.org website.  Note
+that release consists of two tarballs:  nuttx-7.13.tar.gz and
+apps-7.13.tar.gz.  These are available from:
+
+    https://bitbucket.org/patacongo/nuttx/downloads
+    https://bitbucket.org/nuttx/apps/downloads
+
+Both may be needed (see the top-level nuttx/README.txt file for build
+information).
+
+Additional new features and extended functionality:
+
+    * Core OS:
+
+      - External RTC:  Added OS support for external RTC chips.
+      - boardctl():  Add a command to the boardctl() interface to obtain a
+        board unique ID.
+
+    * File Systems:
+
+      - TMPFS:  Add support for a new TMPFS, RAM file system.  The TMPFS
+        file system does not require any significant amount of memory
+        itself.  It will grow dynamically as files are added and shrink back
+        when files are deleted.  A very low overhead way to retain temporary
+        files.
+      - VFS:  The VFS was extended to support standard file operations on
+        block drivers (open, close, read, write, etc.).  The open() interface
+        accomplishes this by creating a temporary characer driver to mediate
+        the character oriented accesses to tje block driver.
+      - HOSTFS:  Added a HOSTFS file system for use with the simulator.  The
+        HOSTFS file system mounts in the simulated Nuttx context by provides
+        proxied access to the file system on the host PC.  This is useful for
+        providing file system content and nonvolatile storage of files in the
+        simulation environment.  From Ken Pettit.
+      - MTD/PROCFS:  Add an interface to un-register an MTD procfs entry.
+        From Ken Pettit.
+      - filemtd:  A new MTD conversion layer that will convert a regular file
+        (or driver file) to an MTD device.  This is useful for testing on the
+        simulation using the HOSTFS.  From Ken Pettit.
+      - PROCFS:  Extended to include networking entries in the procfs. Device
+        status, device statistics, and network statistics are now available
+        from the PROCFS.
+      - PROCFS:  The PROCFS file system can now be configured so that it
+        supports runtime registration of PROCFS entries with
+        CONFIG_FS_PROCFS_REGISTER=y.
+
+    * Graphics/Graphic Drivers:
+
+      - ST7565 Driver:  Extend to include support for the ERC12864-3. From
+        Pierre-noel Bouteville.
+
+    * Common Device Drivers:
+
+      - User buttons: Added a character driver to support application access
+        to board buttons.  Supports notification of button activity via
+        signals.
+      - User LEDs:  Added a character driver to support application access
+        to on-board LEDs.
+      - Zero Cross: Added a Zero Cross device driver support.  From Alan
+        Carvalho de Assis.
+      - MAX6675:  Added support to Thermocouple-to-Digital converter MAX6675.
+        From Alan Carvalho de Assis.
+      - BCH:  Block-to-character (BCH) driver should forward ioctl() calls
+        to the contained block driver.
+      - S25FL1xx:  Added a S25FL1xx QuadSPI FLASH driver.
+      - On-Chip FLASH: Added an upper half MTD device that can use the
+        interfaces defined in included/nuttx/progmem.h to provide a
+        standard MTD driver.
+      - Serial: Implemented high level DMA infrastructure for serial
+        devices.  From Max Neklyudov.
+      - AT24XX:  Add support for multiple AT24xx EEPROM parts, each with
+        unique I2C addresses, but otherwise identical.
+      - External RTC:  Added drivers for external I2C RTC chips: DS3102,
+        DS1307, DS3231, DS3232, and NXP PCF85263.
+      - W25: Added support for byte write mode to the W25 FLASH driver. From
+        Ken Pettit.
+      - dev/loop:  Added a loop character device.  losetup() and loteardown()
+        should not be called directory from applications. Rather, these
+        functions are now available as IOCTL commands to the loop driver.
+      - dev/smart:  Added support for a /dev/smart loop device. From Ken
+        Pettit.
+
+    * Networking:
+
+      - Driver Statistics: Most network drivers do not support statistics.
+        Those that do only supported them when DEBUG is enabled.  Each
+        driver collected an architecture specific set of statistics and
+        there was no common mechanism to view those statistics.  Thus,
+        the driver feature was mostly useless.  This release standardizes
+        the driver statistics and puts the definition in the common network
+        device structure defined in netdev.h where they can be accessed by
+        network applications.  All Ethernet drivers that collect statistics
+        have been adapted to use these common statistics.
+
+    * Simulation Platform:
+
+      - W25 FLASH:  Added support for W25 FLASH simulation. From Ken Pettit.
+      - HOSTFS: Added support for the HOSTFS file system (see "File Systems",
+        above).
+
+    * Atmel SAMV7:
+
+      - SAME70:  Added support for the SAME70 family of chips.
+      - Tickless: SAMV7 now supports the tickless mode of operation.
+
+    * Atmel SAMV7 Drivers:
+
+      - MPU:  Added MPU and protected build support.
+      - QSPI:  Added a QuadSPI FLASH driver.  This driver operates in the
+        memory-mapped, Serial Memory Mode (SMM).
+      - FLASH:  Added support to write on-chip FLASH.
+      - Timer/Counter:  TC driver ported to SAMV7 from the SAMA5.  Free-running
+        and one-short timer logic also ported.
+      - PCK: Brought programmable clock (PCK) logic from SAMA5 into SAMV7.
+      - Timer/Counter:  Support PCK6 as an optional source for the timer/
+        counter clock.
+
+    * Atmel SAMV7 Boards:
+
+      - SAME70-Xplained:  Add NSH and networking configurations for the
+        SAME70 Xplained board.  Includes verified support for serial console,
+        LEDs, buttons, SDRAM, HSMCI SD card, and networking.
+      - SAMV7-XULT and SAME70-Xplained: If Tickless mode is selected then
+        enable PCK6 as a timer/counter clock source
+
+    * STMicro STM32:
+
+      - CCM PROCFS: Is no longer a part of the 'base' procfs entries and can
+        now only be supported via run time registration with
+        CONFIG_FS_PROCFS_REGISTER=y.
+
+    * STMicro STM32 Drivers:
+
+      - Timers:  Add a compatible lower-half timer driver for use with the
+        common timer upper-half driver.  From Wail Khemir.
+
+    * STMicro STM32 Boards:
+
+      - STM32F4-Discovery: Add low level support for the Zero Cross driver
+        for the STM32F4-Discovery.  From Alan Carvalho de Assis.
+      - STM32F4-Discovery: Add board config to support for the MAX6675. From
+        Alan Carvalho de Assis.
+
+    * C Library/Header Files:
+
+      - bsearch():  Added the bsearch() function from NetBSD.
+      - freopen():  Added support for freopen().
+      - strftime():  Added day-of-week support (when avaialable).
+
+    * Tools:
+
+      - nxstyle: Add crappy style checking tool nxstyle.c.  See thee tools/
+        README file for more info.
+
+    * Applications: NSH
+
+      - mksmartfs command: Add configuration option to supported multiple
+        rootdirectories. From Ken Pettit.
+      - Add support for 'basename' and 'dirname' commands.
+      - set command:  Like bash, NSH set command now strips off any leading
+        or trailing whitespace.
+      - mount command: The mount commands now accepts mount options
+        (currently needed only for the hostfs file system).  From Ken
+        Pettit.
+      - losetup command:  NSH no longer calls losetup() and loteardown
+        directly. Now it opens /dev/loop and accomplishes these things
+        using ioctl() calls.
+      - ifconfig command:  If CONFIG_NETDEV_STATISTICS=y, then print the
+        network driver statistics in the ifconfig.
+      - ifconfig, ifup, and ifdown:  These commands now uses /proc/net/<dev>
+        to view network device configuration and status and /proc/net/stat
+        to show network statistics.  A consequence of this is that you
+        cannot view this network information if the procfs is not enabled
+        and mounted at /proc.
+      - losmart command:  Added a new NSH losmart command.  losmart setups
+        up a loop device for the smart MTD driver similar to losetup but
+        with different syntax.  From Ken Pettit.
+      - ps command:  The 'ps' command now uses /proc/<pid>/ to obtain task
+        status information.  A consequence of this is that you cannot use
+        the 'ps' command if the procfs is not enabled and mounted at /proc.
+ 
+    * Applications: apps/system:
+
+      - apps/system/hexed:  Port the hexed command line hexadeciamal editor
+         to Nuttx.  See http://apps.venomdev.net/hexed/.
+
+    * Applications: apps/fsutils:
+
+      - apps/fsutils/smartfs: Move into apps/fsutils from kernel, now uses
+        only open and ioctl.  From Ken Pettit.
+
+    * Applications: apps/examples:
+
+      - apps/examples/fstest:  Add a generic file system test.  This is
+        essentially the same as examples/smart, but has all of the SmartFS
+        specific logic ripped out.  This was created for testing the new
+        TMPFS.
+      - apps/examples/zerocross: Add a Zero Cross application example. From
+        Alan Carvalho de Assis.
+      - apps/examples/media:  Add a simple test for access of media via a
+        block driver or MTD driver.
+
+Bugfixes.  Only the most critical bugfixes are listed here (see the
+ChangeLog for the complete list of bugfixes and for additional, more
+detailed bugfix information):
+
+    * Core OS:
+
+      - Fixed an error in clock_timespec_subtract().  Found by Lok.
+      - pthreads: CRITICAL BUGFIX: Logic was wiping out the indication that
+        of the type of a pthread.  Hence, it could be confused as a task.
+        Found because this was causing a crash when /proc/nnn/cmdline was
+        printed.
+
+    * File System/Block Drivers:
+
+      - SMART MTD: Fix some Smart wear-leveling bugs.  Fixed SmartFS wear
+        level error that occurs when the logical sector size is too small to
+        save all wear level status bytes in a single sector.  Logical
+        sectors 1 and 2 were simply not being allocated and then the
+        read_sector and write_sector routines were failing.  From Ken
+        Pettit.
+
+    * Graphics/Graphic Drivers:
+
+      - ILI9432:  Fixed errors in orientation. Portrait, RPortrait, and 
+        Landscript should work correly now.  They were displayed mirrored.
+        From  Marco Krahl.
+
+    * Common Drivers:
+
+      - CAN:  Fix a problem in the CAN upper-half driver that occurs only
+        for CAN hardware that support a H/W FIFO of outgoing CAN messages.
+        In this case, there can be a hang condition if both the H/W and
+        S/W FIFOs are both full.  In that case, there may be no event to
+        awaken the upper half driver.  Add a new (conditional) CAN upper
+        half interface called can_txready() that can be used by the lower
+        half driver to avoid this hang condition.
+      - MS58xx:  Fix some issues with initialization and with CRC
+        calculation.  From Karim Keddam.
+      - W25: Fixed W25 FLASH driver page read/write logic. From Ken Pettit.
+
+    * Atmel SAMV7 Drivers:
+
+      - USART1 pin configuration: Reconfigure System I/O when using USART1.
+        From Frank Benkert.
+      - MCAN:  Added a call to can_txready() to the MCAN driver.
+
+    * STMicro STM32 Drivers:
+
+      - stm32 F4:  Fix some TIM12 pin mappings.  From Max Kriegleder.
+
+    * STMicro STM32 Boards:
+
+      - STM32F429i-Disco:  Calculated partition boundries based on page
+        block sizes but mtd_partition() is expecting calculations based on
+        erase block size. From Alan Carvalho de Assis.
+
+    * C Library/Header Files:
+
+      - sys/types.h: When building on a 64-bit machine, the size of size_t
+        should be 64-bits. In general, I believe that sizeof(size_t) should
+        be the same as sizeof(uinptr_t).  mmsize_t should always be 32-bits
+        in any event.  The last change to stddef has been backed out.  With
+        these changes, the simulator builds without errors or warnings an a
+        64-bit machine.
+
+    * Applications: apps/nshlib:
+
+      - The I/O buffer, g_iobuffer, should not be a global buffer.  That
+        will not work in an environment where there are multiple NSH
+        sessions.  The I/O buffer must, instead, be a part part of the
+        session-specific data defined in nsh_console.h.
diff --git a/_releases/7.14.md b/_releases/7.14.md
new file mode 100644
index 0000000..43c5657
--- /dev/null
+++ b/_releases/7.14.md
@@ -0,0 +1,298 @@
+---
+layout: page
+released: true
+apache: false
+title: 7.14
+date: 2016-01-28
+summary: >
+    Release v7.14
+
+artifact-root: "https://bitbucket.org/nuttx/nuttx/downloads/"
+checksum-root: ""
+key-file: ""
+
+source-os-dist:
+    - "nuttx-7.14.tar.gz"
+source-app-dist:
+    - "apps-7.14.tar.gz"
+
+---
+
+
+<!--
+{% comment %}
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to you under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+{% endcomment %}
+-->
+
+{% include JB/setup %}
+
+NuttX-7.14 Release Notes
+------------------------
+
+The 114th release of NuttX, Version 7.14, was made on January 28, 2016,
+and is available for download from the Bitbucket.org website.  Note
+that release consists of two tarballs:  nuttx-7.14.tar.gz and
+apps-7.14.tar.gz.  These are available from:
+
+    https://bitbucket.org/patacongo/nuttx/downloads
+    https://bitbucket.org/nuttx/apps/downloads
+
+Both may be needed (see the top-level nuttx/README.txt file for build
+information).
+
+Additional new features and extended functionality:
+
+    * Core OS:
+
+      - modules:  Add support for kernel modules:  insmod, rmmod, support
+        functions.  procfs support for user lsmod functioniality.
+      - SIGEV_THREAD:  Add support for the SIGEV_THREAD notification method
+        in struct sigevent.  This initial implementation will only work in
+        the FLAT build since it utilizes the work queue for signal
+        callbacks.  See the top-level TODO file for additional details.
+      - 64-Bit Timer:  If the 64-bit timer is selected, then use it whenever
+        clock_systimer() is called rather then chopping the 64-bit timer
+        down to 32-bits.  Add a new type, systime_t to represent the 32- or
+        64-bit system timer. This eliminates clock_systimer32() and
+        clock_systime64(); there is now only clock_systimer().
+
+    * Common Device Drivers:
+
+      - Telnet Driver: Move the Telnet driver from apps/ to
+        nuttx/drivers/net.  It is a driver a belongs in the OS.   Now works
+        like the loop device:  A new interface called telnet_initialize()
+        registers a telnet session "factory" device at /dev/telnet.  Via
+        ioctl, the factory device can create instances of the telnet
+        character devices at /dev/telnetN to support Telnet sessions.
+      - PCA9635PW:  Add a driver for the PCA9635PW I2C LED driver IC which
+        can be used to control the intensity of up to 16 LEDs.  From
+        Alexander Entinger.
+      - MCP9844: Driver for the MCP9844 I2C digital temperature sensor with
+        a selectable resolution.  From Alexander Entinger.
+      - PN532: Add driver for the NXP PN532 NFC-chip.  From Janne Rosberg
+        and others at Offcode Ltd.
+      - LSM9DS1:  Add driver for the STMicro LSM9DS1 chip. The LSM9DS1 is a
+        system-in-package featuring a 3D digital linear acceleration sensor,
+        a 3D digital angular rate sensor, and a 3D digital magnetic sensor.
+        From Paul Alexander Patience.
+      - CAN Interface:  Add more extensive error reporting capaibility to
+        the CAN interface definitions.  From Frank Benkert.
+      - SPI Interface:  Add an optional hwfeatures() method to the SPI
+        interface.
+
+    * Simulation Platform:
+
+      - NSH configuration uses the custom start up scriptwith a read-only
+        passwd file.  Includes hooks for an MOTD message.
+
+    * ARMv7-R
+
+      - ARMv7-R:  Add basic architecture support for the ARMv7-R processor
+        family.
+
+    * Atmel AVR:
+
+      - Atmega2560:  Add support for the Atmega2560.  From Dimitry Kloper.
+      - debug.h: Add an AVR-specific header file used when the AVR MEMX
+        pointer is used.  From Dimitri Kloper.
+
+    * Atmel AVR Boards:
+
+      - Arduino-Mega2560: Add support for the Arduino-Mega2560.  From
+        Dimitry Koper.
+
+    * Atmel SAMV7 Drivers:
+
+      - Port the TRNG driver from the SAMA5D3/4 to the SAMV7.
+      - Port the WDT driver from the SAMA5D3/4 to the SAMV7.
+      - Add an RSWDT driver.
+
+    * Atmel SAMV7 Boards:
+
+      - SAMV71-XULT:  Add configuration for testing OS modules.
+
+    * Freescale Kinetis:
+
+      - MK60N512VLL100: Add support for the MK60N512VLL100 Kinetis part.
+        From Andrew Webster.
+
+    * Freescale Kinetis Boards:
+
+      - ENET:  Numerous updates to the Kinetis ENET driver. That driver is
+        now functional. From Andrew Webster.
+
+    * NXP LPC43xx Boards:
+
+      - WaveShare LPC4337-WS:  Support for the WaveShare LPC4337-WS board.
+        From Lok Tep.
+
+    * STMicro STM32 Drivers:
+
+      - Timer Capture:  Add timer input capture driver.  From Pierre-Noel
+        Bouteville.
+
+    * STMicro STM32 Boards:
+
+      - Olimex STM32 H407:  Added a port to the Olimex STM32 H407 board.
+        This board features the STMicro STM32F407ZGT6 (144 pins).
+        Contributed by Neil Hancock.
+
+    * TI TMS550 Boards:
+
+      - TI LaunchXL-TMS57004:  Add basic board support for TI LaunchXL-
+        TMS57004.  Still a work in progress.
+
+    * C Library/Header Files:
+
+      - sys/time.h: Add timeradd(), timersub(), timerclear(), timerisset(),
+        and timercmp() as macros. These are non-POSIX interfaces, but
+        included in most BSD deriviatives, including Linux.  From Manuel St𨮊.
+      - AVR support: Introduce support for Atmel toolchain in-flash strings.
+        Atmel toolchain AVR compiler provides a transparent in-flash object
+        support using __flash and __memx symbols. The former indicates to
+        compiler that this is a flash-based object.  The later used with
+        pointer indicates that the referenced object may reside either in
+        flash or in RAM. The compiler automatically makes 32-bit pointer
+        with flag indicating whether referenced object is in flash or RAM
+        and generates code to access either in run-time. Thus, any function 
+        hat accepts __memx object can transparently work with RAM and flash
+        objects.
+        For platforms with a Harvard architecture and a very small RAM like
+        AVR this allows to move all constant strings used in trace messages
+        to flash in the instruction address space, releasing resources for
+        other things. This change introduces IOBJ and IPTR type qualifiers.
+        The 'I' indicates that the object may lie in instruction space on a
+        Harvard architecture machine. For platforms that do not have __flash
+        and __memx or similar symbols IOBJ and IPTR are empty, making the
+        types equivalent to, for example, 'const char' and 'const char*'.
+        For Atmel compiler these will become 'const __flash char' and
+        'const __memx char*'.  All printf() functions and syslog() functions
+        are changed so that the qualifier is used with the format parameter.
+        From Dimitry Kloper.
+      - debug.h:  Add configuration to support an architecture-specific
+        debug.h header file. From Dimitri Kloper.
+      - netdb:  Add support for the use of a DNS resolver file like
+        /etc/resolv.conf.
+      - TEA:  Add an implementation of the Tiny Encryption Algorithm.
+      - math32.h:  Add some utilities to support 64-bit arithmetic
+        operations for platforms that do not support long long types.
+
+    * Tools:
+
+      - tools/cnvwindeps.c:  Add a tool that will convert paths in
+        dependencies generated by a Windows compiler so that they can be
+        used with the Cygwin make.
+      - tools/mkwindeps.sh: A script that coordinates use of cnvwindeps.exe.
+        Dependencies now work on the Cygwin platform when using a Windows 
+        ative toolchain.
+
+    * Applications: NSH
+
+      - Module Commands:  Add module commands: insmod, rmmod, and lsmod.
+      - Time Command:  Add a 'time' command that may be used to time the
+        execution of other commands.
+      - Password Commands:  Add useradd, userdel, and passwd commands.
+      - MOTD:  Now supports a Message of the Day (MOTD) that will be
+        presented after the NSH greeting.
+      - Session Logins:  All sessions may be protected with logins using the
+        encrypted password in /etc/passwd.
+      - Extended Logins.  Added optional platform-specific function to
+        perform password verification and optional delay after each failed
+        login attempt.
+
+    * Applications: apps/fsutils:
+
+      - apps/fsutils/passwd: Utility library for accessing a password file
+        like /etc/passwd.
+
+    * Applications: apps/netutils:
+
+      - apps/netutils/telnetd:  Now creates Telnet sessions by opening a new
+        factory device at /dev/telnet and then using ioctl calls to create
+        the session character drivers at /dev/telnetN.
+      - apps/netutils/netlib:  Add netlib_get_dripv4addr() and
+        netlib_get_ipv4netmask().  From Pelle Windestam.
+
+    * Applications: apps/examples:
+
+      - apps/examples/module:  Add a test harness for verifying NuttX kernel
+        modules.
+      - apps/examples/pca9635:  Add a simple test of PCA9635PW PWM LED driver.
+        From Alan Carvalho de Assis.
+      - apps/examples/ostest:  Add a test of POSIX timers using SIGEV_THREAD.
+
+Bugfixes.  Only the most critical bugfixes are listed here (see the
+ChangeLog for the complete list of bugfixes and for additional, more
+detailed bugfix information):
+
+    * Core OS:
+
+      - pthreads: CRITICAL BUGFIX: Logic was wiping out the indication that
+        of the type of a pthread.  Hence, it could be confused as a task.
+      - waitpid:  CRITICAL BUGFIX.  Add a reference count to prevent waitpid
+        from using stale memory released by the waited-for task group.
+      - clock_systimespec():  Fix an error in a time conversion.
+
+    * File System/Block Drivers:
+
+      - poll(): Fix handling of sem_tickwait() return value sem_tickwait()
+        does not return an -1+errno, it returns a negated errno value.
+        Noted by Freddie Chopin.
+
+    * Common Drivers:
+
+      - TUN Driver:  Fix a compile time error in the TUN driver.  From
+        Vladimir Komendantskiy.
+      - USB Host HID Parser:  Wrong size used in memcpy().  From Hang Xu.
+      - PCA9555: Fixed a bug in the function pca9555_setbit which occurs if
+        someone tries to set one of the pins 8-15. The problem is that
+        after the check if the pin is greater than 7 the variable addr is
+        incremented and used in the Call I2C_WRITEREAD. But later in the
+        call to the I2C_WRITE buf[0] is used as address but this address is
+        not incremented as it should be. Note address does mean the address
+        to the register in the ioexpander and not the I2C address.  From
+        Stefan Kolb.
+
+    * Networking:
+
+      - TCP/IOB:  Numerous fixes, mostly relate to TCP and IOB buffering
+        and race conditions.  These were necessary for for the NuttX
+        networking later to be stable in some stress testing.  From Andrew
+        Webster.
+
+    * Atmel SAMV7 Drivers:
+
+      - USBHS Device: In USBHS device driver, fix check if zero length
+        packet is needed.
+
+    * STMicro STM32 Drivers:
+
+      - OTG FS Host:  Fix some backward arguments to stm32_putreg().  Note
+        by Hang Xu.
+
+    * Tools:
+
+      - tools/mkdeps.c:  Extended/fixed support for --winpath option.
+        Dependencies now work under Cygwin with a native Windows toolchain.
+
+    * Build System:
+
+      - apps/platform/Makefile:  Use a relative path to the board directory
+        link rather than the absolute path.  For Cygwin, the absolute would
+        would need converted with cygpath.  But just using the relative path
+        is a simpler solution.
+
diff --git a/_releases/7.15.md b/_releases/7.15.md
new file mode 100644
index 0000000..fb6a20d
--- /dev/null
+++ b/_releases/7.15.md
@@ -0,0 +1,310 @@
+---
+layout: page
+released: true
+apache: false
+title: 7.15
+date: 2016-03-26
+summary: >
+    Release v7.15
+
+artifact-root: "https://bitbucket.org/nuttx/nuttx/downloads/"
+checksum-root: ""
+key-file: ""
+
+source-os-dist:
+    - "nuttx-7.15.tar.gz"
+source-app-dist:
+    - "apps-7.15.tar.gz"
+
+---
+
+
+<!--
+{% comment %}
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to you under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+{% endcomment %}
+-->
+
+{% include JB/setup %}
+
+NuttX-7.15 Release Notes
+------------------------
+
+The 115th release of NuttX, Version 7.15, was made on March 27, 2016,
+and is available for download from the Bitbucket.org website.  Note
+that release consists of two tarballs:  nuttx-7.15.tar.gz and
+apps-7.15.tar.gz.  These are available from:
+
+    https://bitbucket.org/nuttx/nuttx/downloads
+    https://bitbucket.org/nuttx/apps/downloads
+
+Both may be needed (see the top-level nuttx/README.txt file for build
+information).
+
+Additional new features and extended functionality:
+
+    * Core OS:
+
+      - Add a state variable that provides the current level of OS
+        initialization.  This is needed by some logic that may attempt to
+        run early in the start-up sequence but cannot run if a sufficient
+        level of initialization has not yet occurred.
+      - Spinlocks:  Add interface definitions for to support spinlocks as
+        needed for multi-CPU configurations.
+      - SMP support.  Support for Symmetric Multi-Processing (SMP) added.
+        This affects many internal data structures, spinlock extensions
+        and renaming of interrupt enable/disable interfaces, new platform
+        interfaces to support CPU initialization and inter-actions, and
+        new application interfaces to manage CPU affinity.  The changes
+        are too extensive to summarize here; see the SMP Wiki page at
+        http://www.nuttx.org/doku.php?id=wiki:nxinternal:smp.  The
+        new platform interfaces are also described in the NuttX porting
+        guide: http://www.nuttx.org/doku.php?id=documentation:portingguide.
+        Only partially verified; awaiting hardware for the complete
+        verification.
+      - TLS:  Basic definitions needed to support thread local storage
+        (TLS).  TLS is not used anywhere yet (and may not be used in the
+        near future either).
+      - Performance Monitoring:  Add a configuration option to buffer
+        RTOS instrumentation data in an in-memory buffer.
+      - boardctl():  Add boardctl() support that will permit applications
+        to control USB devices.
+
+    * File Systems/Block Drivers:
+
+      - procfs:  Add /proc/kmm entry that shows that state of the kernel
+        heap.  Only useful in PROTECTED and KERNEL build modes where there
+        is a kernel heap.
+      - procfs:  Add support for showing CPU in the tast status if SMP is
+        enabled.
+
+    * Networking:
+
+      - ARP: Add support for IOCTL commands to manage the ARP table.
+      - IEEE 802.15.4 and 6LowPAN:  There are some radio drivers and a
+        directory structure is in place.  However, most of this
+        development is occurring on a fork and is not yet available in the
+        NuttX repositories.  Hopefully in NuttX-7.16.
+
+    * Common Device Drivers:
+
+      - ADS1242:  Driver for the  24-Bit Differential Input ADC ADS1242 that
+        communicates via SPI with a MCU. Reading the ADC conversion result
+        as well as configuring the ADC, setting the input channel, etc. is
+        implemented via ioctl calls.  However, it does not yet implement
+        the standard ADC interface.  From Alexander Entinger.
+      - U-Blox Modem:  Add an upper half driver for the U-Blox Modem.  From
+        Vladimir Komendantskiy. 
+      - I2C: Add an I2C, "upper half", character drivers to support raw I2C
+        data transfers for test applications.
+      - RGB LED: Add a driver to manage a RGB LED via PWM.  From Alan
+        Carvalho de Assis.
+      - Performance Monitoring:  Add a character driver that will allow an
+        application to read buffered scheduler instrumentation data.
+
+    * Simulation Platform:
+
+      - SMP:  Add multi-CPU support to the simulation to support SMP
+        investigation.  There are issues with the simulation and it is less
+        than perfect but sufficient for some very preliminary testing of
+        the core SMP feature.
+
+    * ARMv7-A, ARMv7-R, and ARMv7-M:
+
+      - ARMv7-A, ARMv7-R, and ARMv7-M: Add test-and-set logic and
+        definitions needed to supports spinlocks.
+      - ARMv7-A: Added MPCOre Generic Interrupt Controller (GICv2) and
+        Global Timer support
+      - ARMv7-A: Now includes in MCU-specific hooks needed for SMP support.
+
+    * Atmel SAMV7 Drivers:
+
+      - HSMSI: HSMCI driver can now be configured to handle unaligned data
+        buffers.
+
+    * NXP Freescale LPC11xx/17xx/43xx and LPC2378 Drivers:
+
+      - I2C: Backported the LPC43XX I2C driver, replacing the LPC11XX,
+        LPC17XX, and LPC2378 I2C drivers.  This gives us the I2C_TRANSFER
+        method in all I2C drivers.
+
+    * NXP Freescale LPC17xx Boards:
+
+      - Support for the u-blox GSM and GPS module evaluation board with
+        NXP LPCExpresso LPC1768.  The GSM module is one of LISA-C200,
+        LISA-U200 or SARA-G350. The GPS module is one of MAX-M7 or
+        MAX-M8.  From Vladimir Komendantskiy.
+
+    * NXP Freescale i.MX6:
+
+      - Basic support is in place for the i.MX6 Quad/Dual MCUs.
+        Verification is, however, waiting for the receipt of hardware.
+
+    * NXP Freescale i.MX6 Boards:
+
+      - Sabre-6Quad:  Basic support for the NXP/Freescale Sabre 6Quad
+        board is in place but waiting for hardware for verification.
+
+    * STMicro STM32:
+
+      - STM32F46xx:  Support for STM32F46xx from Paul Alexander Patience
+      - STM32L4:  Add support for the STM32L4 family.  From Sebastien
+        Lorquet.
+
+    * STMicro STM32 Boards:
+
+      - STM32F4 Discovery: Add PWM support for the onboard RGB LED. From
+        Alan Carvalho de Assis.
+      - Nucleo-L476:  Add support for the Nucleo-L476 board.  From Sebastien
+        Lorquet.
+      - STM32L476VG Discovery: Add support for the STM32L476VG Discovery
+        board.  From Dave.
+
+    * Tools:
+
+      - tools/refesh.sh now has a --silent option so that it can be used in
+        batch modes without human input.
+
+    * Build System:
+
+      - Added a 'make olddefconfig' target that will refresh a .config file
+        without interaction.
+
+    * Applications: NSH
+
+      - 'arp':  Add an 'arp' command that will support access to the OS ARP
+        table.
+      - 'ps':  The 'ps' command will show CPU if SMP is enabled.
+
+    * Applications: apps/netutils:
+
+      - apps/netutils/chat: Chat logic contributed by Vladimir
+        Komendantskiy.
+      - apps/netutils/netlib:  Add utility functions to support accesses to
+        the ARP table.
+
+    * Applications: apps/examples:
+
+      - apps/examples/chat: Chat example contributed by Vladimir
+        Komendantskiy.
+      - apps/sysem/ubloxmodem:  Example to control the power
+        state of the modem in nsh.  From  Vladimir Komendantskiy.
+      - apps/examples/leds: An example to demonstrate use of LED driver.
+      - apps/examples/smp:  Add a test to verify SMP configurations.
+      - apps/examples/rgbled:  Example using the RGB LED driver to drive an
+        RGB LED via PWM.  From Alan Carvalho de Assis.
+      - apps/examples/ostest:  Add a test of TLS.
+      - apps/examples/sched_note:  Add a simple example to exercise the
+        scheduler instrumentation logic.
+
+Bugfixes.  Only the most critical bugfixes are listed here (see the
+ChangeLog for the complete list of bugfixes and for additional, more
+detailed bugfix information):
+
+    * Core OS:
+
+      - Signals:  Move the list of signal actions from the TCB to the group
+        structure.  Signal handlers are not per thread but, rather, per task
+        group.  I know, I preferred it the other way too, but this is more
+        compliant with POSIX.
+      - Semaphores: Add an internal, non-standard interface to reset a
+        semaphore count.  This is sometimes needed by drivers in order to
+        recover from error conditions.  Were previously using sem_init()
+        which is both inappropriate and incorrect if the semaphore count is
+        negative.
+      - Low-Priority Work Queue:  Fix logic to find an IDLE worker thread;
+        the test for busy was backward.  From Linfei Chen.
+
+    * File System/Block Drivers:
+
+      - FAT:  Add an option to force all transfers to be performed
+        indirectly using the FAT file system's internal sector buffers.
+        This is a fix for the case where the user provided buffers are not
+        properly aligned for DMA (as with THTTPD).
+      - MTD:  Increase block size in mtd_geometry_s to 32-bits.
+
+    * Common Drivers:
+
+      - I2C:  Restructured the I2C interface as necessary to eliminate some
+        thread-safety issues inherent in the legacy I2C interface design.
+        This effects the interface definition, all I2C clients, and all low-
+        level I2C drivers.  I have used caution, but I still expect a change
+        of this magnitude to introduce some errors. Any bug reports of bug
+        fixes will be much appreciated.
+      - I2C_RESET:  Eliminate up_i2creset().  It should not be a global
+        function; Now it is an I2C interface method.
+      - PCA555:  Add logic to make the PCA555 driver thread safe.
+      - syslog: If syslog timestamping is enabled, don't try to get the time
+        if the timer hardware has not yet been initialized.
+      - AT24xx driver: Correct missing address calculation logic.  From Frank
+        Benkert.
+
+    * Networking:
+
+      - Networking drivers that support CONFIG_NET_NOINTS:  Fix a race
+        condition that can cause the TX poll timer to stop running.  From
+        Manuel Stuhn.
+      - Timer Poll:  Fix some logic when there are multiple network
+        interfaces.  In this case, TCP timeout events can really only being
+        processed when the poll from the correct device is received.
+
+    * Atmel SAMV7 Drivers:
+
+      - SAMV7 USB HS device:  The USB driver has had some issue that would
+        occasionally cause loss of packets.  Back last December, a fix was
+        put in for this but the fix apparently worsens the problem; now
+        causing hangs.  The basic problem is that the number of busy banks
+        (NBUSYBKS) status is not real time but is delayed.  This was fixed;
+        now when the DMA completes and NBUSYBKS > 0, the NBUSYBK is
+        interrupt is enabled and the operations are deferred until NBUSYBKS
+        is truly zero.
+
+    * Tools:
+
+      - tools/testbuild.sh:  .config files were not being updated because
+        (a) kconfig-conf was being called in the wrong directory and (b)
+        apps/Kconfig had not yet been created.  Now uses 'make
+        olddefconfig'.
+
+    * Applications: apps/system:
+
+      - apps/system/i2c:  The I2C tool now obeys it OS interfacing: it now
+        uses an I2C character driver to access the I2C bus.
+      - apps/system/cdcacm, usbmsc, and composite:  Use new boardctl()
+        instead of calling directly in the OS when possible.
+
+    * Applications: apps/netutils:
+
+      - apps/netutils/dhcpd: DHCPD no longer calls directly into the OS but
+        uses the new network IOCTL commands to modify the ARP table.
+
+    * Applications: apps/modbus:
+
+      - apps/modbus/nuttx/portserial.c:  Was not returning an error on
+        failure to open the device driver.  From Olololshka kokoko.
+
+    * Applications: apps/examples:
+
+      - apps/examples/usbserial, composite, usbterm:  Use new boardctl()
+        instead of calling directly in the OS when possible.  There are
+        still a few bad OS calls for USB device interfaces that do not yet
+        have boardctl() commands.
+
+    * Applications: apps/platform:
+
+      - Moved C++ initialization logic out of the RTOS and into the
+        application space, specifically to apps/platform/board, where it
+        belongs.
diff --git a/_releases/7.16.md b/_releases/7.16.md
new file mode 100644
index 0000000..c7eb3d7
--- /dev/null
+++ b/_releases/7.16.md
@@ -0,0 +1,403 @@
+---
+layout: page
+released: true
+apache: false
+title: 7.16
+date: 2016-06-01
+summary: >
+    Release v7.16
+
+artifact-root: "https://bitbucket.org/nuttx/nuttx/downloads/"
+checksum-root: ""
+key-file: ""
+
+source-os-dist:
+    - "nuttx-7.16.tar.gz"
+source-app-dist:
+    - "apps-7.16.tar.gz"
+
+---
+
+
+<!--
+{% comment %}
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to you under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+{% endcomment %}
+-->
+
+{% include JB/setup %}
+
+NuttX-7.16 Release Notes
+------------------------
+
+The 116th release of NuttX, Version 7.16, was made on June 1, 2016,
+and is available for download from the Bitbucket.org website.  Note
+that release consists of two tarballs:  nuttx-7.16.tar.gz and
+apps-7.16.tar.gz.  These are available from:
+
+    https://bitbucket.org/nuttx/nuttx/downloads
+    https://bitbucket.org/nuttx/apps/downloads
+
+Both may be needed (see the top-level nuttx/README.txt file for build
+information).
+
+Additional new features and extended functionality:
+
+    * Core OS:
+
+      - Power Management: Add activity domain to all PM interfaces and
+        driver callbacks.  If CONFIG_PM_NDOMAINS == 1, then the legacy
+        behavior is preserved.  If CONFIG_PM_NDOMAINS > 1, then multiple
+        PM domains are supported.  This will allow separate control for
+        certain power management groups.  For example, a network can be
+        shut down without affect an ongoing UI (and vice versa).
+      - board_app_initialize():  board_app_initialize() now accepts an
+        argument that may be used to support initialization in different
+        configurations.
+
+    * File System and Block and MTD Drivers:
+
+      - N25Qxxx: Add MTD support for Micron N25Qxxx family of QSPI flash.
+        From Dave (ziggurat29).
+      - SST26F:  Add an MTD driver for SST26F spi/qspi flash devices (SPI
+        mode only).  From Sebastien Lorquet.
+      - File Descriptor Detach: Add logic to detach a file structure from a
+        file descriptor. This is for use only within the OS.  It permits an
+        open file or driver to be used across multiple threads.
+
+   * Networking and Network Drivers:
+
+      - listen()/accept():  Separate out psock_listen() and psock_accepti()
+        for internal, thread independent OS usage (i.e., without a socket
+        descriptor).
+      - VNC Server:  Add support for a VNC server.  This logic is code
+        complete and functional, but not well tested.
+
+    * Graphics and Graphic Drivers:
+
+      - Framebuffer driver:  Add a display number to each interface in order
+        to support multiple display devices.
+      - VNC Server:  Add support for a VNC server.  This logic is code
+        complete and functional, but not well tested.
+      - LCD Backpack: Add support for PCF8574 LCD Backpack driver. This
+        driver supports an interface board that is based on the PCF8574 I/O
+        expander and supports the HD44780-based (or compatible) LCD modules.
+        There are a myriad of different vendors of such, but they are
+        principally the same, save wiring and minor features like jumpers
+        for I2C addresses. This driver supports known and unknown variants.
+        From Dave (ziggurat29).
+
+    * Common Device Drivers:
+
+      - RTC:  Simplify the RTC interface.  The old interface was way too
+        complex and was not fully implemented anywhere.
+      - BH1750FVI:  Add a character driver for Rohm Ambient Light Sensor
+        BH1750FVI.  From Alan Carvalho de Assis.
+      - CAN:  Improve CAN error reporting. From Frank Benkert.
+      - aes.h:  Modifications to the crypto API needed for LPC43xx.  From
+        Alexander Vasiljev.
+      - ADC:  Interface no longer uses global adc_receive() call.  Added a
+        new bind() method to the ADC interface.  Now the ADC upper half
+        driver will register its receipt-of-data callback.  This change
+        allows the ADC lower half driver to be used with a differ ADC upper
+        half.
+
+     * Simulation Platform:
+
+      - Linux Host Networking:  Enhance networking support for the
+        simulation under Linux. Includes updated support for Linux TUN/TAP,
+        and the addition of support for Linux bridge devices.  From Steve.
+
+    * ARMv7-A, ARMv7-R, and ARMv7-M:
+
+      - ARMv7-M:  Convert more assembly language files for use with the IAR
+        toolchain.  From Kha Vo.
+      - ARMv7-A:  Complete re-design of SMP-related logic to initialize each
+        CPUn, n > 0, when CONFIG_SMP=y.
+
+    * Atmel SAMV7:
+
+      - Add a JTAG config and ERASE config to Kconfig to set the
+        CCFG_SYSIO SYSIO Pins.  From David Sidrane.
+      - System Reset: Add the up_systemreset interface to the samv7 arch.  The
+        approach is slightly different in that: 1) It enables ARCH_HAVE_RESET
+        and allows the user to set if, and for how long, to drive External
+        nRST signal. It also does not contain a default board_reset, as that
+        really should be done in the config's src if CONFIG_BOARDCTL_RESET
+        is defined.  From David Sidrane.
+
+    * Atmel SAMV7 Boards:
+
+      - SAMV71-XULT: Add configuration(s) that were be used to verify VNC
+        graphics output as well as mouse and keyboard input.
+
+    * NXP Freescale i.MX6 Boards:
+
+      - Sabre-6Quad:  The basic i.MX6 port is complete.  This is a minimal
+        port at present and probably still has some as-of-yet-undiscovered
+        issues.
+      - Sabre-6Quad: Basic SMP NSH configuration is now working.  But this
+        is probably only because the SMP test case does not stress the
+        logic.  There are know outstanding SMP issues as noted in the
+        Sabre-6Quad README.txt file.
+
+    * NXP Freescale LPC43xx:
+
+      - LPC4337jet100: Add definitions for the LPC4337jet100 chip.  From
+        Alexander Vasiljev.
+
+    * NXP Freescale LPC43xx Drivers:
+
+      - AES:  Add AES support.  From Alexander Vasiljev.
+
+    * STMicro STM32:
+
+      - STM32 L4: Add configuration options to allow SRAM2 to be used for
+        heap, or not at all, and to zero-initialize it on OS start, or not
+        at all. From Dave dev@ziggurat29.com.
+      - STM32 L4: Add support for HSE and MSI clocks, and auto trim of MSI
+        to LSE (needed for USB).  From Dave (ziggurat29)
+      - STM32 L4: Add support for unique id function to arch; modified board
+        to support unique id boardctl.  From Dave (ziggurat29)
+
+    * STMicro STM32 Drivers:
+
+      - STM32 F4 RTC: Add a custom RTC driver with support for alarms.  From
+        Neil Hancock.
+      - STM32 L4 QSPI: Add a QSPI driver with DMA support and (optional
+        memory mapped mode support. From Dave ziggurat29).
+      - STM32, STM32 L4, and STM32 F7 Serial:  Add support for compliant 
+        SD-style breaks. From David Sidrane.
+      - STM32 L4 CAN: Add CAN support for STM32L4.  From Sebastien Lorquet.
+      - STM32 1-Wire:  Add support for a custom 1-wire driver.  The serial
+        driver already supports a 1-wire interface, but this driver uses the
+        same serial logic to implement a lower half driver much like the
+        I2C lower half driver.  From Aleksandr Vyhovanec.
+      - STM32 L4 SPI: Add support for SPI 4 and 5 on stm32f411 chips. From
+        Konstantin Berezenko.
+      - STM32 ADC: Allow omitting use of channels in a lower part of PWM.
+        From Pierre-noel Bouteville.
+      - STM32 L4 I2C: Get I2C working for STM32L4.  From Dave (ziggurat29).
+
+    * STMicro STM32 Boards:
+
+      - STM3220G-EVAL:  Add support for both the IAR and uVision GCC IDEs.
+        From Kha Vo.
+      - STM32F429I Discovery:  Add support for the uVision GCC IDE.   From
+        Kha Vo.
+      - STM32F4 Discovery: Integrate BH1750FVI driver in the STM32F4 Discovery
+        board.  From Alan Carvalho de Assis.
+      - STM32L476VG Discovery:  Add support for QSPI based N25Qxxx flash.
+        From Dave (ziggurat29)
+      - STM32L476VG Discovery: Add board ioctls for allowing user application
+        to cause QSPI memory mapped mode to be engaged and disengaged.  Also
+        partitioned QSPI flash for file system and other (eventually xip).
+        From Dave (ziggurat29)
+      - Nucleo-144: Basic port for the Nucleo-144 board with the STM32F746ZG
+        MCU.  From Kconstantin Berezenko.
+      - STM32F103 Minimum: Add support for this minimual STM32F103CBT6 "blue"
+        board.  From Alan Carvalho de Assis.
+      - STM32F411E Discovery:  Add basic configuration for stm32f411e-disco
+        board with STM32F411VE chip.  From Konstantin Berezenko.
+
+    * Build/Configuration System:
+
+      - Moved NuttX repository to https://bitbucket.org/nuttx/nuttx.
+        Eliminated use of sub-modules.
+      - Add support for the IAR toolchain for the limited case of the ARMv7-M
+        architecture and the STM32 chip.  From Aleksandr Vyhovanec.
+      - make export: Pass top-level make to the script to allow -j greater
+        than 1.  From David Sidrane.
+      - fs/Kconfig:  Allow CONFIG_FS_WRITABLE to be manually selectable. This
+        is needed when there are no writable file systems, but write support
+        is still needed in BCH or FTL.
+      - arch/*/Makefile: Add definitions that can be overrided to use GCC
+        instead of LD in the final link.  From Paul Alexander Patience .
+
+    * Applications: apps/netutils:
+
+      - apps/netutils/esp8266:  ESP8266 driver application.  From Pierre-noel
+        Bouteville.
+
+    * Applications: apps/examples:
+
+      - apps/examples/alarm:  Add a simple test of the ALARM iotcl calls of
+        the RTC driver.
+      - apps/examples/nximage:  Add a configuration option to select
+        greyscale.
+
+    * Platforms: apps/platform:
+
+      - apps/platform/nucleo-144: Add platform files for NUCLEO-144
+        (NUCLEO-F746ZG).  From Mark Olsson.
+      - apps/examples/media:  You can now override the default device driver
+        path by providing an alternal path on the command line.  From
+        Sébastien Lorquet.
+
+Works-In-Progress:
+
+    * IEEE802.14.5/6LowPAN.  Hooks and framework for this effort were
+      introduced in NuttX-7.15.  Work has continued on this effort on
+      forks from the main repositories, albeit with many interruptions.
+      The completion of this wireless feature will postponed until at
+      least NuttX-7.17.
+
+    * i.MX6 SMP.  Partially functional, but there is more that still
+      needs to be done.
+
+Bugfixes.  Only the most critical bugfixes are listed here (see the
+ChangeLog for the complete list of bugfixes and for additional, more
+detailed bugfix information):
+
+    * Core OS:
+
+      - Various places:  Search for places where a stray semicolon following
+        an if condition cause the if body to be executed unconditionally.
+        Fixes in all SAM DMA logic, unionfs, OS signalling logic, and others.
+      - enter/leave_critical_section() may attempt to access task lists
+        before they have been initialized in the SMP configuration.
+
+    * File System/Block Drivers:
+
+      - SMART MTD:  Return code of smart_scan not checked, can cause success
+        result in failure case, leading to 'dev' pointer being invalid. From
+        Dave (ziggurat29)
+      - mount: Fix a backward debug assertion.  Noted by David Sidrane.
+
+    * Common Drivers:
+
+      - NRF24L01: Fix backward calculation of relative frequency.  Noted by
+        Henry Zhang.
+      - PCA9555 I/O expander: Fix an error in the PCA9555 driver: Under
+        certain error conditions, interrupts were not being re-enabled.
+        Sebastien Lorquet.
+      - ADS1255: Must not do SPI access from interrupt handler.  Use the
+        worker thread instead.  Must also lock the SPI bus before using it.
+      - Several SPI-based drivers modified.  All drivers that use SPI must
+        call SPI_LOCK and SPI_UNLOCK.  This is not optional.
+      - MS583730:  Fix a bug in crc computation for ms583730. Implement
+        POSIX read.
+
+    * Atmel SAMV7:
+
+      - Fix typo in MATRIX register definitions.  From Stefan Kolb.
+      - SAMV7 Tickless Mode: This is a fix to a problem in the handling of
+        the oneshot timer. Due to a wrong assumption concerning the behavior
+        directly after the start of the timer/counter the function
+        sam_oneshot_cancel(…) calculates the wrong remaining time. The code
+        assumes that the counter register is zero directly after the start
+        of the timer, but this is not true. To start the time/counter a
+        software trigger is invoked, this trigger starts the timer/count and
+        sets the counter register to zero, but the reset of the counter
+        register is not performed instantly. According to the datasheet:
+        "The counter can be reset by a trigger. In this case, the counter
+        value passes to zero on the next valid edge of the selected clock."
+        Thus the counter is set to zero between 0 and USEC_PER_TICK
+        microseconds after the clock was started.
+        In my fix I use the freerun count value to determine if at least one
+        tick passed since the start of the timer and thus if the value of
+        the oneshot counter is correct. I also tried to use the function
+        up_timer_gettime(…) to achieve this but, at least if compiled with
+        no optimization the problem vanishes without using the value of the
+        function, the function call takes too long.
+        Another problem treated in the fix is that if the oneshot timer/counter
+        is canceled, we only know the remaining time with a precision of
+        USEC_PER_TICK microseconds. This means the calculated remaining time
+        is between 0 and USEC_PER_TICK microseconds  too long. To fix this I
+        subtract one tick if the calculated remaining time is greater than
+        one tick and otherwise set the remaining time to zero. By doing so
+        the measured times are much more precise as without it.  From Stefan
+        Kolb.
+
+    * Atmel SAMA5:
+
+      - SAMA5:  Stefan Kolb's change to the SAMV7 Oneshot Timer should also
+        be applied to the SAMA5 oneshot time since the drivers are identical.
+
+    * Atmel SAM3/4:
+
+      - SAM3/4:  Stefan Kolb's change to the SAMV7 Oneshot Timer should also
+        be applied to the SAM3/4 oneshot time since the drivers are identical.
+
+    * Atmel SAMV7 Drivers:
+
+      - SAMV7 TWIHS (as well as SAM3/4 and SAMA5:  Ensure that the TWIHS
+        (i2c) hw get's its clock set when the sequence of
+        sam_i2cbus_initialize(), sam_i2cbus_uninitialize(), then
+        sam_i2cbus_initialize() or twi_reset() is called.  I found this a
+        while back in the stm32 family, so there may be more arch-es with
+        this sort of bug. I suppose any driver that has the notion of "do
+        not set the freq if it is already set" could be suspect.  From David
+        Sidrane.
+      - USBHS Device: Remove disabling of whole USB on suspend of USBHS.
+        This fix removes the disabling of the whole USB peripheral on
+        suspend interrupt. Its enough to freeze the clock instead. When
+        disabling the whole peripheral, the next wakeup-interrupt comes up
+        with an disabled clocking. The unfreeze clock has no effect, because
+        the master clock is disabled. This makes all registers, including
+        the IDR unwriteable and the IRQ falls in an endless loop blocking
+        the whole system. Furthermore the disabling of the peripheral clock
+        prevents hotplugging or reconnecting the USB.  From  Frank Benkert.
+      - MCAN: Fix missing unlock of device in MCAN mcan_txempty().  From
+        Frank Benkert.
+
+    * STMicro STM32:
+
+      - STM32 L4 Clocking: Problem with resetting backup domain clears
+        clocking options set up before in *rcc.c use INITS flag to avoid
+        magic reg value to detect power up reset state of RTC correct a
+        problem clearing interrupt flags (they weren't) which prevented an
+        alarm from ever being used more than once per reset cycle.  From
+        Dave (ziggurat29)
+
+    * STMicro STM32 Drivers:
+
+      - STM32L4 SPI: That STM32Lr SPI driver is quite different. They now
+        handle frames of arbitrary size between 4 and 16 bits. It was broken
+        before a new bit has to be set (RX fifo threshold) to handle <= 8-bit
+        transactions. If not set, the default is 16-bit packed >=8-bit
+        frames and the RXNE bit is never set (it is set when 16-bits are
+        received). weird things as always. This also add 8-bit access
+        routines to the data register, because a 16-bit access to the data
+        register when the frame size is below 9 bits is interpreted as a
+        packed dual frame exchange. Sebastien Lorquet.
+      - STM32:  Correct some bad commits that broke the LTDC display example.
+        From Marco Krahl.
+      - STM32 F4 RTC: Fix logic in F4 RTCC driver that prevent ALARM
+        interrupt.  From Neil Hancock.
+      - STM32 F1 ADC: Fix STM32 ValueLine ADC IRQ number selection. From
+        David Sidrane.
+
+    * STMicro STM32 Boards:
+
+      - STM32F429I Discovery:  Correct some bad commits that broke the LTDC
+        display example.  From Marco Krahl.
+
+    * TI Tiva:
+
+      - GPIO Interrupts: Fix a bug of GPIO falling-edge interrupt for tiva.
+        From Young.
+
+    * C Library:
+
+      - math: Add a NAN test on 'x' in asin function of lib_asin.c. Suggested
+        by Pierre-noel Bouteville.
+
+    * Build/Configuration System:
+
+      - Several Makefiles: Add .PHONY definitions to prevent 'clean up to date'
+        message weirdness when 'make clean' is done with no .config or
+        Make.defs file.
diff --git a/_releases/7.17.md b/_releases/7.17.md
new file mode 100644
index 0000000..172372f
--- /dev/null
+++ b/_releases/7.17.md
@@ -0,0 +1,737 @@
+---
+layout: page
+released: true
+apache: false
+title: 7.17
+date: 2016-08-27
+summary: >
+    Release v7.17
+
+artifact-root: "https://bitbucket.org/nuttx/nuttx/downloads/"
+checksum-root: ""
+key-file: ""
+
+source-os-dist:
+    - "nuttx-7.17.tar.gz"
+source-app-dist:
+    - "apps-7.17.tar.gz"
+
+---
+
+
+<!--
+{% comment %}
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to you under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+{% endcomment %}
+-->
+
+{% include JB/setup %}
+
+NuttX-7.17 Release Notes
+------------------------
+
+The 117th release of NuttX, Version 7.17, was made on July 25, 2016,
+and is available for download from the Bitbucket.org website.  Note
+that release consists of two tarballs:  nuttx-7.17.tar.gz and
+apps-7.17.tar.gz.  These are available from:
+
+    https://bitbucket.org/nuttx/nuttx/downloads
+    https://bitbucket.org/nuttx/apps/downloads
+
+Both may be needed (see the top-level nuttx/README.txt file for build
+information).
+
+Additional new features and extended functionality:
+
+    * File System and Block and MTD Drivers:
+
+      - drivers/mtd: Add a driver of IS25xP SPI flash devices.  Based on
+        sst25xx driver.  From Marten Svanfeldt.
+
+    * Networking and Network Drivers:
+
+      - Break out internal interface psock_ioctl().
+
+    * Common Device Drivers:
+
+      - PTYs: Added support for pseduo-terminals: Device drivers that can be
+        used for communications between tasks (usually with re-directed I/O).
+        Based on existing pipe logic.
+      - Button upper half driver:  Added support for poll().
+      - CAN:  Add support for poll. From Paul Alexander Patience.
+      - GPIO:  Add support for a simple GPIO driver.  It supports only pre-
+        configured input, output, and interrupting pins with basic input and
+        output operations.  Interrupt events can lead to notification via a
+        signal.
+      - I/O Expander: Shadow-Mode: The output- and configuration registers of
+        the IO-Expander are held in the microcontrollers memory and only
+        written to the IO-Expander.  This reduces bus traffic and is more
+        error-proof than the normal read-modify-write operation. Retry Mode:
+        If enabled and an error occurs while writing to the IO-Expander the
+        current transmission is automatically repeated once. From Michael
+        Spahlinger.
+      - Pipes/FIFOs:  Add support to allocating different sizes for pipe and
+        fifo buffers.  Adds mkfifo2() and pipe2() which are just like mkfifo()
+        and pipe(), but allow control of the size of the underlying, in-memory
+        circular buffer.  Move pipe() and mkpipe() to the C library, they are
+        no longer core OS interfaces.  Capability currenty used only by PTY
+        logic to support, configurable, smaller buffers for PTYs.
+
+    * SYSLOG/Debug Output:
+
+      - SYSLOG: Consolidated all SYSLOG logic in drivers/syslog.  Added an
+        abstraction layer that supports:  (1) redirection of SYSLOG outpout.
+        This is usually so that you can boot with one SYSLOG output but
+        transition to another SYSLOG output when the OS has initialialized,
+        (2) adds common serialization of interrupt output as a configuration
+        option.  Without this configuration setting, interrupt level output
+        will be asynchronous.  And (3) vsyslog is now a system call and is
+        usable with other-than-FLAT builds.
+      - SYSLOG: syslog() will now automatically redirect output to
+        lowsyslog() if called from an interrupt handler.
+      - Extended SYSLOG logic so that we can send SYSLOG output to a file.
+      - SYSLOG character device channel will now expand LF to CR-LF.
+        Controllable with a configuration option.
+      - Add a SYSLOG character device that can be used to re-direct output
+        to the SYSLOG channel (Not be be confused the the SYSLGO output to a
+        character device).
+      - Debug features are now enabled separately from debug output.
+        (1) CONFIG_DEBUG is gone. It is replaced with CONFIG_DEBUG_FEATURES.
+        (2) The macros dbg() and vdbg() have renamed as _err() and _info(),
+        respectively. This also applies to all of the variants as well,
+        XXdbg() and XXvdbg().  (3) Add a new debug level, _warn() (and
+        all variants XXwarn(), XXvwarn(), etc.). (4) Debug assertions can
+        now be enabled separately from debug output. (5) You can now enable
+        subsystem/device driver debug output at different output levels. For
+        example, CONFIG_DEBUG_FS no longer enables file system debug output
+        It enables general file system debug logic and enables selection of
+        CONFIG_DEBUG_FS_ERROR, CONFIG_DEBUG_FS_WARN, and CONFIG_DEBUG_FS_INFO.
+      - Since the SYSLOG layer now automatically handles low-level vs.
+        high-level output, the low-level (ll) variants of the debug macros
+        were eliminated.
+      - Reviewed all uses of *err().  These macro family should indicate
+        only error conditions.  Convert *err() to either *info() or add
+        ERROR:, depending on if an error is reported.
+      - _alert(): New debug macro: _alert().  This is high priority,
+         unconditional output and is used to simplify and standardize crash
+         error reporting.
+      - Many CONFIG_DEBUG_* options did not have matching macros defined in
+        include/debug.h.  Rather, there were various definitions scattered
+        throughout the sourse tree.  These were collected together and
+        centralized with single macro definitions in include/debug.h
+
+    * Simulation Platform:
+
+      - Added the simulated QSPI (N25Q) flash to the simulation and extened
+        flash simulation capabilities to run with MTD drivers based on config
+        options (currently m25p, sst26 and w25). From Ken Pettit.
+
+    * Atmel SAMV7 Drivers:
+
+      - SPI: SPI-Freq. 40MHz; VARSELECT; hw-features This change adds the
+        following improvements:
+
+          o Increase the allowed SPI-Frequency from 20 to 40 MHz.
+          o Correct and rename the "VARSELECT" option   This option was
+            included in the code as "CONFIG_SPI_VARSELECT" but nowhere
+            defined in a Kconfig file. The change renames it to
+            "CONFIG_SAMV7_SPI_VARSELECT" and corrects the implementation
+            according the datasheet of Atmel. In short, this option
+            switches the processor from "fixed peripheral selection"
+            (single device) to "variable peripheral selection" (multiple
+            devices on the bus).
+          o Add a new Function to the interface to control the timing and
+            delays of the chip according the ChipSelect lines. This function
+            can control the delay between the assertion of the ChipSelect and
+            the first bit, between the last bit and the de-assertion of the
+            ChipSelect and between two ChipSelects. This is needed to tune
+            the transfer according the specification of the connected devices.
+          o Add three "hw-features" for the SAMV7, which controls the behavior
+            of the ChipSelect:
+              - force CS inactive after transfer: this forces a (short) de-
+                assertion of the CS after a transfer, even if more data is
+                available in time
+              - force CS active after transfer: this forces the CS to stay
+                active after a transfer, even if the chip runs out of data.
+                Btw.: this is a prerequisit to make the LASTXFER bit working
+                at all.
+              - escape LASTXFER: this suppresses the LASTXFER bit at the end
+                of the next transfer. The "escape"-Flag is reset automatically.
+
+        From Frank Benkert
+      - TWISHS:  Driver improvements from Michael Spahlinger.
+      - GPIO-Driver fixed for Open-Drain Pins:
+
+          o sam_gpioread: Now the actual line level from the pin is read
+            back.   This is extremely important for Open-Drain Pins, which
+            can be used bidirectionally
+          o Re-Implemented twi_reset-function and enhanced it so it can be
+            called from inside the driver (see next point)
+          o Glitch-Filter: Added a configuration option to enable the twi-
+            built-in glitch filter
+          o Added a "Single Master Mode": In EMC Testing the TWI-Bus got
+            stuck because the TWI-Master detected a Multi-Master access (but
+            there is no second master). With the option "Single Master" we
+            detect these events and automatically trigger a twi_reset. We
+            also do an automatic recovery if a slave got stuck (SDA stays
+            low).
+
+        With the above changes I²C-Bus reliability in harsh environments (eg.
+        EMC) is greatly improved. The small change in the GPIO-Driver was
+        necessary because otherwise you cannot read back the correct line
+        status of Open-Drain Outputs and this is needed by the twi_reset
+        function.  From Michael Spahlinger
+
+    * NXP Freescale LPC43xx Drivers:
+
+      - EMC: Extend LPC43xx EMC code to support SDRAM on a dynamic memory
+        interface.  From Vytautas Lukenskas.
+
+    * NXP Freescale Kinetis:
+
+      - Kinetis K64:  Add basic support for the K64 family.  I leveraged the
+        changes from https://github.com/jmacintyre/nuttx-k64f and merged
+        into the existing kinetis code  with a lot of changes and additions
+        (like pin multiplexing definitions).
+
+    * NXP Freescale Kinetis Drivers:
+
+      - Add a Kinetis USB device controller driver.  Derived from the pic32mx
+        usb driver, which uses the same usb controller.  From kfazz.
+      - Kinetis pwm support, based on the KL pwm driver.  From kfazz.
+      - Kinetis Ethernet:  Add support for the KSZ8081 PHY.
+      - Kinetis Ethernet:  Modified Ethernet driver to try all PHY addresses
+        and then only fail if the driver cannot find a usable PHY address.
+        This means that you no longer have to specific the PHY address in
+        advance.
+      - Kinetis Ethernet:  Add support for CONFIG_NET_NOINTS.  The driver no
+        longer runs the networking at interrupt level but can defer interrupt
+        work to the high-priority work queue.
+
+    * NXP Freescale Kinetis Boards:
+
+      - Teensy-3.x:  Add USB support and a usbnsh configuration.
+        From kfazz (2016-06).
+      - Freedom-K64F: Add support for the NXP Freedom-K64F board at 120MHz.
+        This is primarily the work of Jordan Macintyre.  I leveraged this
+        code from https://github.com/jmacintyre/nuttx-k64f which was, itself,
+        a leverage from the old K60 TWR configuration.  This includes
+        significant corrections (LEDs, buttons, README, etc) and extensions
+        and updates to match more recent BSPs.
+      - Freedom-K64F:  Added a configuration that supports networking.
+
+    * STMicro STM32:
+
+      - STM32 F1-4: Added support for the STM32F105R.  From Konstantin
+        Berezenko.
+      - STM32 F4: Added support for the STM32F76xxx and STM32F77xx
+        families. From David Sidrane.
+      - STM32 F1-4:  Add support for Tickless mode (two timer
+        implementation).  From Max Neklyudov.
+      - STM32 L4: Add support for tickless OS, and incidentally timers,
+        PWM, oneshot, free-running....  From ziggurat29.
+
+    * STMicro STM32 Drivers:
+
+      - STM32 F1-4: Add the up_getc() function to STM32 in order to support
+        the minnsh configuration.  From Alan Carvalho de Assis.
+      - STM32 F7: Add SPI driver.  From David Sidrane.
+      - STM32 F7: Add SPI, I2C, and ADC drivers.  From Lok Tep.
+      - STM32 L4: Add ioctls to set/get CAN bit timing in stm32l4.  Add
+        ioctl hooks to allow future management of can id filters. From
+        Sebastien Lorquet.
+      - STM32 L4: Add some CAN mode IOCTL calls.  These will be useful for
+        device autotest when the application boots.  They are redundant
+        with the CONFIG_CAN_LOOPBACK option, which can now just be
+        interpreted as a default setting.  From Sebastien Lorquet.
+      - STM32 F1-4: Port STM32L4 CAN IOCTLs to STM32.  From Sebastien Lorquet.
+      - STM32 L4: Implementation of loopback IOCTLs.  From Sebastien
+        Lorquet.
+      - STM32 F7: Added SDMMC1 support for stm32F7 74-75.  From Lok Tep.
+      - STM32 F7: Add USB support.  From Lok Tep.
+      - STM32 F7: Added PWR, RTC, and BBSRAM support for stm32f7. From David
+        Sidrane.
+      - STM32 F7: Added STMF7xxx RTC.  From David Sidrane.
+      - STM32 F7: Added STM32F7 DBGMCU.  From David Sidrane.
+      - STM32 L4: Port support for both RX FIFOs from STM32 CAN.  From Paul
+        Alexander Patience.
+
+    * STMicro STM32 Boards:
+
+      - Added a minnsh configuration for the STM32F103-Minimum board.  From
+        Alan Carvalho de Assis .
+      - Added support for the Nucleo-F767ZI board. From David Sidrane.
+      - Nucleo-144/Nucleo-F767ZI:  Add test for STM32 F7 SPI.  From David
+        Sidrane.
+      - Nucleo-144: Added SDMMC support to Nucleo-144. From David Sidrane.
+      - Olimex STM32-E407:  Add support for Olimex STM32 E407 board.  From
+        Mateusz Szafoni.
+      - Nucleo-144: Added USB OTG device to Nucleo-144.  From David Sidrane.
+      - Nucleo-144: Added bbsram test to Nucleo-144.  From David Sidrane.
+      - STM32F4 Discovery: add CAN support for STM32F4 Discovery.  From
+        Matthias Renner.
+      - STM32F4 Discovery:  added a canard configuration files.  From
+        Matthias Renner.
+      - STM32F4 Discovery: Add FPU support for ostest for the STM32F4
+        Discovery platform. From David Alessio.
+      - STM32L476 Discovery: Update stm32l476 disco to include init code for
+        smartfs and nxffs for cases where those fs are included in build.
+        From ziggurat29.
+
+    * C Library/Header Files:
+
+      - include/assert.h: Check if NDEBUG is defined.  From Paul Alexander
+        Patience.
+      - assert.h: Define static assert for C++ usage.  From Paul Alexander
+        Patience.
+      - Add crc64 support. From  Paul Alexander Patience.
+      - hex2bin:  Move the portable library portion of apps/system/hex2bin
+        the C library with the OS internals.  It is used in certain internal
+        boot-loader builds.
+      - Add raise().
+      - libm: This change should significantly improve the performance of
+        single precision floating point math library functions. The vast
+        majority of changes have to do with preventing the compiler from
+        needlessly promoting floats to doubles, performing the calculation
+        with doubles, only to demote the result to float. These changes only
+        affect the math lib functions that return float. From David Alessio.
+      - printf(): If there are no streams, let printf() fall back to use
+        syslog() for output.
+      - Move pipe() and mkpipe() to nuttx/libc, they are no
+        longer core OS interfaces.  Capability currenty used only by PTY logi
+        to support, configurable, smaller buffers for PTYs.
+      - Move driver-related files from include/nuttx to include/nuttx/drivers.
+        Move driver related prototypes out of include/nuttx/fs/fs.h and into
+        new include/drivers/drivers.h.
+      - include /nuttx/lib: Move library-related files from include/nuttx to
+        include/nuttx/lib.
+
+    * Build/Configuration System:
+
+      - Custom Board Configuration: Add logic to support custom board
+        directories that include a Kconfig file.  During the context phase
+        of the build, any Kconfig file in the custom board directory is
+        copied into configs/dummy, replacing the existing Kconfig file with
+        the target Kconfig file.
+      - Remove the includes/apps link to apps/include.  It is no longer
+        used.  From Sebastien Lorquet.
+
+    * Tools:
+
+      - tools/tesbuild.sh will now build NxWM configurations.
+
+    * Appplication Build/Configuration System:
+
+      - Change to the way that apps/ Kconfig files are generated in
+        order to better support reuse of the apps/ directory in NuttX
+        products.  Changes include: Make the full tree use wildcards
+        make.defs, Add empty preconfig rules to 'leaf' makefiles, Use
+        directory.mk for recursive dir makefiles, Individual app kconfig
+        fixes, Recursive Kconfig autogeneration, Add kconfig files for
+        pcode and tiff, and fix a gitignore rule,  From Sébastien Lorquet.
+      - apps/include directory structure reorganized.  There are no longer
+        any header files in the apps/include/. directory.  Rather, sub-
+        directories were added to match the partitioning of apps/ sub-
+        directories and the header files were moved into the appropriate
+        sub-directory.  This change is intended to help with some changes
+        being considered by Sébastien Lorquet.
+      - Call all includes from <apps/bla/bla.h> to "bla/bla.h". From Sebastien
+        Lorquet.
+      - Add apps/include to include path in top-level Make.defs file.
+
+    * Applications: apps/nshlib:
+
+      - Make NSH net-initialization be a configuration option. From Marten
+        Svanfeld.
+      - Add NTP client initialization in NSH network startup logic.  From
+        David S. Alessio .
+      - 'ps' command now prints out the stack usage if stack coloration is
+        enabled.  From Frank Benkert.
+      - Allow stack usage to be disabled on constrained systems. From David
+        Sidrane.
+
+    * Applications: apps/netutils:
+
+      - NTP Client:  Add retries.  From David S. Alessio.
+      - NTP Client:  The NTP client will now optionally use pool.ntp.org as
+        the NTP server; and reset the retry count upon success -- more robust.
+        From David Alessio.
+      - ESP8266: Add logic to set the BAUD rate.  From Pierre-noel Bouteville.
+      - ESP8266: In Kconfig, select ARCH_HAVE_NET when NETUTILS_ESP8266 is
+        selected.  This allows, among other things, support for network debug
+        output.  From Pierre-noel Bouteville.
+
+    * Applications: apps/fsutils:
+
+      - flash_eraseall: IOCTL wrapper for MDCIO_BULKERASE command.   Was in
+        nuttx/drivers/mtd.  Moved to apps/fsutils because the call directly into
+        the OS was incorrect.
+
+    * Applications: apps/canutils:
+
+      - canlib: Basic CAN utility library. From Sebastien Lorquet.
+
+    * Platforms: apps/system:
+
+      - flash_eraseall: Now uses the IOCTL wrapper at apps/fsutils/flash_eraseall.
+
+    * Platforms: apps/platform:
+
+      - Add platform files for Olimex STM32 E407.  From Mateusz Szafoni.
+
+    * Applications: apps/examples:
+
+      - apps/examples/canard:  Add canard example application.  From
+        Matthias Renner.
+      - apps/examples/pty_test: PTY test program.  From Alan Carvalho de
+        Assis.
+
+Works-In-Progress:
+
+    * IEEE802.14.5/6LowPAN.  Hooks and framework for this effort were
+      introduced in NuttX-7.15.  Work has continued on this effort on
+      forks from the main repositories, albeit with many interruptions.
+      The completion of this wireless feature will postponed until at
+      least NuttX-7.18.
+
+    * i.MX6 SMP.  Partially functional, but there is more that still
+      needs to be done.
+
+Bugfixes.  Only the most critical bugfixes are listed here (see the
+ChangeLog for the complete list of bugfixes and for additional, more
+detailed bugfix information):
+
+    * Core OS:
+
+      - semaphores: Need to set errno to EINVAL on errors in sem_post()
+        and sem_wait(). From Paul Alexander Patience.
+
+    * File System/Block Drivers/MTD Drivers:
+
+      - Several MTD FLASH drivers nullify the freed 'priv' structure and
+        failed to return NULL as stated in the comments. Result, will
+        operate on a NULL pointer later.  Noted by David Sidrane.
+      - VFS ioctl().  Per comments from David Sidrane, file_ioctl() should
+        not return succeed if the ioctl method is not supported.  It
+        probably should return ENOTTY in that case.
+      - SST26 Driver: Before accessing the sst26 flash, the "Global Unlock"
+        command must me executed, which I do in the sst26 driver.  BUT re-
+        reading the datasheet, the WREN instruction is required to enable
+        the execution of this command. This was not done. I have no idea how
+        the driver currently works except by chance. The writes should never
+        happen at all, the flash is half-enabled!  From Sebastien Lorquet.
+      - N25Qxx Driver: Alter the notion of 'blocksize' to be equivalent to
+        'flash write page size' in order to align with assumptions in the
+        smartfs driver (at least, maybe other things do as well).  Correct a
+        bug that was previously masked by having blocksize=eraseblocksize
+        which would cause buffer overflows and delicious hardfaults.
+        Trivial spelling changes in comments, etc.  From ziggurat29.
+      - SmartFS: Fix a 32-byte memory leak.  From Ken Pettit.
+      - SMART MTD layer: Fixes freesector logic error when sectorsPerBlk=256,
+        adds DEBUGASSERT for invalid geometry and additional memory debug
+        logic.  Also fixes the dangling pointer on error bug.  From Ken
+        Pettit.
+
+    * Common Drivers:
+
+      - USB CDC/ACM Device Class: cdcacm_unbind leaks write request objects.
+        This arises due to freeing the bulk IN endpoint before the loop
+        that frees the requests via cdcasm_freereq.  That function checks
+        the parameters and skips the freeing if either is NULL.  Freeing
+        the bulk IN enpoint will cause the first param to be NULL, thereby
+        bypassing the free operation.  To fix, I moved the release of the
+        bulk IN endpoint until after to loop (much as was the case for the
+        OUT and read requests, which did not exhibit the problem).  From
+        ziggurat29.
+      - Pipes and FIFOs: Add missing configuration for pipe ring buffer
+        size.  From Frank Benkert.
+      - UART 16550: Handle when CONFIG_SERIAL_UART_ARCH_IOCTL is not
+        enabled. From Heath Petersen.
+      - Common Serial Upper Half:  Fix a race condition noted by Stefan
+        Kolb.  Between the test if the TX buffer is full and entering a
+        critical section, bytes may be removed from the TX buffer making
+        the wait unnecessary.  The unnecessary wait is an inefficiency,
+        but not really a problem.  But with USB CDC/ACM it can be a problem
+        because the entire TX buffer may be emptied when we lose the race.
+        If that happens that uart_putxmitchar() can hang waiting for data
+        to be removed from an empty TX buffer.
+      - USB MSC Device Class: Add locks when removing request from queue.
+        From Wolfgang Reissnegger.
+      - USB MSC Device Class: Fix reversed logic on waiting for SCSI thread
+        start.  The scsi thread was waiting for the wrong condition.
+        However, this was masked by the fact that the code creating the
+        scsi thread was also holding usbmsc_scsi_lock(priv) while
+        initializing data, hence this lock synchronized the scsi thread
+        start with init completion.  From Wolfgang Reissnegger.
+
+    * Graphics and Graphic Drivers:
+
+      - Correct conditional compilation in ST7565 LCD driver.  From Pierre-
+        noel Bouteville
+
+    * Networking:
+
+      - In both IPv6 and IPv4 incoming logic:  (1) Should check if the
+        packet size is large enough before trying to access the packet
+        length in the IP header.  (2) In the comparison between the IP
+        length and the full packet length, need to subtract the size of
+        he link layer header before making the comparison or we will get
+        false positives (i.e., the packet is really too small)
+      - TCP Networking: While working with version 7.10 I discovered a
+        problem in TCP stack that could be observed on high network load.
+        Generally speaking, the problem is that RST flag is set in
+        unnecessary case, in which between loss of some TCP packet and its
+        proper retransmission, another packets had been successfully sent.
+        The scenario is as follows:  NuttX did not receive ACK for some sent
+        packet, so it has been probably lost somewhere. But before its
+        retransmission starts, NuttX is correctly issuing next TCP packets,
+        with sequence numbers increasing properly. When the retransmission
+        of previously lost packet finally succeeds, tcp_input receives the
+        accumulated ACK value, which acknowledges also the packets sent in
+        the meantime (i.e. between unsuccessful sending of lost packet and
+        its proper retransmission). However, variable unackseq is still set
+        to conn->isn + conn->sent, which is truth only if no further
+        packets transmission occurred in the meantime.  Because of incorrect
+        (in such specific case) unackseq value, few lines further condition
+        if (ackseq <= unackseq)is not met, and, as a result, we are going to
+        reset label.  From Jakub Łągwa.
+
+    * ARMv7-M:
+
+      - ARM stack check: Fix double fault on IDLE task with stack size = 0.
+        From David Sidrane.
+
+    * Atmel SAMV7 Drivers:
+
+      - CAN: CAN Message Filtering fixed: (1) stdfilters didn't work because
+        the filter was never enabled (wrong number of bits to shift), and
+        (2) Filters were never used because the configuration register
+        cannot be written without using the initialization mode. Both bugs
+        are fixed by this change. Filtering has been tested with both
+        standard and extended identifiers and is now working properly. From
+        Michael Spahlinger.
+
+    * Atmel SAMA5:
+
+
+    * Atmel SAM3/4 Drivers:
+
+      - Fix some errors in AFEC header file.  From OrbitalFox.
+      - DAC: DACC_WPMR_WPKEY_MASK -> DACC_WPMR_WPKEY.  From Wolfgang
+        Reissnegge.
+      - Timer:  Fix ops check in TCIOC_STOP.  From Wolfgang Reissnegge.
+      - I2C: Fix reversed logic in twi_startmessage().  From Wolfgang
+        Reissnegger.
+      - SAM3/4 UDP: Fix handling of endpoint RX FIFO banks.  This fixes
+        a race condition where the HW fills a FIFO bank while the SW is
+        busy, resulting in out of sequence USB packets.
+
+    * Atmel SAMV7 Drivers:
+
+      - USBHS Device:  This change solves a problem which causes data loss
+        while sending data via USB. This problem is caused by an incorrect
+        handling of the endpoint state in the USB driver sam_usbdevhs.  This
+        leads under some circumstances to situations in which an DMA
+        transfer is setup while a previous DMA transfer is currently active.
+        Amongst other things I introduced the new endpoint state
+        USBHS_EPSTATE_SENDING_DMA for the fix.  To reproduce the problem, I
+        used a program which send as many data as possible via a CDC/ACM
+        device and verified the received data on the PC.  From Stefan Kolb.
+
+    * NXP Freescale Kinetis Drivers:
+
+      - Timers: Support up to 8 channels per timer.  From kfazz.
+
+    * NXP Freescale Kinetis Boards:
+
+      - Teensy 3.x clock fixes:  The High Gain bit in MCG_C1 was preventing
+        teensy from booting except after a programming session. The second
+        change doesn't appear to change any functionality, but complies with
+        restrictions in the k20 family reference manual on FEI -> FBE clock
+        transiions.  From kfazz.
+
+    * NXP Freescale LPC17xx Drivers:
+
+      - LPC17 Ethernet:  Needs to correctly ignore PHYID2 revision number
+        when comparing PHY IDs.
+
+    * NXP Freescale LPC43xx Drivers:
+
+      - Fix errors in GPIO interrupt logic.  From v01d (phreakuencies)
+      - Ethernet:  Correct auto-negotiation mode in the LPC43xx Ethernet.
+        From Alexander Vasiljev
+      - Writing zero to NVIC_IRQ_ENABLE has no effect.  Disable interrupts
+        with  NVIC_IRQ_CLEAR. From Paul Alexander Patience.
+      - SPIFI: If CONFIG_SPIFI_SECTOR512 undefined, lpc43_bwrite doesn't do
+        actual write (probably copy/paste errors). Still not sure about
+        current state of lpc43_spifi implementation, but for me NXFFS works
+        with this change.  From Vytautas Lukenskas.
+
+    * Qemu-i486:
+
+      - Fix qemu-i486/ostest/Make.defs test for M32.  From Heath Petersen.
+
+    * SiLabs EFM32 Drivers:
+
+      - Fix EFM32 FLASH conditional compilation.  From Pierre-noel
+        Bouteville
+      - Writing zero to NVIC_IRQ_ENABLE has no effect.  Disable interrupts
+        with  NVIC_IRQ_CLEAR. From Paul Alexander Patience.
+
+    * STMicro STM32:
+
+      - STM32 F1-F4:  In PWM driver, just update duty if frequency is not
+        changed and PSM started.  This removeis glitch or blinking when
+        only duty is frequently changed.  From Pierre-noel Bouteville.
+
+    * STMicro STM32 Drivers:
+
+      - STM32 F7: Fixed STM32F7 DMA stm32_dmacapable.  DMA working on SDMMC.
+        From David Sidrane.
+      - STM32 F1-F4 Timer Driver: Change calculation of per- timer pre-scaler
+        value.  Add support for all timers
+      - STM32 F1-F4: Correct conditional compilation in STM32 timer capture
+        logic.  From Pierre-noel Bouteville
+      - STM32 F1-F4: Fix STM32 DMA code and configuration for STM32F37X chips.
+        From Marten Svanfeldt.
+      - STM32 F1-F4: Fix compilation errors in debug mode of stm32_pwm.c.
+        From Konstantin Berezenko.
+      - STM32 F1-F4: Correct the CAN2 RX IRQ number for stm32f10xx chips.
+        From Konstantin Berezenko.
+      - STM32 F1-F4: Move backup domain reset to to earlier in the
+        initialization sequence (stm32_rcc.c() in order to avoid disabling
+        LSE during RTC initialiation.  From Alan Carvalho de Assis.
+      - STM32 F1-F4: When configuring a GPIO via stm32_configgpio() the
+        function will first set the mode to output and then set the initial
+        state of the gpio later on.  If you have an application with an
+        externaly pulled-up pin, this would lead to a glitch on the line
+        that may be dangerous in some applications (e.G. Reset Line for
+        other chips, etc).  This changes sets the output state before
+        configuring the pin as an output.  From Pascal Speck .
+      - STM32 F7: Apply Pascal Speck's GPIO STM32 change to STM32 L4.
+      - STM32 L4: Apply Pascal Speck's GPIO STM32 change to STM32 L4.
+        From Sebastien Lorquet.
+      - STM32 F7:  BUGFIX: PLLs IS2 and SAI P Calculation. From David
+        Sidrane.
+      - STM32 L4:  STM32 CAN fixes need to be backported to STM32L4 as well.
+      - STM32 F1-F4 and L4: Writing zero to NVIC_IRQ_ENABLE has no effect.
+        Disable interrupts with  NVIC_IRQ_CLEAR. From Paul Alexander
+        Patience.
+      - STM32 F7: STMF7xxx RTC: (1) Remove proxy #defines, (2) Ensure the
+        LSE(ON) etal are set and remembered in a) A cold start (RTC_MAGIC
+        invalid) of the RTC, and b) A warm start (RTC_MAGIC valid) of the
+        RTC but a clock change.  The change was needed because in bench
+        testing a merge of the latest's STM32  53ec3ca (and friends) it
+        became apparent that the sequence of operation is wrong in the
+        reset of the Backup Domain in the RCC code.  PWR is required before
+        the Backup Domain can be futzed with. !!!This Code should be tested
+        on STM32 and if needed rippled to the STM32 families.  From David
+        Sidrane.
+      - STM32 F1-F4: STM32 BBSRAM fixed (and formatted) flags.  From David
+        Sidrane.
+      - STM32 F7: STM32F7 BBSRAM fixed (and formatted) flags. From David
+        Sidrane.
+      - STM32 L4: Fix incorrect clock setup for LPTIM1.  From ziggurat29.
+      - STM32 F4/L4 RTC ALARM: were enabling interrupts too early in the
+        power-up sequence,  BEFORE the interrupt system was being
+        initialized.
+
+    * STMicro STM32 Boards:
+
+      - STM32 board.h: Fix STM32 timer input clock definitions.  From David
+        Sidrane.
+
+    * TI Tiva Drivers:
+
+      - Bug Fix in tiva_serial.c - UART5, UART6 and UART7 were not being
+        configured as TTYS0 for printing over serial console. From Shirshak
+        Sengupta.
+
+    * C Library/Header Files:
+
+      - include/signal.h:  Change type of SIG_ERR, SIG_IGN, ... to
+        _sa_handler_t.  The type void does not work with the IAR toolchain.
+        From Aleksandr Vyhovanec.
+      - crc16: fix error. From  Paul Alexander Patience.
+      - strtoul() and strtoull():  Fix errno settings required by function
+        definition.  Resolved Bitbucket Issue #1. From Sebastien Lorquet.
+
+    * Build/Configuration System:
+
+      - Build system: This change fixes a build problem that only occurs
+        when reconfiguring from Linux to Windows or vice-versa.  It is a
+        problem that was present but not usually experienced until two
+        things happened: (1) The pre_config target was added to run before
+        the menconfig operation and (2) the context target was added before
+        the pre_config target in order to set up the correct symbolic links
+        (in the apps/platform directory) needed by the pre_config target.
+        But then now if you start with a Linux system and run 'make
+        menuconfig' to switch to Linux, the context target will execute
+        first and set up POSIX style symbolic links before doing the
+        menuconfig.  Then after the menuconfig, the make will fail on
+        Windows if you are using a Windows native toolchain because that
+        native toolchain cannot follow the Cygwin- style symbolic links.
+        The fix here is to also execute the clean_context AFTER executing
+        menuconfig.  A lot more happens now:  It used to be that doing
+        'make menuconfig' only did the menuconfig operation.  Now it does
+        context, pre_config, menuconfig, clean_context.  Not nearly as
+        snappy as it used to be.
+      - Need to build the drivers/ directory even it file descriptors are
+        not supported.  There are things in the drivers/ directory that are
+        still needed (like SYSLOG logic).
+      - Remove all inclusion of header files from the apps/include
+        directory from NuttX core logic.  There should be no dependency on
+        logic within NuttX on logic within apps/.  This caused a lot of
+        reshuffling of logic:  binfmt pcode support, usbmonitor is now a
+        kernel thread, TZ/Olson database moved to libc/zoneinfo.
+
+    * Application Build/Configuration System:
+
+      - Make sure that APPNAME is defined in all Makefiles that generate
+        applications.  From Sebastien Lorquet.
+
+    * apps/builtins:
+
+      - apps/builtins: exec_builtin was not using the provided open flags.
+        As a result >> redirection was not working; it was treated the same
+        as >.
+
+    * apps/nshlib:
+
+      - apps/nshilib: PS Command: When Priority Inheritance is enabled, the
+        format of /proc/<PID>/status changes to show both the current
+        priority and the thread’s base priority.  This messes up the format
+        of cmd_ps. From David Alessio.
+
+    * apps/netutils:
+
+      - apps/netutils, uIP webserver:  Fix a data declaration in a header
+        file.
+
+    * apps/canutils:
+
+      - apps/canutils/libuavcan: Fix for recent change to STM32 timer
+        frequency definiitions.
+
+    * apps/examples:
+
+      - apps/examples/alarm: ioctl call was clobbering file descriptor.
+      - apps/examples/can: Some variables were not declared in all required
+        cases. From Sebastien Lorquet.
+      - apps/examples/media: media example was intended to take either a
+        command line argument, or a compiled-in default value from config.
+        However, the default was ignored, leading to confusing error
+        messages. From ziggurat29.
diff --git a/_releases/7.18.md b/_releases/7.18.md
new file mode 100644
index 0000000..7a406d9
--- /dev/null
+++ b/_releases/7.18.md
@@ -0,0 +1,560 @@
+---
+layout: page
+released: true
+apache: false
+title: 7.18
+date: 2016-10-08
+summary: >
+    Release v7.18
+
+artifact-root: "https://bitbucket.org/nuttx/nuttx/downloads/"
+checksum-root: ""
+key-file: ""
+
+source-os-dist:
+    - "nuttx-7.18.tar.gz"
+source-app-dist:
+    - "apps-7.18.tar.gz"
+
+---
+
+
+<!--
+{% comment %}
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to you under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+{% endcomment %}
+-->
+
+{% include JB/setup %}
+
+NuttX-7.18 Release Notes
+------------------------
+
+The 118th release of NuttX, Version 7.18, was made on October 8, 2016,
+and is available for download from the Bitbucket.org website.  Note
+that release consists of two tarballs:  nuttx-7.18.tar.gz and
+apps-7.18.tar.gz.  These are available from:
+
+    https://bitbucket.org/nuttx/nuttx/downloads
+    https://bitbucket.org/nuttx/apps/downloads
+
+Both may be needed (see the top-level nuttx/README.txt file for build
+information).
+
+Additional new features and extended functionality:
+
+    * Core OS:
+
+      - Add standard adjtime() interface and basic timekeeping support.
+        Normally used with an NTP client to keep system time in
+        synchronization.  From Max Neklyudov.
+      - Use the oneshot timer with optional entropy to measure CPU load if
+        so configured.
+
+    * File System and Block and MTD Drivers:
+
+      - Add Fujistu MB85RS256B ramtron support.  From Beat Küng.
+      - SPI-based MTD driver for Macronix MX25L3233F or MX25L6433F.  From
+        Aleksandr Vyhovanec.
+
+    * Graphics/Display Drivers:
+
+      - SH1106 0.96 OLED module support (SSD1306 compatible) + I2C fixes.
+        From v01d (phreakuencies).
+
+    * Sensor Drivers:
+
+      - Add KXJT9 Accelerometer driver from the Motorola Moto Z MDK.
+      - Add MFRC522 RFID ISO14443 and Mifare transceiver driver.  From Alan
+        Carvalho de Assis.
+      - Add driver for the LIS3MDL 3 axis magnetometer.  From Alexander
+        Entinger.
+      - Add driver for the MLX90393 3 axis magnetometer. From Alexander
+        Entinger.
+      - Add driver for the LIS3DSH 3 axis accelerometer. From Alexander
+        Entinger.
+      - Add driver for the Bosch BMG160 3 axis gyroscope. From Alexander
+        Entinger.
+      - Add support for the  Sensixs XEN1210 3D-board. This sensor is used
+        on NANOSATC-BR2 a Brazillian CUBESAT project.  From Alan Carvalho
+        de Assis.
+      - Add a new ioctl command (set MAXPOS) for Tiva QEI.  From Young.
+
+    * Other Common Device Drivers:
+
+      - I/O Expander: Remove hard-coded PCA9555 fields from ioexpander.h
+        definitons.  Add support for an attach() method that may be used
+        when any subset of pin interrupts occur.
+      - I/O Expander Interface:  Encode and extend I/O expander options to
+        include interrupt configuration.
+      - PCA9555 Driver:  Replace the signalling logic with a simple callback
+        using the new definitons of ioexpander.h.  This repartitioning of
+        functionality is necessary because (1) the I/O expander driver is
+        the lower-lower part of any driver that uses GPIOs (include the GPIO
+        driver itself) and should not be interacting directly with the much
+        higher level application layer.  And (2) in order to be compatible
+        with the GPIO driver (and any arbitrary upper half driver), the
+        PCA9555 should not directly signal, but should call back into the
+        upper half.  The upper half driver that interacts directly with the
+        application is the appropriate place to be generating signal.
+      - Add a skeleton I/O Expander driver (based on the PCA9555 driver).
+      - Add PCF8574 I/O Expander driver.
+      - GPIO driver:  Add IOCTLs to get the pin type and to unregister a
+        signal handler.
+      - Add a GPIO lower-half driver that can be used to register a GPIO
+        character driver for accessing pins on an I/O expander.
+      - Add an SPI helper function that encapsulates and manages a sequence
+        of SPI transfers.
+      - Add an SPI character driver that will permit access to the SPI bus
+        for testing purposes.
+      - Add oneshot timer lower half interface definition.
+      - Add an upper-half, oneshot timer character driver.
+      - Add Audio Tone Generator for NuttX.  From Alan Carvalho de Assis.
+      - Add USB host support for composite devices.  This feature is not
+        well tested.
+      - drivers/ioexpander: Add an (untested) TCA64XX I/O Expander driver
+        leveraged from Project Ara.
+
+    * Simulation Platform:
+
+      - Add a simulated I/O Expander driver.
+      - Add simulator-based test support for apps/examples/gpio.
+      - Add a configuration useful for testing Mini Basic.
+      - Add a simulated oneshot lowerhalf driver.
+
+    * Atmel SAM3/4 Drivers:
+
+      - SAM4CM: Add option to support oneshot timer without free-running
+        timer.  Add oneshot lower half driver.
+
+    * Atmel SAMA5 Drivers:
+
+      - SAMA5D: Add option to support oneshot timer without free-running
+        timer.  Add oneshot lower half driver.
+
+    * Atmel SAMV7 Drivers:
+
+      - SAMV71/SAME70: Add option to support oneshot timer without
+        free-running timer.  Add oneshot lower half driver.
+      - Add support for SAMV7 DACC module.  From Piotr Mienkowski.
+
+    * NXP Freescale Kinetis Drivers:
+
+      - Add support for I2C and RTC.  From v01d (phreakuencies).
+
+    * NXP Freescale Kinetis Boards:
+
+      - Add teensy 3.x I2C support.  From v01d (phreakuencies).
+
+    * STMicro STM32:
+
+      - Add IAR-style STM32F1xx vectors. Tested on STM32F103RB and
+        STM32F107RC.  From Aleksandr Vyhovanec.
+
+    * STMicro STM32 Drivers:
+
+      - Add timekeeping support for the STM32 tickless mode.  From Max
+        Neklyudov.
+      - Add a oneshot, lower-half driver for STM32.
+      - STM32 L4: Add oneshot lower half driver for STM32 L4.
+      - STM32 L4: Add support for quadrature encoders on STM32L4. Sebastien
+        Lorquet.
+
+    * STMicro STM32 Boards:
+
+      - stm32f103-minimum: Add board support to MFRC522 driver.  From Alan
+        Carvalho de Assis.
+      - Add oneshot board initialization to stm32f103-minimum.  From Alan
+        Carvalho de Assis.
+      - stm32f103-minimum: Add board configuration to initialize Audio Tone
+        Generator.  From Alan Carvalho de Assis.
+      - stm32bufferfly2: Add support for the Kamami stm32butterfly2
+        development board with optional ETH phy.  From  Michał Łyszczek.
+      - stm32f103-minimum: Add board config support to SPI LCD module
+        JLX12864G-086.  From Alan Carvalho de Assis.
+      - stm32l476-mdk: Support basic booting and nsh on Motorola MDK. The
+        Motorola MDK is based off of an earlier version of NuttX.
+        This only provides a basic NSH shell.  From Jim Wylder.
+      - STM32 F4 Discovery:  Add support for XEN1210 3D-board.  From Alan
+        Carvalho de Assis.
+      - stm32f103-minimum:  Add stm32_bringup support and userled example to
+        STM32F103 Minimum board.  From Alan Carvalho de Assis.
+      - Add support for qencoders on various nucleo boards.  From Sebastien
+        Lorquet.
+      - olimex-stm32-e407: Add some networking configurations.  From Mateusz
+        Szafoni.
+
+    * TI Tiva Drivers:
+
+      - Add tiva PWM lower-half driver implementation. From Young.
+      - Tiva QEI:  Add QEI lower-half driver for Tiva series chip.  From
+        Young.
+
+    * C Library/Header Files:
+
+      - Separate XorShift128 PRNG from /dev/urandom and make it generally
+        available.
+      - Add POSIX type sig_atomic_t.  From Sebastien Lorquet.
+      - Add the difftime() function.  The function depends on the toolchain-
+        dependent CONFIG_HAVE_DOUBLE so is not available on tiny platforms.
+        From Sebastien Lorquet.
+      - Add support for remove().  From Sebastien Lorquet.
+      - Add system() to stdlib.h.  Actual implementation is in
+        apps/system/system.
+
+    * Build/Configuration System:
+
+      - Rename arch/sh to arch/renesas.
+      - Remove contactless drivers from drivers/wireless to drivers
+        contactless.  From Sebastien Lorquet.
+      - Move all modem-related IOCTL commands to a common file to assure
+        that they will be unique.
+
+    * Tools:
+
+      - Add sethost.sh.   This is a script that you can use to quickly
+        change the host platform from Linux to Windows/Cygwin. Might save
+        you a lot of headaches.
+
+    * Applications: apps/nshlib:
+
+      - Add logic to support an NSH-specific system command.
+      - Add printf command to NSH, e.g., controlling /dev/userleds from
+        command line: nsh> printf \x01 > /dev/userleds. From Alan Carvalho
+        de Assis.
+
+    * Platforms: apps/system:
+
+      - Port tee command from NetBSD.
+      - Add a generic system command.  Current implentation cannot use
+        /bin/sh and spawns the custom NSH system command directly.
+
+    * Platforms: apps/platform:
+
+      - Add C++ support for STM32L476-MDK.
+
+    * Platforms: apps/interpreters:
+
+      - Add a port of Mini Basic, version 1.0, written by Malcom McLean and
+        released under the Creative Commons Attribution license.
+
+    * Applications: apps/examples:
+
+      - Add a simple test of the GPIO driver.
+      - Add RFID_READUID sample application. From Alan Carvalho de Assis.
+      - Add Oneshot timer example.
+      - Add a simple test of the system command.
+
+Works-In-Progress:
+
+    * IEEE802.14.5/6LowPAN.  Hooks and framework for this effort were
+      introduced in NuttX-7.15.  Work has continued on this effort on
+      forks from the main repositories, albeit with many interruptions.
+      The completion of this wireless feature will postponed until at
+      least NuttX-7.19.
+
+Bugfixes.  Only the most critical bugfixes are listed here (see the
+ChangeLog for the complete list of bugfixes and for additional, more
+detailed bugfix information):
+
+    * Core OS:
+
+      - Explicitly initialize the group tg_exitsem with sem_init().  The
+        existing logic worked because the correct initialization value is
+        all zero, but it is better to initialize the semaphore explicitly.
+      - The TCB nchildren field should not be incremented when pthreads are
+        created.
+      - Move fields related to parent/child task relationship out of TCB
+        into group structure where they belong.  Child is a group, not a
+        thread.
+      - mq_send() was not setting the errno value on certain failures to
+        allocate a message.
+      - Define 'group' even if HAVE_GROUPID is not set.  From Mateusz
+        Szafoni.
+      - Vector table should have dimension NR_IRQS, not NR_IRQS+1. From
+        Sagitta Li.
+      - pthreads:  When a pthread is started, there is a small bit
+        of logic that will run on the thread of execution of the new
+        pthread.  In the case where the new pthread has a lower
+        priority than the parent thread, then this could cause both the
+        parent thread and the new pthread to be blocked at the priority of
+        the lower priority pthread (assuming that CONFIG_PRIORITY_INHERITANCE
+        is not selected). This change temporarily boosts the priority of the
+        new pthread to at least the priority of the new pthread to at least
+        the priority of the parent thread.  When that bit of logic has
+        executed on the thread of execution of the new pthread, it will then
+        drop to the correct priority (if necessary) before calling into the
+        new pthread's entry point.
+
+    * File System/Block Drivers/MTD Drivers:
+
+      - FAT performance improvement. In large files, seeking to a
+        position from the beginning of the file can be very time consuming.
+        ftell does lssek(fd, 0, SET_CURR).  In that case, that is wasted
+        time since we are going to seek to the same position.  This fix
+        short-circuits fat_seek() in all cases where we attempt to seek to
+        current position.  Suggested by Nate Weibley.
+      - MTD: Fixed cloned typos in several FLASH drivers.  From Aleksandr
+        Vyhovanec.
+      - mount: Corrects a bad assertion noted by Pierre-noel Bouteville.
+        Also fixes a reference counting problem in an error condition:
+        When the mountpoint inode is found but is not an appropriate
+        mountpoint, the reference count on the inode was not being
+        decremented.
+
+    * Common Drivers:
+
+      - Various serial drivers: Fix FIONWRITE and add FIONSPACE.  All
+        implementations of FIONWRITE were wrong.  FIONWRITE should return
+        the number of bytes waiting in the outgoing send queue, not the free
+        space.  Rather, FIONSPACE should return the free space in the send
+        queue.
+      - Add missing prototype for btn_lower_initialize().
+      - Make DAC sample structure packed.  From Marc Rechté.
+
+    * Networking:
+
+      - TCP:  tcp_ipvX_bind() not actually using the port selected with
+        port==0.  Also removes duplicate call to pkt_input().  Issues noted
+        by Pascal Speck.
+      - drivers/net: NET_TUN=y => NET_MULTIBUFFER=y.  From Vladimir
+        Komendantskiy.
+      - slip driver: Fix calculations using MSEC_PER_TICK.  If
+        USEC_PER_TICK is less than 1000, then MSEC_PER_TICK will be
+        zero.  It will be inaccurate in any case.
+
+    * Atmel SAM3/4 Drivers:
+
+      - SAM3/4 GPIO: Enable peripheral clock for GPIO port when GPIO is
+        configured as input. The value of a GPIO input is only sampled when
+        the peripheral clock for the port controller the GPIO resides in is
+        enabled.  Therefore we need to enable the clock even when polling a
+        GPIO.  From Wolfgang Reissnegger.
+      - All SAM Ethernet Drivers: Add support so that the drivers can be
+        built with CONFIG_NET_MULTIBUFFER=y.
+      - SAM3/4: Fix GPIO pull-up/down code. Enabling the pull-down resistor
+        while the pull-up resistor is still enabled is not possible. In this
+        case, the write of PIO_PPDER for the relevant I/O line is discarded.
+        Likewise, enabling the pull-up resistor while the pull-down resistor
+        is still enabled is not possible. In this case, the write of
+        PIO_PUER for the relevant I/O line is discarded.  From Wolfgang
+        Reißnegger.
+
+    * Atmel SAMV7 Drivers:
+
+      - All SAM Ethernet Drivers: Add support so that the drivers can be
+        built with CONFIG_NET_MULTIBUFFER=y.
+      - SAM GPIO: Apply Wolfgang's change for SAM3/4 to SAMA5 and SAMV7.
+
+    * Atmel SAMA5:
+
+      - Add missing oneshot max_delay method.
+      - All SAM Ethernet Drivers: Add support so that the drivers can be
+        built with CONFIG_NET_MULTIBUFFER=y.
+      - SAM GPIO: Apply Wolfgang's change for SAM3/4 to SAMA5 and SAMV7.
+
+    * NXP Freescale LPC43xx Drivers:
+
+      - LPC43xx serial: Fix typos in LPC43 serial driver.  Found by Vytautas
+        Lukenskas.
+      - LPC43xx Serial: There are some small problems in LPC43xx RS485 mode
+        configuration. In particular: (1) UART0,2,3 do not have DTR pins
+        (different from UART1), so, Kconfig needs to be adjusted. (2)
+        lpc43_uart.c in RS485 mode only configures DIR pin, but doesn't
+        enable pin output for UART0,2,3. (3) should be option to reverse DIR
+        control pin output polarity. (4) lpc43xx/chip/lpc43_uart.h doesn't
+        have USART3 definitions.  NOTE: I didn't modified and didn't tested
+        USART1, as it has different hardware.  From Vytautas Lukenskas.
+        From Vytautas Lukenskas.
+
+    * SiLabs EFM32 Drivers:
+
+      - EFM32 SPI drivers adopted incompatible conventions (See STM32 for
+        details of the issue).
+
+    * STMicro STM32 Drivers:
+
+      - STM32, STM32 L4, and EFM32 SPI drivers adopted incompatible
+        conventions somewhere along the line.  They set the number of bits
+        to negative when calling SPI_SETBITS which had the magical side-
+        effect of setting LSB first order of bit transmission.  This is not
+        only a hokey way to pass control information but is supported by no
+        other SPI drivers.  This change three things:  (1) It adds
+        HWFEAT_LSBFIRST as a new H/W feature. (2) It changes the
+        implementations of SPI_SETBITS in the STM32 and EFM32 drivers so
+        that negated bit numbers are simply errors and it adds the
+        SPI_HWFEATURES method that can set the LSB bit order, and
+        (3) It changes all calls with negative number of bits from all
+        drivers: The number of bits is now always positive and
+        SPI_HWFEATURES is called with HWFEAT_LSBFIRST to set the bit order.
+      - Add missing SPI2 and SPI3 support for STM32F3F3.  Add STM32F37XX DMA
+        channel configuration.  For STM32F37XX, SYSCFG_EXTICR_PORTE defined
+        twice.  From Alan Carvalho de Assis.
+      - STM32: Make stm32_pwr_enablebkp thread safe.  From Max Neklyudov.
+      - Fix bad pllmul values for STM32F1XX connectivity line. STM32F1XX
+        connectivity line supports only x4, x5, x6, x7, x8, x9 and x6.5
+        values. From Michał Łyszczek.
+      - STM32F3 SPI:  Fix the number of bit setting for the F3.  That and
+        data packing work differently on the STM32F3 than for other STM32
+        parts.
+      - STM32 and STM32 L4: Enabling SPI DMA loses other bits in CR2.
+      - STM32F3 SPI:  Cannot write always 16-bit value to DR register
+        because of how the F3 implements data packing.
+      - STM32F411 and STM32F446 map i2c2_sda_4 to different alternate
+        function numbers.  From Konstantin Berezenko.
+      - STM32 DMA Fix: Change stm32 adc dma callback to send channel
+        number instead of index.  From Konstantin Berezenko.
+      - STM32 OTGFS device: Fix for lost first word from FIFO
+
+        1) Do not overwrite Reserved Bits in GINTSTS (per ref manual)*
+        2) Acknowledge all pending int on entry to ISR that are Only rc_w1*
+        3) Do not disable RXFVL*
+        4) Loop until RXFVL is cleared*
+        5) Only clear the NAK on the endpoint on the OTGFS_GRXSTSD_PKTSTS_SETUPDONE to not loose the first WORD of FIFO all the data  (Bug Fix)
+
+        Changed marked *are just driver clean up and ensure ints are not lost. The bug fix is #5
+
+        Test case open putty and observer the Set/Get LineCoding. Without this fix #5 the Get will not match the Set, and in fact the data might be skewed by 4 bytes, that are lost from the FIFO if the OTGFS_DOEPCTL0_CNAK bit is set in the OTGFS_GRXSTSD_PKTSTS_SETUPRECVD as opposed to the OTGFS_GRXSTSD_PKTSTS_SETUPDONE
+
+        Set Line Coding DATA1: 4B | 00 c2 01 00 00 00 08 | c8 1B
+        Get Line Coding DATA1: 4B | .. .. .. .. 00 00 08   c8 .. 00 00 07 | 7a 72
+
+        From David Sidrane.
+      - STM32 L4 OTGFS device: Apply stm32 fix to stm32l4.  From Sebastien
+        Lorquet.
+      - STM32 F7: Remove duplicate call to pkt_input from Ethernet driver.
+        Issues noted by Pascal Speck.
+      - STM32 L4: Add support for USART3-USART5.  For STM32L4 parts, the
+        higher number USART ports supported varies.  Add the HAVE_USARTx
+        definitions to the configuration to allow enabling the higher
+        numbered USART ports. From Jim Wylder.
+      - STM32 USB: Set USB address to avoid a failed assertion.  From
+        Pierre-noel Bouteville.
+      - STM32 L4 and L7 USB: Pierre's assertion-avoidance change should
+        also be applied to STM32 F7 and L4.
+      - STM32, L4, and F7:  Remove GPIO_ETH_RMII_TX_CLK. TX_CLK is not
+        present in RMII. Mateusz Szafoni.
+      - STM32 Ethernet: Correct typo in conditional logic.  From Neil
+        Hancock.
+      - STM32 L4 USB Device: Fixed L4 USB Driver by avoiding SETUPDONE and
+        EPOUT_SETUP.  From David Sidrane.
+      - STM32 SPI: stm32_modifycr2 should be available on all platforms if
+        DMA is enabled.
+      - STM32 DMA2D: fix an error in up_dma2dcreatelayer where an invalid
+        pointer was returned when a certain underlying function failed.
+        From Jens Gräf.
+
+    * TI Tiva Drivers:
+
+      - Fix two bugs of tiva pwm lower-half driver implementation. From
+        Young.
+      - Tiva Ethernet:  Needs support for CONFIG_NET_MULTIBUFFER=y.
+
+    * C Library/Header Files:
+
+      - lib_dumpbuffer() now prints a large on-stack buffer first to avoid
+        problems when the syslog output is prefixed with time.  From
+        Pierre-noel Bouteville.
+      - libc/math: This fixes the following libc/math issues: (1) asin[f l]()
+        use Newton’s method to converge on a solution. But Newton’s method
+        converges very slowly (> 500,000 iterations) for values of x close to
+        1.0; and, in the case of asinl(), sometimes fails to converge (loops
+        forever). The attached patch uses an trig identity for values of
+        x > sqrt(2). The resultant functions converge in no more than 5
+        iterations, 6 for asinl().  (2) The NuttX erf[f l]() functions are
+        based on Chebyshev fitting to a good guess. The problem there’s a
+        bug in the implementation that causes the functions to blow up with
+        x near -3.0. This patch fixes that problem. It should be noted that
+        this method returns the error function erf(x) with fractional error
+        less than 1.2E-07 and that’s fine for the float version erff(), but
+        the same method is used for double and long double version which
+        will yield only slightly better precision. This patch doesn't
+        address the issue of lower precision for erf() and erfl(). (3) a
+        faster version of copysignf() for floats is included. From David S.
+        Alessio.
+      - strtod() was not returning endptr on error conditions.
+      - libc/math: floor(), floorf(), and floorl():  Fix logic error.  Was
+        not correctly handling negative integral value.
+      - isatty() should be prototyped in unstid.h, not termios.h.  From
+        Sebastien Lorquet.
+      - nxglib: Fix handling of near-horizontal lines of width 1 in
+        nxgl_splitline().  Missing handling for degenerate condition caused
+        width 1 lines such as (0, 0) - (100, 10) to have gaps in the
+        drawing. From Petteri Aimonen.
+
+    * Build/Configuration System:
+
+      - Top-Level Makefiles:  Fix a chicken-and-egg problem. In the menuconfig
+        target, the context dependency was executed before kconfig-mconf.  That
+        was necessary because the link at apps/platform/board needed to be set
+        up before creating the apps/Kconfig file.  Otherwise, the platform
+        Kconfig files would not be included.  But this introduces the chicken-
+        and-egg problem in some configurations. In particular:  (1) An NX
+        graphics configuration is used that requires auto-generation of
+        source files using cpp, (2) the configuration is set for Linux, but
+        (3) we are running under Cygwin with (4) a Windows native toolchain.
+        In this case, POSIX-style symbolic links are set up but the Windows
+        native toolchain cannot follow them. The reason we are running
+        'make menuconfig' is to change from Linux to Cygwin, but the target
+        fails.  During the context phase, NX runs CPP to generate source files
+        but that fails because the Windows native toolchain cannot follow
+        the links.  Checkmate.  This was fixed by changing all of the make
+        menuconfig (and related) targets.  They no longer depend on context
+        being run.  Instead, they depend only on the dirlinks target.  The
+        dirlinks target only sets up the directory links but does not try
+        to run all of the context setup; the compiler is never invoked; no
+        code is autogenerated and things work.
+      - CXXFLAGS: add -fcheck-new whenever -fno-exceptions is used. From
+        Beat Küng.
+
+    * Tools
+
+      - tools/refresh.sh: Recent complexities added to apps/ means that
+        configuration needs the correct Make.defs file in place in order to
+        configure properly.
+      - tools/kconfig2html.c: Update to handle absolute paths when sourcing
+        Kconfig files.
+      - tools/mkfsdata.pl was still generating the old-style apps/include
+        inclusion paths.
+
+    * Application Build/Configuration System:
+
+      - Add DIRLINK and DIRUNLINK tool definitions to apps/Make.defs.
+
+    * apps/nshlib:
+
+      - Fix FIFO_SIZE vs PIPE_SIZE.
+      - Fix hex representation of IP address in Kconfig.  Noted by Michal
+        Lyszczek.
+      - nsh_syscmds.c: missing semicolon.  From Mateusz Szafoni.
+      - In system command, don't try to flush output streams if stdio
+        buffered I/O is not supported.
+
+    * apps/canutils:
+
+      - libuavcan: Under certain circumstances, DELIM is not be defined in
+        Makefile.
+      - Add definition for APPNAME in apps/canutils/canlib.  From Sebastien
+        Lorquet.
+
+    * apps/gpsutils:
+
+      - Fix an error minmea.  From Aleksandr Vyhovanec.
+
+    * apps/examples:
+
+      - apps/examples/oneshot:  If the requested delay is > max_delay, then
+        break the delay up into several pieces.
diff --git a/_releases/7.19.md b/_releases/7.19.md
new file mode 100644
index 0000000..e52ffd9
--- /dev/null
+++ b/_releases/7.19.md
@@ -0,0 +1,832 @@
+---
+layout: page
+released: true
+apache: false
+title: 7.19
+date: 2017-02-02
+summary: >
+    Release v7.19
+
+artifact-root: "https://bitbucket.org/nuttx/nuttx/downloads/"
+checksum-root: ""
+key-file: ""
+
+source-os-dist:
+    - "nuttx-7.19.tar.gz"
+source-app-dist:
+    - "apps-7.19.tar.gz"
+
+---
+
+
+<!--
+{% comment %}
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to you under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+{% endcomment %}
+-->
+
+{% include JB/setup %}
+
+NuttX-7.19 Release Notes
+------------------------
+
+The 119th release of NuttX, Version 7.19, was made on December 26, 2016,
+and is available for download from the Bitbucket.org website.  Note
+that release consists of two tarballs:  nuttx-7.19.tar.gz and
+apps-7.19.tar.gz.  These are available from:
+
+    https://bitbucket.org/nuttx/nuttx/downloads
+    https://bitbucket.org/nuttx/apps/downloads
+
+Both may be needed (see the top-level nuttx/README.txt file for build
+information).
+
+Additional new features and extended functionality:
+
+    * Core OS:
+
+      - sched/semaphore, sched/phread/, libc/semaphore, libc/pthread: Add
+        pthread_mutexattr_get/set_protocol and non-standard
+        sem_get/set_protocol. These may use to enable or disable priority
+        inheritance on a single semaphore.
+      - Spinlocks:  Added capability to provide architecture-specific memory
+        barriers.
+      - SMP: Add spin_trylock().  Use this in conditions where other CPUs need
+        to stopped but we cannot call enter_critical_section().
+      - sched note:  Extend OS instrumentation to include some SMP events.
+        Also add spinlock instrumentation;  In SMP configurations, add a
+        filter mask to log only notes from certain CPUs.
+      - sched note:  Permit spinlock and critical section notes in in-memory
+        buffer iff sched_not_get() interfaces is disabled.
+      - sched note:  Add additional note to see if/when CPU is started in SMP
+        mode.
+      - sched note:  Record ID enumeration now results on constant values; ID
+        values do not change with configuration.  This makes writing post-processing software much easier.
+      - boardctl:  Add new boardctl() command, BOARDIOC_NX_START, to start the
+        NX server as a kernel thread.
+      - pthreads:  Add pthread_cleanup_push() and pthread_cleanup_pop().
+      - pthreads: Added pthread_setcanceltype() and pthread_testcancel().
+      - pthreads: Add support for cancellation points.
+      - task_delete() now obeys all cancellation point semantics.
+      - Add task_setcancelstate(), task_setcanceltype(), and
+        task_testcancel().  These are non-standard interfaces analogous to the
+        correponding pthread_ interfaces that provide cancellation controls
+        for tasks.
+
+    * Graphics/Display Drivers:
+
+      - boardctl:  Add new boardctl() command, BOARDIOC_NX_START, to start the
+        NX server as a kernel thread.
+
+    * Networking/Network Drivers:
+
+      - Network drivers:  Add option to use low-priority work queue to all
+        Ethernet and MAC level drivers.
+      - Network Drivers:  Adapt all Ethernet (and other MAC) drivers to work
+        as though CONFIG_NET_MULTIBUFFER were set.  Remove all references to
+        CONFIG_NET_MULTIBUFFER.
+      - Eliminate CONFIG_NO_NOINTS.  There is no longer any support for
+        interrupt level processing of the network stack. Lots of files changed.
+
+    * Other Common Device Drivers:
+
+      - Vishay VEML6070:  Add Vishay VEML6070 driver.  From Alan Carvalho de
+        Assis.
+
+    * ARMv7-A
+
+      - ARMv7-A/i.MX6:  Add SCU register definitions.  Add some controls to
+        enable SMP cache coherency in SMP mode.  Makes no difference, however
+        -- cache still incoherent on i.MX6.
+      - ARMv7 GIC: SGIs are non-maskable but go through the same path as
+        other, maskable interrupts.  Added logic to serialize SGI processing
+        when necessary.
+
+    * Atmel SAM3/4:
+
+      - SAM3/4:  Add SMP support for the dual-core SAM4CM.  From Masayuki
+        Ishikawa.
+
+    * Atmel SAM3/4 Drivers:
+
+      - Add support for the SAM5CMP-DB board.  From Masayuki Ishikawa.
+
+    * Atmel SAM3/4 Boards:
+
+      - SAM4CMP-DB:  Add support for the Atmel SAM4CMP-DB board running in an
+        SMP configuration.  From Masayuki Ishikawa.
+      - SAM4CMP-DB: Add hooks to auto-mount the procfs file system on startup
+        in board bring-up logic.
+
+    * Atmel SAMV7 Drivers:
+
+      - SAMv7:  Register the watchdog device at the configured device path
+        CONFIG_WATCHDOG_DEVPATH vs. hard-coded /dev/wdt.  From Frank Benkert.
+
+    * Calypso
+
+      - Calyps: Remove all Calypso board configurations.  Remove Calypso
+        architecture support and support for Calypso SERCOMM driver.
+
+    * Misoc LM32:
+
+      - Misoc LM32:  Adds basic support for the Misoc procoessors and the LM32
+        in particular.  From Ramtin Amin.
+      - Misoc LM32:  Add signal handling logic.  From Ramtin Amin.
+      - Misoc LM32:  Add logic to flush/invalidate caches.  From Ramtin Amin.
+
+    * Misoc LM32 Drivers:
+
+      - Misoc LM32 Serial:  Add interrupting Misoc serial driver.  From Ramtin
+        Amin.
+      - Misoc LM32 Timer:  Add timer driver.  From Ramtin Amin.
+      - Misoc LM32:  Add Misoc Ethernet driver  From Ramtin Amin.
+
+    * Misoc LM32 Boards:
+
+      - Misoc LM32 Qemu:  Board support for testing Misoc LM32 with Qemu. From
+        Ramtin Amin.
+      - Misoc LM32 Qemu:  Integrate network support into configs/misoc/hello.
+        From Ramtin Amin.
+      - Misoc LM32 Qemu:  Remove configs/misoc/include/generated directory.  I
+        suppose the the intent now is that this is a symbolic link?  DANGER!
+        This means that you cannot compile this code with first generating
+        these files a providing a symbolic link to this location!   There is a
+        sample directory containing generated sources.  This is really only
+        useful for performing test builds.  You really must generate the Misoc
+        architecture for a real-life build.  From Ramtin Amin.
+
+    * NXP Freescale i.MX6 Drivers:
+
+      - i.MX6:  Add an untested SPI driver taken directly from the i.MX1 port.
+
+    * NXP Freescale Kinetis:
+
+      - Kinetis:  Added missing headers.  Kinetis broke out SPI to
+        kinetis/kinetis_spi.h. Broke out DMA to use the modern Nuttx chip
+        inclusion - still STUBS.  Add Kinetis support for ARMV7-M Common
+        Vector and FPU.  Allow CONFIG_ARMV7M_CMNVECTOR,
+        CONFIG_STACK_COLORATION, CONFIG_ARCH_FPU.  Fix  i2c driver offset
+        swapped for value in kinetis_i2c_putreg.  From David Sidrane.
+
+    * NXP Freescale Kinetis Drivers:
+
+      - Kinetis: Add UID Unique ID.  From Neil Hancock.
+
+    * NXP Freescale Kinetis Boards:
+
+      - Freedom-K64F board: Add support for UID Unique ID.  From Neil Hancock.
+
+    * NXP Freescale LPC17xx Boards:
+
+      - Olimex-LPC1766-STK:  Enable procfs in NSH configuration. Automount
+        /proc on startup.
+
+    * NXP Freescale LPC43xx Drivers:
+
+      - LPC43xx: Add timer driver:  From Alan Carvalho de Assis.
+      - LPC43xx GPDMA driver:  The GPDMA block is basically the same as the
+        LPC17xx.  Only the clock configuration is different and LPC43xx has
+        four different DMA request sources, where LPC17xx has only two. From
+        Alan Carvalho de Assis.
+
+    * NXP Freescale LPC43xx Boards:
+
+      - Bambino 200E:  Add basic support to Micromint Bambino 200E board.
+        This includes contributions from Jim Wolfman.  From Alan Carvalho de
+        Assis.
+      - Bambino 200E:  Add support for timer driver.  From Alan Carvalho de
+        Assis.
+
+    * RGMP:
+
+      - Remove RGMP and RGMP drivers.
+
+    * RISC-V:
+
+      - RISC-V: Add support for the RISC-V architecture and
+        configs/nr5m100-nexys4 board.  The board support on this is pretty
+        thin, but it seems like maybe a good idea to get the base RISC-V stuff
+        in since there are people interested in it.  From Ken Pettit.
+
+    * STMicro STM32 Drivers:
+
+      - STM32 F3:  Implemention of the STM32 F37xx SDADC module. There are
+        also changes to ADC, DAC modules. SDADC has only been tested in DMA
+        mode and does not support external TIMER triggers. This is a work in
+        progress.  From  Marc Rechté.
+      - STM32 F3:  Add PWM driver support for STMF37xx.  The changes have been
+        tested successfuly for TIM4 and TIM17 (different IPs).  From  Marc
+        Rechté.
+      - STM32 F4:  Support oversampling by 8 for the STM32 F4. From David
+        Sidrane.
+      - STM32 F4:  Added Timers 2-5 and control of SAI and I2S PLLs.  Added
+        support for stmf469 SAI and I2S PLL configuration and STM446 fixes.
+        From David Sidrane.
+      - STM32 F4:  Expanded OTGFS support to stm32F469 and stm32f446.  Added
+        missing bit definitions, Used stm32F469 and stm32f446 bit
+        definitions,  Removed unsed header file.  From David Sidrane.
+      - STM32 F4:  Allow dma in 1 bit mode in STM32F4xxx.  From David Sidrane.
+      - STM32 F7:  Allow the config to override the clock edge setting.  From
+        David Sidrane.
+      - STM32 L4:  Support Complementary PWM outputs on STM32L4.  From
+        Sebastien Lorquet.
+      - STM32 L4:  Add implementation of dumpgpio for stm32l4, was required
+        for pwm debug. From Sebastien Lorquet.
+
+    * STMicro STM32 Boards:
+
+      - STM32F103 Minimum:  Add button support.  From Alan Carvalho de Assis.
+      - STM32F103 Minimum:  Add support to PWM on STM32F103-Minimum board.
+        From Alan Carvalho de Assis.
+      - STM32F103 Minimum:  Add RGB LED support on STM32F103 Minimum board.
+        From Alan Carvalho de Assis.
+      - STM32F103 Minimum:  Add Vishay VEML6070 driver support to the
+        STM32F103-Minimum board.  From Alan Carvalho de Assis.
+      - Nucleo-F303RE:  Add STM32 F303RE hello configuration.   From Marc
+        Rechté.
+      - Nucleo-L476:  Support PWM testing on board Nucleo L476.  From
+        Sebastien Lorquet.
+      - Nucleo L476:  Add support for timers to Nucleo L476.  From Sebastien
+        Lorquet.
+      - Hymini STM32v:  Enable CONFIG_RTC in the hymini-stm32v/nsh2
+        (kitchensink) config. From Maciej Wójcik.
+      - Olimex STM32-p407:  Add support for the Olimex STM32 P407 board.
+
+    * TI Tiva Drivers:
+
+      - Tiva PWM: Support PWM_PULSECOUNT feature for TI tiva.  From Young.Mu.
+
+    * Xtensa/ESP32
+
+      - Xtensa ESP32:  Basic architectural support for Xtensa processors and
+        the Expressif. ESP32 added.
+      - Xtensa ESP32:  Add EXPERIMENTAL hooks to support lazy Xtensa
+        co-processor state restore in the future.
+      - Xtensa ESP32:  Basic port is function in both single CPU and dual CPU
+        SMP configurations.  There is an NSH configuration for each CPU
+        configuration.  Outstanding issues include missing clock configuration
+        logic, missing partition tables to support correct configuration from
+        FLASH, and some serial driver pin configuration issues.
+      - Xtensa ESP32: Add stack checking logic.
+
+    * Xtensa/ESP32 Boards:
+
+      - ESP32 Core v2:  Basic support for Expressif ESP32 Core v2 board
+        added.  The initial release includes an NSH and an SMP test
+        configuration.
+      - ESP32 Core v2:  Add configuration to support linking NuttX for
+        execution out of IRAM.
+      - ESP32 Core v2:  Automatically mount /proc at start-up.
+      - ESP32 Core v2:  Add an OS test to verify the port.
+
+    * C Library/Header Files:
+
+      - libc/locale:  Add a dummy setlocale() function to avoid drawing the
+        function from newlib.  Add clocale header file.
+      - include/locale.h:  Modify locale.h to add localeconv() and lconv
+        structure.  From Alan Carvalho de Assis.
+      - libc/locale:  Allows c++ code to compile with or without
+        CONFIG_LIBC_LOCALE and will generate a link error if
+        CONFIG_LIBC_LOCALE is not defined and setlocale is referenced. With
+        CONFIG_LIBC_LOCALE defined setlocale will act as if MB string is not
+        supported and return "C" for POSIX. C and "". From David Sidrane.
+      - libc/wchar:  Add wcslen, wmemchr, wmemcmp, wmemcpy wmemset, btowc,
+        mbrtowc, mbtowc, wcscmp, wcscoll, and wmemmove to NuttX.  From Alan
+        Carvalho de Assis.
+      - libc/wctype:  Add functions wcrtomb, wcslcpy, wcsxfrm, wctob, wctomb,
+        wctype, localeconv, strcoll, strxfrm, swctype, towlower, towupper and
+        wcsftime.   Add wctype.h; Move lib_wctype.c to libc/wctype.  From Alan
+        Carvalho de Assis.
+      - include/ctype.h : Add isblank() macro to ctype.h.  From Alan Carvalho
+        de Assis.
+      - lic/stdlib:   Add strtof() and strtold() as simply a copy of strtod
+        with types and limits changed.
+      - sscanf():  Use strtof() instead of strtod() if a short floating point
+        value was requested.  The should help performance with MCUs with
+        32-bit FPU support with some additional code size.
+      - sscanf(): Add scansets to the scanf function. Enabled
+        CONFIG_LIBC_SCANSET option.  From  Aleksandr Vyhovanec.
+      - include/inttypes.h: Add architecture-specific inttypes.h.  From Paul
+        A. Patience.
+      - C Library:  Allow option to enable IP address conversions even when
+        the IP address family is not supported.
+
+    * Build/Configuration System:
+
+      - The Smoothie project needs to compile C++ inside config/boardname/src/
+        to use with High Priority Interruption, then I modified the board
+        configs Makefile to support it.  It works fine for the first time
+        compilation, but if we execute "touch config/boardname/src/Pin.cxx"
+        and execute "make" it will not detect that Pin.cxx was modified. I
+        think there is some other place I should modify, but I didn't find
+        it.  From Alan Carvalho de Assis.
+
+    * Tools:
+
+      - tools/: Add tools/showsize.sh.
+
+    * NSH: apps/nshlib:
+
+      - NSH: dd command will show statistics.  From  Masayuki Ishikawa.
+
+    * Applications: apps/system:
+
+      - apps/system/sched_note:  Extend to include additions to instumentation
+        for SMP.
+      - apps/system/sched_note:  Add support for spinlock notes.
+      - apps/system/sched_note:  Add support for new scheduler instrumentation.
+
+    * Platforms: apps/platform:
+
+      - ESP32 Core v2:  Add platform support for the ESP32 core v2 board.
+      - Olimex STM32-p407: Add platform support for the Olimex STM32 P407.
+
+    * Graphics: apps/graphics
+
+      - graphics/traveler/tcledit and libwld:  Add an X11 Tcl/Tk tool that can
+        be used to edit Traveler world files.
+      - Graphics: Remove all NX server taks.  Instead, call boardctl() to the
+        NX server kernel thread.
+
+    * Applications: apps/examples:
+
+      - examples/buttons:  Add a new buttons example that uses the button
+        character driver instead of the architecture buttons directly. From
+        Alan Carvalho de Assis.
+      - examples/cctype:  Add an example to verify cctype functions.
+      - Remove RGMP example.
+      - examples/ostest:  Extend the pthread cancellation test to exercise
+        pthread_cleanup_push() (and pthread_cleanup_pop() indirectly via
+        pthread_cancel() and pthread_exit().
+      - examples/ostest: enhance pthread cancellation test some.
+
+Works-In-Progress:
+
+    * IEEE802.14.5/6LowPAN.  Hooks and framework for this effort were
+      introduced in NuttX-7.15.  Work has continued on this effort on
+      forks from the main repositories, albeit with many interruptions.
+      The completion of this wireless feature will postponed until at
+      least NuttX-7.20.
+
+Bugfixes.  Only the most critical bugfixes are listed here (see the
+ChangeLog for the complete list of bugfixes and for additional, more
+detailed bugfix information):
+
+    * Core OS:
+
+      - sched/semaphore: Within the OS, when a thread obtains a semaphore
+        count it must call sem_addholder() if CONFIG_PRIORITY_INHERITANCE is
+        enabled.  If a count is available, then sem_wait() calls
+        sem_addholder(), otherwise it waited for the semaphore and called
+        sem_addholder() when it eventually received the count.  This caused a
+        problem when the thread calling sem_wait() was very low priority.
+        When it received the count, there may be higher priority threads
+        "hogging" the CPU that prevent the lower priority task from running
+        and, as a result, the sem_addholder() may be delayed indefinitely.
+        The fix was to have sem_post() call sem_addholder() just before
+        restarting the thread waiting for the semaphore count.  This problem
+        was noted by Benix Vincent who also suggested the solution.
+      - Many files: Make sure that priority inheritance is not enabled for
+        semaphores whose primary use is signaling (vs locking of resources) by
+        calling sem_setprotocol().
+      - sched/semaphore:  sem_trywait() no longer modifies the errno value
+        UNLESS an error occurs.  This allows these functions to be used
+        internally without clobbering the errno value.  From Freddie Chopin.
+      - sched/clock: Correct clock initialization.  The correct range for the
+        month is 0-11 but is entered as 1-12 in the .config file.  Add ranges
+        to START_YEAR, MONTH, and DAY in sched/Kconfig.
+      - sched/clock:  Correct calculation for the case of Tickless mode with a
+        32-bit timer.  In that case, the calculation was returning millisecond
+        accuracy.  That is not good when the timer accuracy is < 1 msec.  From
+        Rajan Gill.
+      - Work Queue:  When queuing new LP work, don't signal any threads if
+        they are all busy.  From Heesub Shin.
+      - Work Queue: Signal sent from work_signal() may interrupt the low
+        priority worker thread that is already running. For example, the
+        worker thread that is waiting for a semaphore could be woken up by the
+        signal and break any synchronization assumption as a result. It also
+        does not make any sense to send signal if it is already running and
+        busy. This change fixes it.  From Heesub Shin.
+      - Fix DEBUGASSERT() in group_signal.c.  From Masayuki Ishikawa.
+      - Eliminate bad boardctl() commands:  Remove all references to
+        BOARDIOC_PWMSETUP and board_pwm_setup(). Remove all references to
+        BOARDIOC_ADCSETUP and board_adc_setup(). Remove
+        BOARDIOC_CAN_INITIALIZE.  CAN initialization is now done in the board
+        initialization logic just like every other device driver.
+      - pthreads:  Fix an error in pthread_mutex_destroy().  An error could
+        occur while destroying a mutex after a pthread has been canceled while
+        holding the mutex.
+      - task_restart: Make sure new task starts with pre-emption disabled and
+        not in a critical section.
+      - Enter/leave Critical Sections.  Major redeign to
+        enter/leave_critical_section logic to deal with the case where
+        interrupts are disabled only on the local CPU.  In this case, some
+        rather complex spinlocks must be used to maintain the critical section
+        accross all CPUs.
+      - SMP Critical Sections:  Fixes for the SMP case: (1) Change order for
+        SMP case in enter_critical_section:  (1) Disable local interrupts
+        BEFORE taking spinlock and (2) If SMP is enabled, if any interrupt
+        handler calls enter_critical_section(), it should take the spinlock.
+      - SMP wdogs:  Wdog timers use a tasking interface that to manipulate
+        wdogs, and a different interface in the timer interrupt handling logic
+        to manage wdog expirations.  In the single CPU case, this is fine.
+        Since the tasking level code calls enter_critical_section, interrupts
+        are disabled and no conflicts can occur.  But that may not be the case
+        in the SMP case.  Most architectures do not permit disabling
+        interrupts on other CPUs so enter_critical_section must work
+        differently:  Locks are required to protect code. this change adds
+        locking (via enter_critical section) to wdog expiration logic for the
+        the case if the SMP configuration.
+      - SMP vfork():  Fix a race condition in the SMP case.  Existing logic
+        depended on the fact that the child would not run until waitpid was
+        called because the child had the same priority as the parent.  BUT in
+        the SMP case that is not true... the child may run immediately on a
+        different CPU.
+      - SMP: This change adds a new internal interfaces and fixes a problem
+        with three APIs in the SMP configuration.  The new internal interface
+        is sched_cpu_pause(tcb).  This function will pause a CPU if the task
+        associated with 'tcb' is running on that CPU.  This allows a different
+        CPU to modify that OS data stuctures associated with the CPU.  When
+        the other CPU is resumed, those modifications can safely take place.
+        The three fixes are to handle cases in the SMP configuration where one
+        CPU does need to make modifications to TCB and data structures on a
+        task that could be running running on another CPU.  Those three cases
+        are task_delete(), task_restart(), and execution of signal handlers.
+        In all three cases the solutions is basically the same:  (1) Call
+        sched_cpu_pause(tcb) to pause the CPU on which the task is running,
+        (2) perform the necessary operations, then (3) call up_cpu_resume() to
+        restart the paused CPU.
+      - SMP: Add logic to avoid a deadlock condition when CPU1 is hung waiting
+        for g_cpu_irqlock with interrupts interrupts and CPU0 is waiting for
+        g_cpu_paused.
+      - SMP: Enforce this rule: Tasks which are normally restored when
+        sched_unlock() is called must remain pending (1) if we are in a
+        critical section, i.e., g_cpu_irqlock is locked , or (2) other CPUs
+        still have pre-emption disabled, i.e., g_cpu_schedlock is locked.  In
+        those cases, the release of the pending tasks must be deferred until
+        those conditions are met.
+
+    * File System/Block Drivers/MTD Drivers:
+
+      - AT24XX EEPROM MTD driver:  Added EEPROM timeout.  Fromo Aleksandr
+        Vyhovanec.
+      - fs/procfs:  Fix procfs status for SMP case.
+
+    * Graphics/Graphic Drivers:
+
+      - Fonts:  Correct some default font IDs.  From Pierre-Noel Bouteville.
+
+    * Common Drivers:
+
+      - usbhost/enumerate:  Fix possible buffer overwrite.  From Janne Rosberg.
+      - usbhost/composite:  Fix compile; missing semicolons.  From Jann Rosberg.
+      - syslog:  Fixes required for file syslog output.  From Max Kriegleder.
+      - SPI configuration:  Fix Kconfig warning.  This change moves the
+        ARCH_HAVE_SPI options outside the check for SPI.  Those options don't
+        depend on SPI, and Kconfig files  in arch/ enable them even if SPI
+        isn't  enabled.  Source the driver's Kconfig in drivers/Kconfig only
+        if support for the driver is enabled prevents us from defining these
+        ARCH_HAVE options in the driver's Kconfig. We should probably remove
+        the other checks in drivers/Kconfig and check if the drivers are
+        enabled only in their Kconfig.  From Paul A. Patience.
+      - drivers/timer:  Remove the timer driver TIOC_SETHANDLER IOCTL call.
+        This calls directly from the timer driver into application code.  That
+        is non-standard, non-portable, and cannot be supported.  Instead, add
+        timer driver hooks to support signal notification of timer
+        expiration.  Signal notification logic added by Sebastien Lorquet.
+      - All timer lower half drivers.  Port Sebastien's changes to all other
+        implementations of the timer lower half.
+      - USB MSC Device:  Fix length of mode6 sense reply packet.  From
+        Wolfgang Reißnegger.
+      - USB Composite Host:  Fix end offset in usbhost_copyinterface().  From
+        Janne Rosberg.
+      - USB CDC/ACM Host:   Add CDC_SUBCLASS_ACM and CDC_PROTO_ATM to
+        supported class and proto.  From Janne Rosberg.
+      - SSD1306:  Fix errors in SPI mode configuration.  From Gong Darcy.
+      - CDC/ACM Device Class:  uart_ops_s portion of cdcacm will not be
+        initalized with correct functions if CONFIG_SERIAL_DMA is selected.
+
+    * Networking/Network Drivers:
+
+      - drivers/net/tun.c: Fix bug in TUN interface driver.  From  Max Nekludov.
+
+    * ARMv7-A:
+
+      - ARMv7-A SMP: Add SMP logic to signal handling.
+
+    * ARMv7-M:
+
+      - ARMv7-M: Fix double allocation of MPU region in mmu.h.
+
+    * ARMv7-R:
+
+      - ARMv7-R:  Fix compilation error.  This change fixes compilation errors
+        on MPU support for ARMv7-R.  From Heesub Shin.
+      - ARMv7-R: fix invalid drbar handling.  In ARMv7-R, [31:5] bits of DRBAR
+        is physical base address and other bits are reserved and SBZ. Thus,
+        there is no point in passing other than the base address.  From Heesub
+        Shin.
+      - ARMv7-R:  Remove the redundant update on SCTLR. mpu_control() is
+        invoking cp15_wrsctlr() around SCTLR update redundantly.  From Heesub
+        Shin.
+      - ARMv7-R: add new Kconfig entries for d/i-cache. Unlike in ARMv7-A/M,
+        Kconfig entries for data and instruction caches are currently missing
+        in ARMv7-R. This change adds those missing Kconfig entries. Actual
+        implmenetation for those functions will be added in the subsequent
+        patches.  From Heesub Shin.
+      - ARMv7-R: Add cache handling functions.  This change adds functions for
+        enabling and disabling d/i-caches which were missing for ARMv7-R.
+        From Heesub Shin.
+      - ARMv7-R: Fix typo in mpu support.  s/ARMV7M/ARMV7R/g. From Heesub Shin.
+      - ARMv7-R: Fix CPSR corruption after exception handling.  A sporadic
+        hang with consequent crash was observed when booting. It seemed to be
+        caused by the corrupted or wrong CPSR restored on return from
+        exception. NuttX restores the context using code like this:  msr spsr,
+        r1.  GCC translates this to:  msr spsr_fc, r1.  As a result, not all
+        SPSR fields are updated on exception return.  This should be: msr
+        spsr_fsxc, r1.  On some evaluation boards, spsr_svc may have totally
+        invalid value at power-on-reset. As it is not initialized at boot, the
+        code above may result in the corruption of cpsr and thus unexpected
+        behavior. From Heesub Shin.
+      - ARMv7-R: Fix to restore the Thumb flag in CPSR.  Thumb flag in CPSR is
+        not restored back when the context switch occurs while executing thumb
+        instruction.  From Heesub Shin.
+
+    * Atmel SAM3/4 Drivers:
+
+      - SAM3/4 UDP:  Add delay between setting and clearing the endpoint RESET
+        bit in sam_ep_resume().  We need to add a delay between setting and
+        clearing the endpoint reset bit in SAM_UDP_RSTEP. Without the delay
+        the USB controller will (may?) not reset the endpoint.  If the
+        endpoint is not being reset, the Data Toggle (DTGLE) bit will not to
+        be cleared which will cause the next transaction to fail if DTGLE is
+        1. If that happens the host will time-out and reset the bus.  Adding
+        this delay may also fix the USBMSC_STALL_RACEWAR in usbmsc_scsi.c,
+        however this has not been verified yet.  From Wolfgang Reißnegger.
+      - SAM3/4: Remove unused 'halted' flag from UDP driver.  From Wolfgang
+        Reißnegger.
+      - SAM3/4: Remove 'stalled' flag from the UDP driver.  This flag is not
+        necessary because the state of the endpoint can be determined using
+        'epstate' instead. From Wolfgang Reißnegger.
+
+    * Atmel SAM3/4 Boards:
+
+      - SAM4S Xplained Pro: Configuration uses old, improper timer interface.
+        CONFIG_TIMER disabled in configuration.  Remove obsolete timer
+        initialization logic.
+
+    * Atmel SAMV7 Drivers:
+
+      - SAMv7 USBDEVHS:  A problem occurred with the SAMV7 USBDEVHS driver  if
+        the USB cable is unplugged while a large amount of data is send over
+        an IN endpoint using DMA. If the USB cable is plugged in again after a
+        few seconds it is not possible to send data over this IN endpoint
+        again, all other endpoints work as expected.  The problem occurs
+        because if the USB cable is unplugged while an DMA transfer is in
+        flight the transfer is canceled but the register SAM_USBHS_DEVDMACTRL
+        is left in an undefined state.  The problem was fixed the problem by
+        resetting the register SAM_USBHS_DEVDMACTRL to a known state.
+        Additionally all pending interrupts are cleared.  From Stefan Kolb.
+      - SAMV7 MCAN: Prevent Interrupt-Flooding of ACKE when not connected to
+        CAN-BUS. An Acknowledge-Error will occur every time no other CAN Node
+        acknowledges the message sent. This will also occur if the device is
+        not connected to the can-bus. The CAN-Standard declares, that the Chip
+        has to retry a given message as long as it is not sent successfully
+        (or it is not cancelled by the application). Every time the chip tries
+        to resend the message an Acknowledge-Error-Interrupt is generated. At
+        high baud rates this can lead in extremely high CPU load just for
+        handling the interrupts (and possibly the error handling in the
+        application). To prevent this Interrupt-Flooding we disable the ACKE
+        once it is seen as long we didn't transfer at least one message
+        successfully.  From Frank Benkert.
+      - SAMV7 MCAN:  Make delete_filter functions more robust.  From Frank
+        Benkert.
+
+    * Atmel SAMA5 Drivers:
+
+      - SAMA5 PWM:  Driver does not build when executing from SDRAM before
+        board frequencies are not constant.  Rather, the bootloader configures
+        the clocking and we must derive the clocking from the MCK left by the
+        bootloader.  This means lots more computations.  This is untested on
+        initial change because I don't have a good PWM test setup right now.
+
+    * Misoc LM32:
+
+      - Misoc LM32: Corrects a bug that never occured in qemu on simulation or
+        real fpga. The error was that the r1 register was being modified out
+        of context switching and not restoring it.  From Ramtin Amin
+
+    * NXP Freescale i.MX6:
+
+      - i.MX6 interrupt handling:  Additional logic needed to handle nested
+        interrupts when an interrupt stack is used.  Nesting can occur because
+        SGI interrupts are non-maskable.
+
+    * NXP Freescale LPC43xx Drivers:
+
+      - LPC43xx serial: Fix a typo in ioctl TIOCSRS485 ioctl.  From Vytautas
+        Lukenskas.
+      - LPC43xx serial:  Restore RS485 mode on serial port open (if RS485 is
+        enabled via menuconfig).  From Vytautas Lukenskas.
+      - LPC43xx SD/MMC:  Correct some definitions on SMMC control register in
+        lpc43_sdmmc.h.  From Alan Carvalho de Assis.
+      - LPC43xx SD card:  Correct pin configuration options needed for SD card
+        pins.  From Alan Carvalho de Assis.
+
+    * SiLabs EFM32:
+
+      - EFM32: Fix a compilation error.  From Pierre-noel Bouteville.
+
+    * STMicro STM32 Drivers:
+
+      - STM32 CHxN channels are always outputs.  From Sebastien Lorquet.
+      - STM32 DAC:  Fix shift value whenever there are is a DAC2 and, hence,
+        up to three interfaces.  From Marc Rechté.
+      - STM32 F1:  Add TIM8 to STM32F103V pinmap.  From Maciej Wójcik.
+      - STM32 F1: Fix for F1 RTC Clock, tested on F103.  From Maciej Wójcik.
+      - STM32 F3:  STM32F303xB and STM32F303xC chips have 4 ADCs.  From Paul
+        A. Patience.
+      - STM32 F4:  A new implementation of the STM32 F4 I2C bottom half.  The
+        common I2C as this did not handled correctly in the current
+        implementation (see also https://github.com/PX4/NuttX/issues/54).  The
+        changes almost exclusively affect the ISR.  From Max Kriegleder.
+      - STM32 F4  OTGHS Host:  If STM32F446 increase number of channels to
+        16.  From Janne Rosberg.
+      - STM32 F4:  I think, that Size is (highest address+1 - Base address).
+        Base address has been removed and if address+count >= size we are
+        outside of the Flash.  From David Sidrane.
+      - STM32 F4:  Fix ADC compilation error when DMA isn't enabled. From Paul
+        A. Patience.
+      - STM32 F4:  STM32F427 was rebooting. Over reached family.  From David
+        Sidrane.
+      - STM32 F4:  Added STM32F469 RAM size and deliberated STM32F446 size.
+        From David Sidrane.
+      - STM32 F4:  Typo in stm32f76xxxx_pinmap.h edited online with
+        Bitbucket.  From David Sidrane.
+      - STM32 F7:  stm32_i2c.c Dejavu.  Fixes a bug previously found in the
+        F4. From David Sidrane.
+      - STM32 F7:  OTGDEV fixed typo.  From David Sidrane.
+      - STM32 F7:  Fix to SPI-Master driver.  Without this the chip select
+        decoding feature will not work properly.  From Michael Spahlinger.
+      - STM32 F7:  STM32F7 SD/MMC driver depends on CONFIG_SDIO_DMA which is
+        only defined in stm32/Kconfig.  Changed to CONFIG_STM32F7_SDMMC_DMA
+        and defined in stm32f7/Kconfig.
+      - STM32 F7:  Fix some STM32F7 copy paste errors.  From David Sidrane.
+      - STM32 L4:  Complementary PWM outputs on STM32L4"  (1) too many
+        parentheses when calculating max chan count and (2) channel 4 does not
+        have a complementary output. From Sebastien Lorquet.
+      - STM32 L4:  Fix I2C devices RCC registers.  From Sebastien Lorquet.
+      - STM32 L4:  Enable and renaming for 32l4 UARTs 4 and 5. From Sebastien
+        Lorquet.
+      - STM32 L4:  Change the way to configure quadrature encoder prescalers.
+        From Sebastien Lorquet.
+      - STM32 L4:  Correct USART1/2 definitions.  Use default mbed UART4
+        settings.  From Sebastien Lorquet.
+
+    * STMicro STM32 Boards:
+
+      - STM32F103 Minimum: Fix Timers 2 to 7 clock frequencies. From Alan
+        Carvalho de Assis.
+      - Nucleo-F303RE:  Remove duplicate setting from board.h.   From  Marc
+        Rechté.
+      - Nucleo F303RE: Various fixes to get the ADC configuration building
+        again after PR.  Refresh all configurations.
+      - Nucleo L476RG: Add better selection of timer.
+
+    * TI Tiva Boards:
+
+      - DK-TM4C129x: Typo fix.  From Wolfgang Reißnegger.
+
+    * Xtensa ESP32:
+
+      - ESP32 core v2:  Flush the UART TX buffer in the esp32 serial shutdown
+        routine. The ROM bootloader does not flush the FIFO before handing
+        over to user code, so some of this output is not currently seen when
+        the UART is reconfigured in early stages of startup.  From Angus
+        Gratton.
+      - Xtensa ESP32:  Corrects a problem with dispatching to signal
+        handlers:  Cannot vector directly to the signal handling function as
+        in other ABIs under the Xtensa Window ABI.  In that case, we need to
+        go through a tiny hook when performs the correct window call (call4)
+        otherwise registers will be scrambled in the signal handler.
+
+    * Xtensa ESP32 Boards:
+
+      - ESP32 core v2:  Changes the openocd config file's default flash
+        voltage from 1.8V to 3.3V. This is not necessary right now, but may
+        save some hard-to-debug moments down the track (3.3V-only flash
+        running at 1.8V often half-works and does weird things...).  From
+        Angus Gratton.
+
+    * C Library/Header Files:
+
+      - libc/stdio:  Fixes sscanf() %sn where strlen(data) < n.  From David
+        Sidrane.
+      - libc/stdio:  Include wchar.h in lib_libvsprintf.c to fix compilation
+        error.  From Alan Carvalho de Assis.
+      - include/sys/time.h: timersub macro modified per recommendations of
+        phreakuencies.
+      - include/ctype.h and cxx/cctype:  Implement ctype.h functions as inline
+        if possible.  cctype can then properly select namespace.
+      - include/: Fix a number of header files with mismatched 'extern C {'
+        and '}'.
+      - libc/unisted:  Change brings strtol() and related functions more
+        conformant with POSIX.  Corner cases like strtol(-2147483648, NULL,
+        10) now pass clang -fsanitize=integer without warnings.  From Juha
+        Niskanen.
+      - libc/unistd: sleep() was returning remaining nanoseconds (kind of),
+        instead the remaining seconds.  From Eunbong Song.
+      - termios.h:  Fix CRTSCTS define to include input and output flow. From
+        Lorenz Meier.
+
+    * Build/Configuration System:
+
+      - configs/*/defconfig: The buttons example was changed to archbuttons.
+        As a result all of the button configurations are broken and need some
+        renaming in the defconfig files.  Noted by Frank Berkert.
+      - config/*/defconfgs: More fallout from name change of
+        apps/examples/buttons to archbuttons.
+      - configs:  All QE encoder files.  Last change made timer hard-coded to
+        3. Make configurable.
+      - configs: Remove all traces of the no-longer existent ARCHBUTTONS
+        example.  Remove all button configurations that depended on the
+        obsoleted ARCHBUTTON example.
+      - minnsh Configurations:  Remove minnsh configurations and support
+        logic:  up_getc() and lowinstream.  This was an interesting exercise
+        to see just how small you could get NuttX, but otherwise it was not
+        useful:  (1) the NSH code violated the OS interface layer by callup
+        up_getc() and up_putc() directly, and (2) while waiting for character
+        input, NSH would call up_getc() which would hog all of the CPU.  Not a
+        reasonable solution other than as a proof of concept.
+
+    * Application Build/Configuration System:
+
+      - Make.defs:  Using wrong link script if native window tool used with
+        Cygwin.
+
+    * apps/platform:
+
+      - ESP32 Core v2 Platform: Fix some naming that prevented building the
+        C++ support.
+
+    * apps/nshlib:
+
+      - NSH Library:  nsh_getdirpath(), use snprint instead of sprintf to
+        avoid possibility of buffer overrun.  Noted by Chung Hwan Kim.
+
+    * apps/system:
+
+      - Remove std_readline().  This called up_getc() and up_putc() directly,
+        violating the POSIX OS interface.
+
+    * apps/netutils:
+
+      - FTPD: Fixed bug that didn't free ftpd ressources on exit.  From Pascal
+        Speck.
+      - NTP client: Fix missing left parenthesis.  From Pierre-Noel Bouteville.
+      - cJSON: Import patch to fix:cJSON_PrintUnformatted() behaves unexpected
+        if an empty array shall be printed to text. from Jerome Lang
+        2012-04-19. From Pierre-Noel Bouteville.
+      - esp8266 update cosmetic and many bug fix.  From Pierre-Noel Bouteville.
+      - FTPD:  Fix bug un ftpd file or socket may be not closed.  From
+        Pierre-Noel Bouteville.
+
+    * apps/modbus:
+
+      - Modbus Master is missing many files and doesn't compile at all. More
+        details in
+        https://groups.yahoo.com/neo/groups/nuttx/conversations/topics/13734.
+        From Vytautas Lukenskas.
+
+    * apps/examples:
+
+      - The examples/qencoder app was trying to init the encoder by a direct
+        call into the board, cheating in a local header to declare the
+        normally unavailable function prototype.  From Sebastien Lorquet.
+      - apps/examples/timer: Should detach signal handler before exiting.
+      - examples/qencode: The examples/qencoder app was trying to init the
+        encoder by a direct call into the board, cheating in a local header to
+        declare the normally unavailable function prototype.  From Sebastien
+        Lorquet.
+      - apps/examples/archbuttons:  Removed becaue it violates OS interface
+        principles.
+      - examples/adc, pwm, can: Remove all usage of BOARDIOC_ADCTEST_SETUP,
+        BIOARDIOC_PWMSETUP.  Remove BOARDIOC_CAN_INITIALIZE.  CAN
+        initialization is now done in the board initialization logic just like
+        every other device driver.
+      - examples/ostest: Add some delays to the pthread cancellation test.
+        With deferred cancellation enabled, things happen more asynchronously.
diff --git a/_releases/7.20.md b/_releases/7.20.md
new file mode 100644
index 0000000..48b2739
--- /dev/null
+++ b/_releases/7.20.md
@@ -0,0 +1,502 @@
+---
+layout: page
+released: true
+apache: false
+title: 7.20
+date: 2017-03-09
+summary: >
+    Release v7.20
+
+artifact-root: "https://bitbucket.org/nuttx/nuttx/downloads/"
+checksum-root: ""
+key-file: ""
+
+source-os-dist:
+    - "nuttx-7.20.tar.gz"
+source-app-dist:
+    - "apps-7.20.tar.gz"
+
+---
+
+
+<!--
+{% comment %}
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to you under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+{% endcomment %}
+-->
+
+{% include JB/setup %}
+
+NuttX-7.20 Release Notes
+------------------------
+
+The 120th release of NuttX, Version 7.20, was made on March 8, 2017,
+and is available for download from the Bitbucket.org website.  Note
+that release consists of two tarballs:  nuttx-7.20.tar.gz and
+apps-7.20.tar.gz.  These are available from:
+
+    https://bitbucket.org/nuttx/nuttx/downloads
+    https://bitbucket.org/nuttx/apps/downloads
+
+Both may be needed (see the top-level nuttx/README.txt file for build
+information).
+
+Additional new features and extended functionality:
+
+    * Core OS:
+
+      - Kernel Modules:  Module initializer may now return a symbol table.
+      - Modules:  Extend the module interface so that we can access symbols
+        exported by the module.
+      - Shared Libraries:  In the FLAT build mode, kernel modules may be
+        used to provide minimal shared library functionality.
+      - Modules/Shared Libraries:  Add support for dependencies between
+        modules.
+      - Module Library:  Add build a configuration logic for a shared module
+        library.
+      - Shared Libraries: Implement module based shared libraries for the
+        PROTECTED mode build.
+      - Interrupt handling:  irq_attach() now includes an argument of type
+        xcpt_t that retained with the handler address.  That argument is
+        then provided to the interrupt handler when the interrupt occurs. 
+        The common parameter passing replaces the ad hoc parmater passing
+        implemented in current drivers.  From Mark Schulte.
+      - Adapt many drivers to utilize the IRQ argument feature.
+      - All functions that used to return an xcpt_t old handler value, now
+        return an int error code.  The oldhandler value is no longer useful
+        with the recent changes to the interrupt argument passing.  Some of
+        the functions effected include board_button_irq(), arch_phy_irq(),
+        STM32 EXTI functions (Alarm, COMP, PVD), GPIO interrupt logic like
+        kinetis_pinirq(), stm32_gpiosetevent(), and others.
+      - IRQ subsystem:  Add support for smaller interrupt tables as
+        described at
+        http://www.nuttx.org/doku.php?id=wiki:howtos:smallvectors .  This
+        is partially the work of Mark Schulte.
+
+    * File Systems/Block and MTD Drivers
+
+      - Pseudo File System:  Add support for soft links in the top-level
+        psuedo file system.
+      - Soft links:  Add an implementation of readlink().
+      - Add fstat() support.  Implement fstat() method in binfs, romfs,
+        unionfs, tmpfs, nxffs, nfx, hostfs, procfs, and smartfs.
+      - fstat:  Add fstat() support to FAT.  From Alan Carvalho de Assis.
+
+    * Graphics/Display Drivers:
+
+      - Fonts: Add support for Tom Thumb small mono-space font. From Alan
+        Carvalho de Assis.
+      - Graphics:  Separated of font cache from graphics/nxterm.  Now in
+        libnx/nxfronts where it can be shared with other grapics
+        applications.
+
+    * Networking/Network Drivers:
+
+      - Ethernet drivers:  Add framework for serialization in the case where
+        multiple low-priority work queues are used.
+
+    * Other Common Device Drivers:
+
+      - Add capabilities() method to SDIO interface.  Remove
+        CONFIG_SDIO_WIDTH_D1_ONLY.  That should not be a global propertie,
+        but rather a capability/limitation of single slot when there may be
+        multiple slots.
+      - Removed dmasupported() method from the SDIO interface.  That is now
+        a bit in the capability set.
+      - drivers/sensors: Add driver for the ST L3GD20 3 axis gyro.  From
+        raiden00.
+
+    * Atmel SAM3/4:
+
+      - SAM3/4: Add support for ATSAM4S4C.  From Wolfgang Reißnegger.
+
+    * NXP Freescale i.MX6 Boards:
+
+      - Sabre 6quad:  Enable examples/smp test in i.MX6 SMP/NSH
+        configurations.
+
+    * NXP Freescale Kinetis:
+
+      - Kinetis:  Added support for CHIP_MK60FN1M0VLQ12 chip.  From Maciej
+        Skrzypek.
+      - Kinetis:  Add support for K64/K66 RTC lower half driver. From Neil
+        Hancock.
+      - Kinetis:  Extensive modification of MCG support based feature
+        configuration.  From David Sidrane.
+      - Kinetis:  Add support for K66 family.  From David Sidrane.
+      - Kinetis:  Created a kinetis SIM versioning scheme pulled in by
+        Kinetis chip.h.  From David Sidrane.
+      - Created a kinetis PMC versioning scheme pulled in by Kinetis
+        chip.h.  From David Sidrane.
+      - Kinetis:  Extend clock configuration logic.  Refactor
+        implementation.  From David Sidrane.
+
+    * NXP Freescale Kinetis Drivers:
+
+      - Kinetis Ethernet:  Kinetis Support RMII clock source select.  This
+        defined the RMII clock source select bits and allows the selection
+        to be made via Kconfig. From David Sidrane.  Freedom-K66F uses
+        ENET_1588_CLKIN as RMII clock
+      - Kinetis Serial:  Added configurable 1|2 stop bits.
+        HAVE_SERIAL_CONSOLE -> HAVE_UART_CONSOLE to be consistent with
+        HAVE_LPUART_CONSOLE naming. From David Sidrane.
+      - Kinetis LPserial:  Add LPUART serial driver and Clock
+        configuartaion to freedom-k66f board.  From David Sidrane.
+      - Kinetis USB device:  Refactor clocking in kinetis_usbdev.  From
+        David Sidrane.
+
+    * NXP Freescale Kinetis Boards:
+
+      - Add support for NXP Freedom-k66f development board.  From David
+        Sidrane.
+      - Kinetis Freedom K66F:  Add Ethernet support.  From David Sidrane.
+      - Add twr-k64f120m config.  From Marc Rechté.
+
+    * NXP Freescale LPC43xx Boards:
+
+      - Bamboo-200E: Add netnsh configuration.  From Alan Carvalho de Assis.
+      - Add usbnsh config to Bambino 200E board.  From Alan Carvalho de
+        Assis.
+
+    * STMicro STM32:
+
+      - STM32 F7: Allow board to configure HSE clock in bypass-mode. This
+        is needed to enable HSE with Nucleo-F746ZG board.  From Jussi
+        Kivilinna.
+      - STM32 F7: stm32_allocateheap: allow use DTCM memory for heap. 
+        STM32F7 has up to 128KiB of DTCM memory that is currently left
+        unused.  This change adds DTCM to main heap if
+        CONFIG_STM32F7_DTCMEXCLUDE is not enabled.  From Jussi Kivilinna.
+      - Add basic support for the STM32F334.  From Mateusz Szafoni.
+      - STM32F33XX DAC, OPAMP, COMP, ADC, HRTIM headers.   From Mateusz
+        Szafoni.
+
+    * STMicro STM32 Drivers:
+
+      - STM32 F7 SDMMC:  Add support for single bit operation on SDMMC2.
+      - STM32 L4:  Port STM32L4 SAI driver from MDK.
+      - STM32 L4:  Bring power management logic from Motrola MDK into NuttX.
+      - STM32 L4:  Bring LPTIM driver in from the Motorola MDK.
+      - STM32 L4 COMP: Port from Motorola MDK.
+
+    * STMicro STM32 Boards:
+
+      - STM32F429i Discovery: Add support for NxWM on STM32F429i-Disco
+        board. From Alan Carvalho de Assis.
+      - STM32F103 Minimum: Add support for nRF24 on STM32F103-Minimum
+        board. From Alan Carvalho de Assis.
+      - Olimex STM32 P407: Add a NSH protected build configuration; Enable
+        procfs/ in all configurations.
+      - Olimex STM32 P407: Add support for on-board microSD slot.
+      - STM32F429i Discovery: add support for the L3GD20 driver.  From
+        raiden00.
+      - STM32F103 Minimum: Add support to QEncoder on STM32F103 Minimum
+        board.   From Alan Carvalho de Assis.
+      - Olimex STM32 P407:  Add external SRAM support.
+      - Add basic support for the Nucleo F334R8 board.  From Mateusz
+        Szafoni.
+      - STM32F103 Minimum: Add SDCard support over SPI on STM32F103-Minimum
+        board.  From Alan Carvalho de Assis.
+      - STM32F103 Minimum: Add support to USB Device on STM32F103-Minimum
+        board.  From Alan Carvalho de Assis.
+
+    * C Library/Header Files:
+
+      - compiler.h: packed_struct replaced by begin_packed_struct and
+        end_packed_struct. Now support IAR style packed structures.  From
+        Aleksandr Vyhovanec.
+      - Math library: Leverage optimized ARMv8-M functions from BSD license
+        ARM file.
+      - Shared libraries:  Add a non-standard dllfnc.h function to set the
+        symbol table.
+      - C Library: Add a support for setvbuf(). This is a collaborative
+        effort.  Alan Carvalho de Assis did the initial prototype.
+      - C Library: Add setbuf() which is a trivial wrapper around setvbuf().
+      - C library:  Add swab().
+      - C library: Add strtoimax and strtoumax.
+      - C library:  Add ffs(), rindex(), an index().  Add strings.h.  Move
+        strcasecmp, strncasecmp, bzero, bcmp, and bcopy to where they
+        belong in strings.h.h, not string.h.  bzero, bcmp, and bcopy are
+        legacy functions; the contemporary counterparts should be used
+        instead.
+      - C library: Add fstatfs().
+      - Update cwchar.  Add cwctype.
+
+    * Build/Configuration System:
+
+      - Add configuration support for builds with Ubuntu under Windows 10.
+
+    * Tools:
+
+      - tools/noteinfo.c: A hack tool that I use to analyze some sched_note
+        output.  Needs a home and may be useful to others.
+      - tools/mkconfig.c: Add logic to keep all of the buffering options in
+        sync.
+
+    * NSH: apps/nshlib:
+
+      - NSH: Add support for the 'ln' command.
+      - NSH ls command: if node is a symobolic link, use readlink() to get
+        and the display the target of the symblic link.
+      - NSH: Add readlink command.
+
+    * Applications: apps/examples:
+
+      - apps/examples/nxtext: Make line spacing configurable.
+      - apps/system/zmodem/host/nuttx/compiler.h synchronized with
+        nuttx/nuttx/include/nuttx/compiler.h.  From Aleksandr Vyhovanec.
+      - apps/examples/sotest:  Add a test for shared libraries.
+      - apps/examples/ostest:  Add a test of setvbuf().
+      - apps/examples/stat:  Add a simple test for stat(), fstat(),
+        statfs(), and fstatfs().
+
+Works-In-Progress:
+
+    * IEEE802.14.5/6LowPAN.  Hooks and framework for this effort were
+      introduced in NuttX-7.15.  Work has continued on this effort on
+      forks from the main repositories, albeit with many interruptions.
+      The completion of this wireless feature will postponed until at
+      least NuttX-7.21.
+
+Bugfixes.  Only the most critical bugfixes are listed here (see the
+ChangeLog for the complete list of bugfixes and for additional, more
+detailed bugfix information):
+
+    * Core OS:
+
+      - SMP: There were certain conditions that we must avoid by preventing
+        the release of the pending tasks while withn a critical section. 
+        But this logic was incomplete; there was no logic to prevent other
+        CPUs from adding new, running tasks while on CPU is in a critical
+        section.  This commit corrects this.  This is matching logic in
+        sched_addreadytorun to avoid starting new tasks within the critical
+        section (unless the CPU is the holder of the lock).  The holder of
+        the IRQ lock must be permitted to do whatever it needs to do.
+      - SMP: Make checks for CPU lock set more robust.  There are certain
+        conditions early in initialization on during interrupt handling
+        where things need to be done a little differently.
+      - sched_cpulocked:  Avoid use of spinlock.  That has been reported to
+        cause a deadlock (2016-12-28).
+      - SMP: Fix a gap where we may try to make modifications to the task
+        lists without being in a critical sections.  That permits
+        concurrent access to the tasks lists and many subtle problems. 
+        This fix just remains in the critical section throughout the
+        operation (and possible until the task is restore in the event of a
+        context switch).  Makes a big difference in stability.
+      - SMP: Fix an error in critical section logic when performing a
+        context switch from an interrupt handler.  The g_cpu_irqset bit was
+        not being set for the CPU so other CPUs did not know about the
+        critical section.
+      - SMP Signals: Fix some SMP signal delivery logic. Was not handling
+        some critical sections correctly and was missing logic to signal
+        tasks running on other CPUs.
+      - SMP:  Fix timer related issues:  Round robin and sporadic
+        scheduling were only being performed for tasks running on the CPU
+        that processes the system timer interrupt.  Similary, CPU load
+        measurements were only be processed for running on the CPU that
+        receives the sampling interrupt.
+      - sched_note: Fix spinlock instrumentation.  From Masayuki Ishikawa.
+      - In all implementations of _exit(), use enter_critical_section() vs.
+        disabling local interrupts.
+      - sigtimedwait:  When timer expires, up_unblock_task() is called. 
+        This is okay in the single CPU case because interrupts are disable
+        in the timer interrupt handler.  But it is insufficient in the SMP
+        case.  enter_ and leave_critical_section() must be called in order
+        to manage spinlocks correctly.
+      - Fix a compile error: in sched_cpuload.c:Line136, the variables ts
+        and secs are not defined if CONFIG_CPULOAD_ONESHOT_ENTROPY = 0.
+        However, these variables are used regardless of
+        CONFIG_CPULOAD_ONESHOT_ENTROPY at lines~180:onwards.  From rg.
+      - CPU load: Correct computation of the nominal period to use when the
+        source is a oneshot timer.
+      - Cancellation points:  Fix some backward logic in conditional
+        compilation.
+      - Remove an unused variable when calling sigwaitinfo() and
+        sigtimedwait().  From Masayuki Ishikawa.
+
+    * File System/Block and MTD Drivers:
+
+      - procfs:  Correct to snprintf-related errors in fs_procfsproc.c.
+        Resolves issue #24.
+      - Add logic to VFS rename:  If target of rename exists and is a
+        directory, then the source file should be moved 'under' the target
+        directory. POSIX also requires that if the target is a file, then
+        that old file must be deleted.
+      - Fix open() a block device with
+        CONFIG_DISABLE_PSEUDOFS_OPERATIONS=y. From Masayuki Ishikawa.
+      - File System: Don't build block driver proxy if PSEUDOFS_OPERATIONS
+        are disabled.
+      - sendfile():  Fix error introduced with commit
+        ff73be870e38959b0aaee5961dc47b4b58dc2d86.  Noted by Maciej Wójcik.
+
+    * Graphics/Graphic Drivers:
+
+      - NxWM configurations.  If using a 7-bit character set, then the
+        cursor character cannot be 137 (graphic block).  Use 95
+        (underscore) instead.
+      - NX server: Correct message queue names.  Should not be at /dev,
+        but rather relative to /var/mqueue.
+
+    * Common Drivers:
+
+      - MMCSD_SDIO: Only wait for card ejected if card detection is
+        supported. From Alan Carvalho de Assis.
+      - Typos withim mtd/ with Macronix MX25L.  In
+        NuttX/drivers/mtd/Make.defs letters X between M and 25 are
+        missing.  Noted by Oleg Evseev.
+      - USBMSC: Always set LUN readonly flag.  From Wolfgang Reißnegger.
+      - drivers/lcd:  ssd1306_configspi() must have global scope.
+      - MMC/SD SDIO:  Some drivers need to start DMA before sending CMD24
+        and some AFTER.  From Alan Carvalho de Assis.
+      - drivers/tone.c:  Handle configuration with multiple PWM channels.
+        This resolves issue #30: Audio Tone Generator and PWM Multiple
+        Output Channel options.
+      - drivers/tone.c:  50% duty needs to be expressed a a fixed precision
+        number.
+      - drivers/spi/Kconfig:  There is too much SPI in the configuration
+        menu; SPI Driver Support menu is empty.  From Maciej Wójcik.
+      - option to enable Memory Card debug output was hidden with SD cards
+        connected through SPI.   From Maciej Wójcik.
+      - usbhost_cdcacm: fix tx outbuffer overflow and remove now invalid
+        assert.  From Janne Rosberg.
+
+    * Networking/Network Drivers:
+
+      - Networking: Fixed some issues that prevented IPv6 from working with
+        IPv4 enabled.  From Pascal Speck.
+      - Networking: fixed a nullptr-dereference on iob_clone.  From Pascal
+        Speck.
+      - Ethernet: Need two work structures (minimum) in all Ethernet
+        drivers so that pending poll work is not lost when an interrupt
+        occurs.
+
+    * ARMv7-R:
+
+      - I found an issue inside the cp15_coherent_dcache function:  The
+        "mcr CP15_BPIALLIS(r0)" should only be used with SMP
+        configurationa. In non-SMP configuration this instruction could
+        become undefined.  From Manohara HK.
+
+    * Atmel SAM3/4 Drivers:
+
+      - SAM3/4: GPIO bit numbering typo fixes.  From Wolfgang Reißnegger.
+
+    * Atmel SAM3/4 Boards:
+
+      - Add missing sched_note_*() calls in sam4cm SMP functions.
+
+    * NXP/Freescale Kinetis:
+
+      - Kinetis: Fixed wrong MCG VDIV calculation on new NXP K60.  From
+        Maciej Skrzypek.
+      - Kinetis: Need to set HAVE_UART_DEVICE when UART4 is selected.  From 
+        Maciej Skrzypek.
+      - Kinetis MCG: Wrong FRDIV set in MCG_C1.  From Maciej Skrzypek.
+
+    * NXP/Freescale Kinetis Drivers:
+
+      - Kinetis Serial: Fixed compile error when UART5 is selected.  From
+        Maciej Skrzypek.
+      - Kinetis SDHC - Enable clock after selected.  From David Sidrane.
+      - Kinetis:  Correct some SPI and I2C configuration issues.  From
+        David Sidrane.
+      - Kinetis Ethernet:  Add #define for number of loops for auto
+        negotiation to complete.  From Marc Rechté.
+      - Kinetis Werial:  Fixed up_rxint - did not disable the RX
+        interuppts. There was an OR where and AND NOT was needed.  From
+        David Sidrane.
+
+    * NXP/Freescale LPC43xx:
+
+      - LPC43 pinset definitions:  Add more 1 bit to pinset to reach
+        SFSCLK0-SFSCLK3. Remove PINCONFIG_DIGITAL.  From Alan Carvalho de
+        Assis.
+
+    * NXP/Freescale LPC43xx Drivers:
+
+      - LPC43 serial:  Correct conditional logic that selects /dev/ttySN.
+        Problem noted by Alan Carvalho de Assis.
+
+    * NXP/Freescale i.MX6:
+
+      - i.MX6: Fix clearing GPT status register.  From Masayuki Ishikawa.
+
+    * STMicro STM32:
+
+      - STM32, STM32L4 Oneshot: Fix logic so that it can support multiple
+        oneshot timers.
+      - STM32 F7: Added missing ARCH_HAVE_RESET for F7.  From David Sidrane.
+      - STM32:  Add missing STM32_BKP_BASE.  From David Sidrane.
+      - STM32 and STM32F7: Fixes the BKP reference counter issue.  From
+        David Sidrane.
+
+    * STMicro STM32 Drivers:
+
+      - Fix for SAMv7 SPI: DLYBS value was calculated, but never written to
+        any registers. This led to incorrect timings on the bus.  From
+        Michael Spahlinger.
+      - STM32 QEncoder: Fix QEncoder driver, based on STM32L4 driver.  From
+        Alan Carvalho de Assis.
+      - STM32 QEncoder:  Enable clocking to the timer on QE setup; disable
+        clock on QE teardown.
+      - STM32 Ethernet: Need two work structures so that pending poll work
+        is not lost when an interrupt occurs.  This change has also been
+        ported to all all other effected Ethernet drivers.
+      - STM32 OTGHS host:  stm32_in_transfer() fails and returns NAK if a
+        short transfer is received.  This causes problems from class
+        drivers like CDC/ACM where short packets are expected.  In those
+        protocols, any transfer may be terminated by sending short or NUL
+        packet.  From Janne Rosberg.  Adapted Janne Rosberg's patch to
+        STM32 OTGHS host to OTGFS host, and to similar USB host
+        implementations for STM32 L4 and F7.
+
+    * STMicro STM32 Boards:
+
+      - STM32F4 Discovery: Fix issues with QEncoder support.  From Alan
+        Carvalho de Assis.
+
+    * C Library/Header Files:
+
+      - Add debug assertion in libdtoa to catch attempts to use floating
+        point output formats from within an interrupt handler.  That will
+        cause assertions or crashes downstream because __dtoa will attempt
+        to allocate memory.  From Pierre-noel Bouteville.
+      - libc: Fix ARMv7-A/R memcpy assembly.
+      - Fix return value if x is NaN.  From Aleksandr Vyhovanec.
+
+    * apps/nshlib:
+
+      - NSH: Eliminate a warning when all memory inspection commands are disabled.
+
+    * apps/graphics:
+
+      - apps/graphics/traveler/tools: Fix linkage issue. The -lm should
+        come after -o binname.  From Alan Carvalho de Assis.
+
+    * apps/netutils:
+
+      - The CONFIG_NETUTILS_HTTPD_PATH constant is used by httpd_mmap.c and
+        httpd_sendfile.c but It was not present in Kconfig menu.  From
+        Maciej Wójcik.
+
+    * apps/examples:
+
+      - Configurations that enable OSTEST must not disable signals.
+      - apps/examples/ostest:  Was ignoring
+        CONFIG_EXAMPLES_OSTEST_FPUTESTDISABLE.
+      - In apps/examples/mtdpart/mtdpart_main.c where
+        CONFIG_EXAMPLES_MTDPART_NPARTITIONS defining is checked should be
+        #ifndef instead of #ifdef.  Noted by Oleg Evseev.
diff --git a/_releases/7.21.md b/_releases/7.21.md
new file mode 100644
index 0000000..9234663
--- /dev/null
+++ b/_releases/7.21.md
@@ -0,0 +1,1029 @@
+---
+layout: page
+released: true
+apache: false
+title: 7.21
+date: 2017-06-16
+summary: >
+    Release v7.21
+
+artifact-root: "https://bitbucket.org/nuttx/nuttx/downloads/"
+checksum-root: ""
+key-file: ""
+
+source-os-dist:
+    - "nuttx-7.21.tar.gz"
+source-app-dist:
+    - "apps-7.21.tar.gz"
+
+---
+
+
+<!--
+{% comment %}
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to you under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+{% endcomment %}
+-->
+
+{% include JB/setup %}
+
+NuttX-7.21 Release Notes
+------------------------
+
+The 121st release of NuttX, Version 7.21, was made on June 6, 2017,
+and is available for download from the Bitbucket.org website.  Note
+that release consists of two tarballs:  nuttx-7.21.tar.gz and
+apps-7.21.tar.gz.  These are available from:
+
+    https://bitbucket.org/nuttx/nuttx/downloads
+    https://bitbucket.org/nuttx/apps/downloads
+
+Both may be needed (see the top-level nuttx/README.txt file for build
+information).
+
+Additional new features and extended functionality:
+
+    * Core OS:
+
+      - pthread rwlocks:  Add an implementation for read/write locks
+        (rwlocks) into the pthread library.  These locks are writer
+        priority, such that if any writers come in they are given priority
+        for writing.  From Mark Schulte.
+      - pthread robust mutexes:  Implement robust mutex support:
+        pthread_mutex_lock() and trylock() will return EOWNERDEAD if the
+        mutex is locked by a thread that no longer exists.  Add
+        pthread_mutex_consistent() to recover from this situation.  Keep
+        list of all mutexes held by a thread in a list in the pthread's TCB.
+        When pthread exits or is cancelled, mutexes held by thread are
+        marked inconsistent and the highest priority thread waiting for the
+        mutex is awakened.  There is a configuration option to (a) support
+        only robust mutexes, (b) support only traditional unsafe mutexes,
+        or (c) Support both unsafe and robust mutexes via
+        pthread_mutexattr_get/setrobust().
+      - pthread cancellation points:  Add logic to disable cancellation
+        points within the OS.  This is useful when an internal OS function
+        that is NOT a cancellation point calls an OS function which is a
+        cancellation point.  In that case, irrecoverable states may occur if
+        the cancellation is within the OS. From Juha Niskanen.
+      - clock:  Add clock_resynchronize and use subseconds RTC.  Add
+        clock_resynchronize for better synchronization of CLOCK_REALTIME and
+        CLOCK_MONOTONIC to match RTC after resume from low-power state.  Add
+        up_rtc_getdatetime_with_subseconds under
+        CONFIG_ARCH_HAVE_RTC_SUBSECONDS to allow initializing (and
+        resynchronizing) system clock with subseconds accuracy RTC.  From
+        Jussi Kivilinna.
+      - clock:  Add new type ssystime_t for relative 64-bit ticks, change
+        ticks<->time conversion functions to use ssystime_t.  From Jussi
+        Kivilinna.
+      - clock:  Add testing for 32-bit overflow of 64-bit system timer.  From
+        Jussi Kivilinna.
+
+    * File Systems/Block and MTD Drivers
+
+      - drivers/mtd/w25.c:  Erase sector only if it is not in erased state.
+        From Jussi Kivilinna.
+
+    * Graphics/Display Drivers:
+
+      - drivers/lcd:  Extend st7565 driver to include support for the
+        AQM_1248A.  From Masayuki Ishikawa.
+      - drivers/lcd:  Add driver for Nokia 5110 (Philips PCD8544).  From Alan
+        Carvalho de Assis.
+
+    * Networking/Network Drivers:
+
+      - Extensive modifications to support wireless network (see below).
+      - TUN driver:  Implement TAP (OSI layer 2) mode. Enable by setting the
+        IFF_TAP flag instead of the IFF_TUN flag in ifr_flags.  From Thomas
+        Keh.
+      - Add user-space networking stack API (usrsock).  User-space
+        networking stack API allows user-space daemon to provide TCP/IP
+        stack implementation for NuttX network.  Main use for this is to
+        allow use and seamless integration of HW-provided TCP/IP stacks to
+        NuttX.  For example, user-space daemon can translate /dev/usrsock
+        API requests to HW TCP/IP API requests while rest of the user-space
+        can access standard socket API, with socket descriptors that can be
+        used with NuttX system calls.  From Jussi Kivilinna.
+      - net/:  Network driver now retains Ethernet MAC address in a union so
+        that other link layer addresses may be used in a MULTILINK
+        environment.
+
+    * Wireless Networking/Wireless Drivers:
+
+      - BCM43362:  Support for Broadcom's BCM43362 WiFi chip was contributed
+        by Simon Piriou as part of the port of the Particle Photon board.
+        Only station functionality is available at present.  This work
+        includes not on the WiFi driver, but the support Particle Photon
+        board, the infrasture for IEEE 802.11 FullMAC networking including
+        the network device interface, WiFi configuration, AP scanning and
+        authentication and association with an AP.
+      - IEEE 802.11 networking tools and support.
+      - IEEE 802.15.4 MAC support.  This is an effort that was started some
+        time back by Sebastien Lorquet (with some help from Matte Poppe).
+        Recently, Anthony Merlino has taken on this effort and has made
+        some significant progress.  Using the Microchip MRF24J40 module with
+        the Mikroe Clicker2-STM32 board along with a PC-based IEEE 802.15.4
+        sniffer, Anthonly has verified correct transmittion and receipt of
+        basic frames.
+      - Microchip MRF24J40: As mentioned above, this IEEE 802.15.4 radio
+        driver is now basically functional.
+      - IEEE 802.15.4 Network Driver:  A driver that interfaces the NuttX
+        network with the IEEE 802.15.4 MAC has been developed but is still
+        incomplete and has not been verified.
+      - IEEE 802.15.4 Network Loopback Driver:  A simple IEEE 802.15.4 MAC
+        loopback driver was developed.  This driver allowed for parallel
+        development of the IEEE 802.15.4 MAC and 6loWPAN.
+      - 6loWPAN:  The Contiki 6loWPAN stack has been ported so that works
+        within the NuttX networking framework and interfaces with the new
+        IEEE 802.15.4 MAC via the network driver.  Live testing with
+        IEEE 802.15.4 radios has not yet been done; all testing has used
+        the loopback driver.  There are no known problems and the stack
+        is ready for additional testing.
+      - Add option to enable wireless debug output.
+
+    * Other Common Device Drivers:
+
+      - Add entropy pool and strong random number generator.   Entropy pool
+        gathers environmental noise from device drivers, user-space, etc.,
+        and returns good random numbers, suitable for cryptographic use.
+        Based on entropy pool design from *BSDs and uses BLAKE2Xs algorithm
+        for CSPRNG output.  Patch also adds /dev/urandom support for using
+        entropy pool RNG and new 'getrandom' system call for getting
+        randomness without file-descriptor usage (thus avoiding file-
+        descriptor exhaustion attacks). The 'getrandom' interface is similar
+        as 'getentropy' and 'getrandom' available on OpenBSD and Linux
+        respectively.  From Jussi Kivilinna.
+      - XBox One controller:  Adds USB host driver support for the XBox One
+        controller.  Currently only the latest version (XBox One X)
+        controller works.  The older XBox One controllers do not enumerate
+        correctly.  From Brian Webb.
+      - drivers/analog:  Add basic COMP driver.  From Mateusz Szafoni.
+      - drivers/analog:  Add driver for the LTC1767L ADC.  From Martin
+        Lederhilger.
+      - drivers/analog:  Add basic OPAMP driver.  From Mateusz Szafoni.
+      - drivers/sensors:  Add driver for ST HTS221 humidity sensor.  From
+        Juha Niskanen.
+      - drivers/sensors:  Add driver for ST LPS25H pressure sensor.  From
+        Juha Niskanen.
+      - drivers/sensors:  Add driver for ST LIS2DH accelerometer.  From Timo
+        Voutilainen.
+      - drivers/usbmisc:  Add driver for Fairchild FUSB301 USB type-C
+        controller.  From Harri Luhtala.
+      - RTC:  Add interface for check if RTC time has been set.  New
+        interface allows checking if RTC time has been set.  This allows to
+        application to detect if RTC has valid time (after reset) or should
+        application attempt to get real time by other means (for example, by
+        launching ntpclient or GPS).  From Jussi Kivilinna.
+      - Buttons:  Change return value of board_buttons() and the type of
+        btn_buttonset_t to uint32_t so that more than 8 buttons can be
+        supported.
+      - drivers/syslog:  Use monotonic clock for timestamp when available.
+        From Jussi Kivilinna.
+      - SPI:  Add an instance argument to the SPIDEV definitions.  Thus,
+        instead of specifying a FLASH device, for example, as SPI_FLASH, you
+        would now use SPI_FLASH(0) where the "instance" argument now
+        distinguishes multiple FLASH devices on the same SPI bus.  From
+        Sebastien Lorquet.
+      - IOBs:  Move from net/iob to a better location in mm/iob where they
+        can be shared outside of the networking logic.  Current also used
+        by IEEE 802.15.4 MAC and by syslog (when buffering enabled).
+      - syslog:  Add option to buffer SYSLOG output to avoid interleaving.
+        Uses new shareable IOBs.  Additional logic to assure that the the
+        write from the buffer is a single atomic write in normal debug
+        output.
+      - drivers/can:  Move CAN subsystem to its own directory and put device
+        drivers there.  From Alan Carvalho de Assis.
+      - drivers/can:  Add Microchip MCP2515 CAN Bus controller driver.  From
+        Alan Carvalho de Assis.
+      - drivers/audio:  Add cs43l22 audio driver.  From Taras Drozdovsky.
+      - drivers/input:  Add Cypress MBR3108 CapSense touch button driver.
+        From Juha Niskanen.
+
+    * Simulation
+
+      - configs/sim/sixlowpan:  Configuration for testing the 6loWPAN with
+        the IEEE 802.15.4 loopback network driver.
+
+    * Infineon XMC4xxx:
+
+      - arch/arm/src/xmc4:  Initial, partial support for Infineon XMC4xxx.
+
+    * Infineon XMC4xxx Boards:
+
+      - XMC4500 Relax:  Add basic board support infrastructure of Infineon
+        XMC4500 Relax Lite v1.  Basic serial, LED, and button button support
+        for a simple NSH configuration.  There are still stome remaining
+        issues with serial communications.
+
+    * MicroChip PIC32MX Boards:
+
+      - pic32mx7mmb:  Add support for the Pinquino toolchain.
+      - pic32mx7mmb:  Add support for PROCFS file system.
+
+    * NXP Freescale Kinetis:
+
+      - Kinetis:  Allow board to add pullups on SDHC lines.  From David
+        Sidrane.
+      - Kinetis:  Use optional BOARD_OSC_CR and BOARD_OSC_DIV in clock
+        configuration.  From David Sidrane.
+
+    * NXP Freescale Kinetis Drivers:
+
+      - Kinetis:  Add Timer PWM Module (TPM) to K66 chip.  From David
+        Sidrane.
+      - Kinetis:  Added HW flow control and termios.  From David Sidrane.
+      - Kinetis:  Add ARCH_HAVE_I2CRESET.  From David Sidrane.
+
+    * NXP Freescale LPC43xx:
+
+      - Add support for LPC4337FET256.  From Andreas Bihlmaier.
+
+    * STMicro STM32:
+
+      - Change STM32 tickless to use only one timer.  From Konstantin
+        Berezenko.
+      - STM32 F7:  Add support for LSE RTC and enable RTC subseconds.  From
+        Jussi Kivilinna.
+      - STM32 L1: stm32l15xx_rcc:  Add support for using MSI as system
+        clock. From Juha Niskanen.
+      - STM32 L1:  stm32l15xxx_rcc: configure medium performance voltage
+        range and zero wait-state when allowed by SYSCLK setting.  Zero
+        wait-state for flash can be configured when:  (1) Range 1 and
+        SYSCLK <= 16 Mhz, (2) Range 2 and SYSCLK <= 8 Mhz, or (3) Range 3
+        and SYSCLK <= 4.2 Mhz.  Medium performance voltage range (1.5V)
+        can be configured when SYSCLK is up to 16 Mhz and PLLVCO up to
+        48 Mhz.  From Juha Niskanen.
+      - STM32 F0: Add basic support for STM32F0.  From Alan Carvalho de
+        Assis.
+      - STM32 F0:  Add basic support for STM32F07x family.
+      - STM32 L1: stm32l15xx_rcc: Allow board to configure HSE clock in
+        bypass-mode.  Allows using MCO output from ST-link chip (on Nucleo
+        and Discovery boards) as HSE input.  From Juha Niskanen.
+      - STM32 L1: Add support for STM32L152CC, STM32L152RC and STM32L152VC.
+        From Juha Niskanen.
+      - STM32 F0:  Add support for HSI48.
+      - STM32 L4:  Add support for the STM32L496XX family.  From Juha
+        Niskanen.
+      - STM32 L4: modularize Kconfig to support different product
+        lines/families.  This is modeled after STM32F7. Idea is to declare
+        each chip in Kconfig but allow for flash size override.  Commit adds
+        many STM32L4_HAVE_XXX feature test macros.  From Juha Niskanen.
+      - STM32 L4:  Separate SYSCFG into product line specific files for
+        clarity.  From Juha Niskanen.
+      - STM32 L4:  Add support for many new MCUs from the STM32L4X3XX
+        product line.  From Juha Niskanen.
+      - STM32 L4:  Add dbgmcu header files.  From Juha Niskanen.
+      - STM32 F410:  Add support for STM32F410.  STM32F410 is a version of
+        STM32F4 with 32 KB of RAM and 62 or 128 KB of flash.  From Gwenhael
+        Goavec-Merou.
+
+    * STMicro STM32 Drivers:
+
+      - SDIO:  Extensions to support the SDIO interface to the BCM43362 from
+        Simon Piriou.
+      - STM32 F2:  Add USB OTG HS support for stm32f20xxx cores.  From Simon
+        Piriou.
+      - STM32 F2, F4, and F7:  Add BOARD_DISABLE_USBOTG_HSULPI flag.  From
+        Simon Piriou.
+      - STM32 F33:  Move DMA logic to a separate files + add ADC support.
+        From Mateusz Szafoni.
+      - STM32 F3:  Add COMP support.  From Mateusz Szafoni.
+      - STM32 F33:  Support for COMP character driver.  From Mateusz Szafoni.
+      - STM32 F4:  Implement DMA support for the STM32F4 I2C.  From rg.
+      - STM32 F7:  Add stm32 RNG support.  This is copied from stm32l4.
+        Tested on STM32F746ZG board.  From Juha Niskanen.
+      - STM32 L1:  Add STM32L162VE to chip.h.  From Juha Niskanen.
+      - STM32 F4:  Add I2C3 SDA pin mapping for STM32F411.  From no1wudi.
+      - STM32 L1:  stm32_flash:  Add EEPROM writing for STM32L15XX.  From
+        Juha Niskanen.
+      - STM32 F7:  Serial:  Add interface to get uart_dev_t by USART number,
+        stm32_serial_get_uart.  From Jussi Kivilinna.
+      - STM32 F4:  Provide TIM5 definition for STM32F429.  From Matias v01d.
+      - STM32 F0:  Add an untested port of the F1 USB device to the STM32F0.
+      - STM32 F0:  Add support for the STM32F09X family.  From Juha
+        Niskanen.
+      - STM32 F0:  Initial cut at I2C driver.  Still a work in progress.
+        From Alan Carvalho de Assis.
+      - STM32 F33:  Add OPAMP support.  From Mateusz Szafoni.
+      - STM32 L4: stm32l4_i2c:  Add I2C4 code.  From Juha Niskanen.
+      - STM32 L4:  Add GPIO_PORTI definition.  From Juha Niskanen.
+      - STM32 F7 Serial:  Allow configuring Rx DMA buffer size.  From Jussi
+        Kivilinna.
+      - STM32 L4:  Firewall for stm32l4x3xx.  Not tested for any product
+        family, but now it at least compiles.  L496 devices can have one bit
+        wider Volatile Data Segment.  From Juha Niskanen.
+      - STM32 TIM:  Add method to get timer width.  Freerun timer: Use timer
+        width to get the correct clock rollover point.
+      - STM32 L4:  Add internal flash write support.  From Juha Niskanen.
+      - STM32 L4:  Port stm32l4_serial_get_uart function from STM32F7.  From
+        Juha Niskanen.
+      - STM32 Ethernet:  Add support for KSZ8081 PHY interrupts.  From
+        Sebastien Lorquet.
+      - STM32 F4:  Add I2S driver.  From Taras Drozdovsky.
+      - STM32 L4:  Add IWDG peripheral.  This is the same as for STM32
+        except that prescale and reload can be changed after watchdog has
+        been started, as this seems to work on L4.  From Juha Niskanen.
+      - STM32 F7:  Add SPI DMA support.  From Jussi Kivilinna.
+
+    * STMicro STM32 Boards:
+
+      - Support for the Particle Photon board was contributed by Simon
+        Piriou.  The Photon board is based on a STM32F205G MCU with and on-
+        board BCM43362 WiFi chip that interfaces via the STM32's SDIO
+        interface.  Board configuration support includes, in addition,
+        buttons, LEDS, IWDG, USB OTG HS, and procfs support.  Configurations
+        available for nsh, usbnsh, and wlan configurations.
+      - Clicker2-STM32:  Support for the Mikroelektronika Clicker 2 for
+        STM32 was added by Anthony Merlino.  This board, along with the
+        MRF24J40 Click board is the platform used to deveop the IEEE
+        802.15.4 support.  The boad configuration includes the MRF24J40
+        intialization logic and SPI support.  Configurations exist for nsh,
+        knsh, usbnsh, and mrf24j40-radio.
+      - Nucleo_F334R8:  Add ADC example.  From Mateusz Szafoni.
+      - Nucleo-F334R8:  Add COMP support.  From Mateusz Szafoni.
+      - Nucleo-F334R8:  Use new COMP driver.  From Mateusz Szafoni.
+      - Adds USB host support to stm32f411-disco board.  From Brian Webb.
+      - Add stm32f0discovery board support.  From Alan Carvalho de Assis.
+      - Nucleo-F072RB:  Add board configuration.
+      - Nucleo-F334R8:  Add OPAMP support.  From Mateusz Szafoni.
+      - Nucleo-F072RB:  Add support for the I2C driver used by I2C tools.
+      - Nucleo-L496ZG:  Add nucleo-l496zg board files.  From Juha Niskanen.
+      - Nucleo-F091RC:  Add nucleo-f091rc board files.  From Juha Niskanen.
+      - Nucleo-L432KC:  Add nucleo-l432kc board files.  From Sebastien
+        Lorquet.
+      - Nucleo-L452RE:  Add nucleo-l452re board files.  From Juha Niskanen.
+      - stm32f103-miniumum:  Add board support to use the Nokia 5110
+        LCD display driver.  From Alan Carvalho de Assis.
+
+    * C Library/Header Files:
+
+      - C library:  Add strerror_r().
+      - C Library:  Add wcstoull(), swprintf(), wcstod(), wcstof(), wcstol(),
+        wcstold(), wcstoul(), wcstoll() functions.  Add mbsnrtowcs() and
+        wcsnrtombs() (just returning success).  Add mbtowc() and wctomb() to
+        C++ std namespace.  From Alan Carvalho de Assis.
+      - C Library:  Add ffsl(), ffsll(), fls(), flsl(), flsll() and use
+        GCC's __builtin_ctz/__builtin_clz for faster implementation of these.
+        From Jussi Kivilinna.
+      - fixedmath:  Add square root and b32_t conversion operators.  From
+        Jussi Kivilinna.
+      - locale.h:  Add a bogus definition of locale_t.
+      - C library:  Versions mbrlen and mbsrtowcs taken and adapted from
+        FreeBSD code (at https://github.com/freebsd/freebsd/).  From Matias
+        v01d.
+
+    * Build/Configuration System:
+
+      - Include C++ library in 'make export'.  From Alan Carvalho de Assis.
+      - configs:  Remove all setenv.sh and setenv.bat files.  Remove all
+        references to setenv.sh and setenv.bat from all config README files.
+      - Kconfig/deconfigs:  Add CONFIG_ARCH_TOOLCHAIN_GNU to indicate that
+        the toolchain is based on GNU gcc/as/ld.  This is in addition to the
+        CPU-specific versions of the same definition.
+      - Move prototype for up_cxxinitialize() from nuttx/include/nuttx/arch.h
+        to apps/include/platform/cxxinitialize.h.
+
+    * Tools:
+
+      - Add initialconfig.c so that perhaps in the future we will be able to
+        use this to generate a new configuration from scratch (rather than
+        having to derive new configurations from existing configurations).
+        NOTE: Not yet intregated into the build system.
+
+    * NSH: apps/nshlib:
+
+      - Added support for set [{+|-}{e|x|xe|ex}] [<name> <value>].  Set the
+        'exit on error control' and/or 'print a trace' of commands when
+        parsing scripts in NSH.  The settinngs are in effect from the point
+        of exection, until they are changed again, or in the case of the init
+        script, the settings are returned to the default settings when it
+        exits.  Included child scripts will run with the parents settings and
+        changes made in the child script will effect the parent on return.
+        Use 'set -e' to enable and 'set +e' to disable (ignore) the exit
+        condition on commands. The default is -e. Errors cause script to
+        exit.  Use 'set -x' to enable and 'set +x' to disable (silence)
+        printing a trace of the script commands as they are ececuted. The
+        default is +x. No printing of a trace of script commands as they are
+        executed.  From David Sidrane.
+      - Print expanded variables if -x.  From David Sidrane.
+      - ifconfig command:  Extend ifconfig to support 6loWPAN.  Adapt to
+        some changes in configuration variable usage.
+      - Network initialization:  If IEEE802.11 selected use wlan0 instead of
+        eth0 for network device name.
+      - Network initialization:  NSH now has configuration options to select
+        the wireless properties.  It builds the configuration structure and
+        passes this to wpa_driver_wext_associate() so that it will set the
+        network as configured.
+      - Network initialization:  Add a new option CONFIG_NSH_NETLOCAL that
+        will suppress some built in operations and will support manual
+        configuration of a wireless network through command line tools.
+
+    * Examples/Tests: apps/examples:
+
+      - examples/xbc_text: Adds a test program for the XBox One controller
+        driver.  From Brian Webb.
+      - examples/ostest:  Add a test of robust mutexes.
+      - examples/ostest: Add tests for pthread_rwlock.  Adding tests to be
+        used to verify the pthread_rwlock lock works.  From Mark Schulte.
+      - examples/ostest:  Additional test for rwlock and one for cancel
+        cleanup handlers.  From Juha Niskanen.
+      - examples/usrsocktest:  Add application for USRSOCK testing.  From
+        Jussi Kivilinna.
+      - examples/nettest:  Adapt for use in testing 6loWPAN.
+      - examples/nettest:  If doing loopback, but not using the official
+        loopback device, then use the server should use the configured client
+        IP address.
+      - examples/udpblaster:  Several fixes to work with 6loWPAN.
+      - examples/udpblaster:  Add logic to bind the local UDP socket to a
+        well-known address.
+      - examples/configdata:  Add stacksize and priority.  From Juha Niskanen.
+
+    * Network Utilies: apps/netuils:
+
+      - netutils/netlib:  Add IEEE 802.11 wireless IOCTL wrappers.
+      - netutils/netlib: Add a helper function to convert a string to a
+        6loWPAN node address.
+      - netlib and NSH: Add logic to get/set the IEEE802.15.4 PAN ID.
+      - netutils/dhcpc:  Make the network device name a configuration
+        option.  Was hardcoded to eth0 but may, instead, need to be wlan0.
+      - netutils/dhcpc:  Remove hard-coded interface device.  Now passed as
+        a parameter to dhcpc_open().  From Sebastien Lorquet.
+
+    * Wireless Utilies: apps/wireless:
+
+      - wireless/wapi:   Port of Wapi wireless services.  The original
+        depended on features not supported by NuttX:  Removed logic that
+        depends on Linux netlink.  Removed functionality that depended on
+        the Linux procfs:  This includes only 1) listing of available
+        interfaces and 2) listing of all routes.
+      - wireless/wapi:  Create command line Wapi application based on
+        Wapi sample code.
+      - wireless/wapi:  wpa_driver_wext_associate() now accepts a
+        configuration parameter that can be used to specify the wireless
+        properties.
+      - wireless/wapi:  Add basic wapi_event_stream_extract implementation.
+        From Simon Piriou.
+      - wireless/ieee802154:  Add iwpan and i8sak tools.  iwpan is similar
+        in concept to wapi.  From Anthony Merlino (i8sak was originally
+        by Sebastien Lorquet).
+      - wireless/ieee802154/libmac:  IEEE 802.15.4 MAC library.
+      - wireless/wext:  Add drivers_wext from the WPA supplicant; Integrate
+        into NSH.  From Simon Piriou.
+
+    * System Unitilities (apps/system)
+
+      - apps/system/dhcpc:  Add a command to renew or establish a lease on an
+        IPv4 address.
+      - apps/system/ntpc:  Add a command to start or stop the NTPC daemon.
+      - apps/system/ramtest: Make stacksize and priority conigurable.
+
+    * Platform-Specific Support (apps/platform)
+
+      - apps/platform:  Create gnu/ subdirectory that contains the one and
+        only GNU C++ initialization function.  Remove all other C++
+        initialization functions.
+
+Bugfixes.  Only the most critical bugfixes are listed here (see the
+ChangeLog for the complete list of bugfixes and for additional, more
+detailed bugfix information):
+
+    * Core OS:
+
+      - Priority inheritance:  When CONFIG_SEM_PREALLOCHOLDERS==0, there is
+        only a single, hard-allocated holder structure.  This is problem
+        because in sem_wait() the holder is released, but needs to remain in
+        the holder container until sem_restorebaseprio() is called.  The call
+        to sem_restorebaseprio() must be one of the last things the
+        sem_wait() does because it can cause the task to be suspended. If in
+        sem_wait(), a new task gets the semaphore count then it will fail to
+        allocate the holder and will not participate in priority
+        inheritance.  This fix is to add two hard-allocated holders in the
+        sem_t structure:  One of the old holder and one for the new holder.
+      - Priority inheritance:  sem_holder sem_findholder missing
+        inintalization of pholder.  sem_findholder would fail and code
+        optimization covered this up.  From David Sidrane.
+      - Partial Fix priority inheritance CONFIG_SEM_PREALLOCHOLDERS=0.  From
+        David Sidrane.
+      - Priority inheritance:  sem_boostholderprio prevent overrun of
+        pend_reprios.  The second case rtcb->sched_priority <=
+        htcb->sched_priority did not check if there is sufficient space in
+        the pend_reprios array.  From David Sidrane.
+      - lp_worker:  Guard from pend_reprios overlow.  From David Sidrane.
+      - Priority inheritance: Fixes improper restoration of base_priority in
+        the case of CONFIG_SEM_PREALLOCHOLDERS=0.  The call to
+        sem_restorebaseprio_task context switches in the
+        sem_foreachholder(sem, sem_restoreholderprioB, stcb); call prior to
+        releasing the holder. So the running task is left as a holder as is
+        the started task. Leaving both slots filled thus failing to perform
+        the boost/or restoration on the correct tcb.  This PR fixes this by
+        releasing the running task slot prior to reprioritization that can
+        lead to the context switch.  To faclitate this, the interface to
+        sem_restorebaseprio needed to take the tcb from the holder prior to
+        the holder being freed. In the failure case where sched_verifytcb
+        fails it added the overhead of looking up the holder.  There is also
+        the additional thunking on the foreach to get from holer to
+        holder->tcb.  An alternate approach could be to leve the interface
+        the same and allocate a holder on the stack of sem_restoreholderprioB
+        copy the sem's holder to it, free it as is done in this pr and and
+        then pass that address sem_restoreholderprio as the holder. It could
+        then get the holder's tcb but we would keep the same sem_findholder
+        in sched_verifytcb.  From David Sidrane.
+      - Priority inheritance:  Fixes improper restoration of base_priority.
+        From David Sidrane.
+      - sem_holder:  Indexing error.  From David Sidrane.
+
+          if (sem->holder[0].htcb != NULL || sem->holder[**1**].htcb != NULL)
+      - realloc():  When realloc() has to fall back to calling malloc(), size
+        including overhead was being provided to malloc(), causing a slightly
+        larger allocation than needed.  Noted by initialkjc@yahoo.com.
+      - scheduler:  Fix tg_flags check with GROUP_FLAG_NOCLDWAIT.  From Masayuki
+        Ishikawa.
+      - scheduler:  Fix CHILD_FLAG_EXITED in include/nuttx/sched.h.  From
+        Masayuki Ishikawa.
+      - binfmt/elf:  Fix offset value when calling elf_read() in
+        elf_symname().  From Masayuki Ishikawa.
+      - binfmt/elf:  Fix offset value when calling elf_read() in
+        elf_sectname().  From Masayuki Ishikawa.
+      - There can be a failure in IOB allocation to some asynchronous
+        behavior caused by the use of sem_post().  Consider this scenario:
+        (1) Task A holds an IOB.  There are no further IOBs.  The value of
+        semcount is zero. Task B calls iob_alloc().  Since there are not
+        IOBs, it calls sem_wait().  The value of semcount is now -1.  (2)
+        Task A frees the IOB.  iob_free() adds the IOB to the free list and
+        calls sem_post() this makes Task B ready to run and sets semcount to
+        zero NOT 1.  There is one IOB in the free list and semcount is zero.
+        When Task B wakes up it would increment the sem_count back to the
+        correct value.  (3) But an interrupt or another task runs occurs
+        before Task B executes.  The interrupt or other tak takes the IOB off
+        of the free list and decrements the semcount.  But since semcount is
+        then < 0, this causes the assertion because that is an invalid state
+        in the interrupt handler. So I think that the root cause is that
+        there the asynchrony between incrementing the semcount.  This change
+        separates the list of IOBs:  Currently there is only a free list of
+        IOBs.  The problem, I believe, is because of asynchronies due
+        sem_post() post cause the semcount and the list content to become out
+        of sync.  This change adds a new 'committed' list:  When there is a
+        task waiting for an IOB, it will go into the committed list rather
+        than the free list before the semaphore is posted.  On the waiting
+        side, when awakened from the semaphore wait, it will expect to find
+        its IOB in the committed list, rather than free list.  In this way,
+        the content of the free list and the value of the semaphore count
+        always remain in sync.
+      - binfmt:  Fix .dtor memory allocation.  From Masayuki Ishikawa.
+
+    * File System/Block and MTD Drivers:
+
+      - SmartFS:  If whence is SEEK_END, the file offset shall be set to the
+        size of the file plus offset. Noted by eunb.song@samsung.com.
+      - mtd/progmem:  Fix incorrect target address calculation.
+        progmem_read/write() is incorrectly calculating the target address,
+        expecting the offset argument is given in a block number. This is
+        completely wrong and as a result invalid flash region is accessed.
+        Byte-oriented read/write interfaces of mtd device accept the target
+        address in a byte offset, not a block number.  From Heesub Shin.
+      - procfs:  Fix wrong member IDs are displayed when 'cat
+        /proc/<pid>/group/status'.  From Nobutaka Toyoshima.
+      - procfs:  Fix incorrect uptime with CONFIG_SYSTEM_TIME64.  From
+        Masayuki Ishikawa.
+      - vfs/poll: round timeout up to next full tick.  Calling poll() with
+        timeout less than half tick (thus MSEC2TICK(timeout) => 0) caused
+        returning error with EAGAIN. Instead of rounding timeout down, value
+        should be rounded up. Open Group spec for poll says:
+        "Implementations may place limitations on the granularity of timeout
+        intervals. If the requested timeout interval requires a finer
+        granularity than the implementation supports, the actual timeout
+        interval will be rounded up to the next supported value."  From Jussi
+        Kivilinna.
+      - mtd/config:  erase block between block read and write.  From Juha
+        Niskanen.
+      - mtd:  Build RAMTRON and AT45DB drivers only if selected.  From Juha
+        Niskanen.
+      - mtd/config:  Fix byte read interface test.  From Juha Niskanen.
+      - mtd:  Fix some unallocated and NULL pointer issues.  rwb->wrflush and
+        rwb->wrmaxblocks in rwbuffer could get unallocated values from
+        ftl_initialize() in some configurations.  Also fixes related assert:
+
+          up_assert: Assertion failed at file:rwbuffer.c line: 643
+
+        that can happen with the following configuration:
+
+          CONFIG_FTL_WRITEBUFFER=y
+          CONFIG_DRVR_WRITEBUFFER=y
+          # CONFIG_FS_WRITABLE is not set
+
+        These problems are caused by CONFIG variable differences between the
+        buffer layers. TODO: This is not a perfect solution. readahead
+        support has similar issues.  From Juha Niskanen.
+      - net procfs:  Fix buffer corruption and refactor netdev_statistics.c.
+        From Masayuki Ishikawa.
+      - FAT:  Fix 'Missing unlock' in fs_fat32.c.  From Masayuki Ishikawa.
+      - VFS fdopen:  Add missing file stream flags clearing.  Clear file
+        stream structure regardless of config options. Structure clearing is
+        needed as previous use of stream list entry might leave fs_flags
+        set.  From Harri Luhtala.
+      - mtd/smart: Fix use of uninitialized variable.  From Jussi Kivilinna.
+      - mtd/w25.c:  Enable short delay after sector/chip erase.  From Jussi
+        Kivilinna.
+      - mtd/config:  Add some error checks for I/O errors.  From Juha
+        Niskanen.
+
+    * Graphics/Graphic Drivers:
+
+      - net procfs:  Some long lines were being generated that cause buffer-
+        related problems and corrupted output.
+
+    * Networking/Network Drivers:
+
+      - Fixed wrong assert on udp dgram send.  From Pascal Speck.
+      - TCP/IPv6: Fix a compile issue when IPv6, but not IPv4 is enabled.
+      - net/socket/accept:  Fix building with CONFIG_NET_LOCAL_STREAM.  From
+        Jussi Kivilinna.
+      - Argument of network device IOCTL should be unsigned long, just as
+        will all other IOCTL methods.
+      - net/socket:  Fix cloning of local and raw sockets.  From Jussi
+        Kivilinna.
+      - TCP:  Wait for 3-Way Handshare before accept() returns.  From Simon
+        Piriou.
+      - TCP:  Send RST if applicaiton 'unlistens()' before we complete the
+        connection sequence.
+      - TCP:  An RST received during the 3-way handshake requires a little
+        more clean-up.
+      - IPv6:  Fix net_ipv6_pref2mask().  From Masayuki Ishikawa.
+      - network IOCTL commands:  The only place in net/netdev/netdev_ioctl.c
+        where the interface state should change is for SIOCSIFFLAGS.  The
+        other ones .. SIOCSIFADDR, SIOSLIFADDR, SIODIFADDR ..  should not
+        change the link state.  From Sebastien Lorquet.
+      - TCP:  Fix tcp_findlistner() in dual stack mode.  From Masayuki
+        Ishikawa.
+
+    * Common Drivers:
+
+      - Fix as5048b by adding missing frequency parameter.  From Andreas
+        Bihlmaier.
+      - multiple fixes in nrf24l01 driver:  (1) signal POLLIN if there is
+        already data in the FIFO, (2) send ETIMEDOUT to userspace after 2
+        seconds if TX IRQ was not received, (3) handle FIFO overflow, (4)
+        handle invalid pipes/empty FIFO, and (5) multiple cosmetics (missing
+        static, duplicate define, missing \n).  From Leif Jakob.
+      - input/mxt:  Prevent overriding i2c transfer return value.
+        put_reg/get_reg function was overriding i2c transfer error code with
+        i2creset return value, that lead to OK status although actual
+        transfer failed.  From Juha Niskanen.
+      - drivers/audio/wm8904:  WM8904 has same problem as that fixed by Juha
+        Niskanen in the MaxTouch driver.
+      - UART 16550:  Missing left parenthesis in function prototype.  This is
+        Bitbucket Issue #41.
+      - USBMSC:  Fix a wrong lun number issue.  From Masayuki Ishikawa.
+      - drivers/i2c:  Fix compile issues if CONFIG_DISABLE_PSEUDOFS_OPERATIONS
+        is enabled.
+      - drivers/serial: I discovered a problem in the file
+        drivers/serial/serial.c concerning the function uart_close(…). In the
+        case that a serial device is opened with the flag O_NONBLOCK the
+        function uart_close(…) blocks until all data in the buffer is
+        transmitted. The function close(…) called on an handle opened with
+        O_NONBLOCK should not block. The problem occurred with a CDC/ACM
+        device.  From Stefan Kolb.
+      - drivers:  Fix some bad NULL checks.  From Juha Niskanen.
+      - drivers:  Rename newly introduced up_i2creset to I2C_RESET.  From
+        Juha Niskanen.
+      - drivers/bch:  BCH character driver bch_ioctl() always returns -ENOTTY
+        for DIOC_GETPRIV command.  It should returns OK if DIOC_GETPRIV
+        command succeeds.  From  EunBong Song.
+      - Replace sprintf() with snprintf() in pipe.c.  From Nobutaka Toyoshima.
+      - drivers/bch:  Fix 'Missing Unlock' in bchdev_driver.c.  From Masayuki
+        Ishikawa.
+      - button_upper:  Fix interrupt enabling for poll-events.  From Jussi
+        Kivilinna.
+      - drivers/{sensors,usbmisc}:  Fix uninitialized I2C frequency.  From
+        Juha Niskanen.
+
+    * ARM:
+
+      - Set EABI stack alignment for all ARM architectures (remove OABI
+        code).  From David Cabecinhas.
+      - Remove redundant interrupt stack coloring and OABI code.  From David
+        Cabecinhas.
+      - Fix off-by-one interrupt stack allocation in 8-byte aligned
+        architectures.  From David Cabecinhas.
+
+    * ARMv6-M:
+
+      - CONFIG_DEBUG_HARDFAULT should be available for Cortex-M0 too.
+
+    * Microchip/Atmel SAM3/4 Drivers:
+
+      - SAM3/4:  Fixed configurations for TWI master.  Obviously an
+        incomplete port from SAMA5.
+
+    * Microchip/Atmel SAMv7 Drivers:
+
+      - SAMV7: Watchdog:  Fix Forbidden Window Value.  According the Datasheet
+        the WDD Value is the lower bound of a so called Forbidden Window and
+        to disable this we have to set the WDD Value greater than or equal to
+        the WDV Value.  This seems to be a bug in the datasheet. It looks
+        like we have to set it to a greater value than the WDV to really
+        disable this Thing.  When triggering the Watchdog faster than the
+        (very slow) clock source of the Watchdog fires, this Forbidden Window
+        Feature resets the System if WDD equals to WDV.  This Changeset
+        disables the Forbidden Window by setting the WDD Value to the Maximum
+        (0xfff) Value possible.  From Frank Benkert.
+      - SAMV7 EMAC:  Add conditional logic to account the fact that the
+        SAMV71 has 6 rather than 3 queues after version 1.  From Ian McAfee.
+
+    * NXP/Freescale Kinetis Drivers:
+
+      - Kinetis:  Fixed GPIO _PIN_OUTPUT_LOWDRIVE swapped with
+        _PIN_OUTPUT_OPENDRAIN.  From David Sidrane.
+      - Ensure interrupts are back on BEFORE running code dependant on
+        clock_systimer.  From David Sidrane.
+      - Kinetis k66, k64, k60, k40, k20: Pin mux configure all I2C signals as
+        Open Drain.  The output structure of the GPIO for I2C needs to be
+        open drain.  When left at the default, one can observe on a scope the
+        slave contending with the push-pull during the ACK.  From David
+        Sidrane.
+      - Kinetis K66:  Fixed TMP2_CH1 definition.  From David Sidrane.
+      - Kinetis K66:  Define ALT1 to match ref manual.  From David Sidrane.
+      - Kinetis K66:  GPIO and pin mux cleanup.  From David Sidrane.
+      - Kinetis ADC:  Various corrections and updates.  From David Sidrane.
+
+    * NXP/Freescale LPC43xx:
+
+      - Add missing PINCONF_INBUFFER in several places of
+        lpc4310203050_pinconfig.h.  From Andreas Bihlmaier.
+      - Fix logic in preprocessor checks and correct arguments to
+        lpc43_pin_config initialization.  From Andreas Bihlmaier.
+
+    * NXP/Freescale LPC43xx Drivers:
+
+      - Fix logic error in lpc43_adc.  From Andreas Bihlmaier.
+      - Use correct macro for irqid (fortunately both point to
+        LPC43_IRQ_EXTINT+18).  From Andreas Bihlmaier.
+      - Actually write modified value to register.  From Andreas Bihlmaier.
+      - Increase number of supported PWM channels from 4 to 6.  From Andreas
+        Bihlmaier.
+
+    * Silicon Labs EFM32 Drivers:
+
+      - EFM32 I2C: Fix timeout calculation.  From Masayuki Ishikawa.
+
+    * STMicro STM32:
+
+      - As discovered by dcabecinhas.  This fix assume the 8 byte alignment
+        options for size stack size or this will overwrite the first word
+        after TOS.  See
+        https://github.com/PX4/Firmware/issues/6613#issuecomment-285869778.
+        From David Sidrane.
+      - STM32 F7:  In stm32_allocateheap.c There are 5 not 4 configurations.
+        From David Sidrane.
+
+    * STMicro STM32 Drivers:
+
+      - STM32, STM32 F7, STM32 L4:  OTG host drivers: Do not do data toggle
+        if interrupt transfer is NAKed.  Sugested by webbbn@gmail.com.
+      - Save elapsed time before handling I2C in stm32_i2c_sem_waitstop().
+        This change follows the same logic as in previous fix to
+        stm32_i2c_sem_waitdone().  It is possible that a context switch
+        occurs after I2C registers are read but before elapsed time is saved
+        in stm32_i2c_sem_waitstop(). It is then possible that the registers
+        were read only once with "elapsed time" equal 0. When scheduler
+        resumes this thread it is quite possible that now "elapsed time" will
+        be well above timeout threshold. In that case the function returns
+        and reports a timeout, even though the registers were not read
+        "recently". Fix this by inverting the order of operations in the loop
+        - save elapsed time before reading registers. This way a context
+        switch anywhere in the loop will not cause an erroneous "timeout"
+        error.  From Freddie Chopin.
+      - STM32, STM32 F7, and STM32 L4:  Clone Freddie Chopin's I2C change to
+        similar STM32 I2C drivers.  From David Sidrane.
+      - STM32:  OTG host implementations of stm32_in_transfer() must obey the
+        polling interval for the case of isochronous and interrupt endpoints.
+      - STM32:  Fix erase sector number for microcontrolers with more than 11
+        sectors.  Erase a sector from the second bank cause the bit 4 of SNB
+        being set but never unsed, so trying to erase a sector from the first
+        bank was acually eraseing a sector from the second bank.  From José
+        Roberto de Souza.
+      - STM32:  Make up_progmem thread safe.  Writing to a flash sector while
+        starting the erase of other sector have a undefined behavior so lets
+        add a semaphore and syncronize access to Flash registers.  But for
+        the semaphore to work it needs to be initialized so each board needs
+        call stm32_flash_initialize() on initialization, so to avoid runtime
+        problems it is only using semaphore and making it thread safe if
+        initialized, after all boards starts to call stm32_flash_initialize()
+        we can remove the boolean and the check.  From José Roberto de Souza.
+      - STM32:  Add workaround for flash data cache corruption on
+        read-while-write.  This is a known hardware issue on some STM32 see
+        the errata of your model and if you make use of both memory banks you
+        should enable it.  From José Roberto de Souza.
+      - STM32 Flash fixes.  From José Roberto de Souza.
+      - STM32 Flash:  Missing unlock on F1 HSI off path.  From David Sidrane.
+      - STM32 F4 I2C: I needed to use DS3231, I remember that in past it
+        worked ok, but now for stm32f4xx is used another driver (chip
+        specific, stm32f40xxx_i2c.c) and DS3231 driver doesn't work.  After
+        investigating a problem I found that I2C driver (isr routine) has a
+        few places there it sends stop bit even if not all messages are
+        managed. So, e.g., removing stm32_i2c_sendstop (#1744) and adding
+        stm32_i2c_sendstart after data reading helps to make DS3231 working.
+        From  Alexander Oryshchenko; verified by David Sidrane.
+      - STM32 F7 Serial:  Serial fix for dropped data:  (1) Revert the
+        inherited dma bug from the stm32.  see
+        https://bitbucket.org/nuttx/nuttx/commits/df9ae3c13fc2fff2c21ebdb098c520b11f43280d
+        for details.  And (2) Most all CR1-CR3 settings can not be configured
+        while UE is true. Threfore we make all operation atomic and disable
+        UE and restore it's originalstate on exit.  From David Sidrane.
+      - STM32 L1:  Fix IWDG and WWDG debug mode stop for STM32L15XX.  From
+        Juha Niskanen.
+      - STM32 F7:  Fix UART7 and UART8 IFLOWCONTROL options.  From Jussi
+        Kivilinna.
+      - STM32 F7:  Add warning for RXDMA + IFLOWCONTROL combination.
+        Combination of RXDMA + IFLOWCONTROL does not work as one might
+        expect.  Since RXDMA uses circular DMA-buffer, DMA will always keep
+        reading new data from USART peripheral even if DMA buffer underruns.
+        Thus this combination only does following: RTS is asserted on USART
+        setup and deasserted on shutdown and does not perform actual RTS
+        flow-control.  Data loss can be demonstrated by doing long up_mdelay
+        inside irq critical section and feeding data to RXDMA+IFLOWCONTROL
+        UART.  From Jussi Kivilinna.
+      - STM32 F7 Serial:  Do not stop processing input in SW flow-control
+        mode.  From Jussi Kivilinna.
+      - STM32 L4 DMA: Correct bad channel definition.  From Sebastien Lorquet.
+      - STM32 F7:  Warn if no DMA2 configured when using ADC with DMA.  Also
+        correct ADC channel numbers that DMA callback passes to upper half
+        driver.  From Juha Niskanen.
+      - STM32 F7 ADC:  Do not override ADCPRE_DIV when measuring
+        internal voltage.  From Juha Niskanen.
+      - STM32 L4:  Don't think these chips have DPFPU, DTCM or ITCM.  From
+        Juha Niskanen.
+      - STM32 F7 Flash:  macro naming errors, there is no FLASH_CONFIG_F for
+        F7.  From Juha Niskanen.
+      - STM32 L4: stm32l4x6xx_pinmap:  Update I2C4 and DCMI pins.  From Juha
+        Niskanen.
+      - STM32 L4: stm32l4_i2c: change wrong macro to CONFIG_I2C_POLLED.  From
+        Juha Niskanen.
+      - Fix STM32F7 I2C interrupt handler.  From Jussi Kivilinna.
+      - STM32:  Serial Allow configuring Rx DMA buffer size.  From David
+        Sidrane.
+      - STM32 CAN: I had the problem that the transmit FIFO size (= actual
+        elements in FIFO) was slowly increasing over time, and was full after
+        a few hours.  The reason was that the code hit the line
+        "canerr("ERROR: No available mailbox\n");" in stm32_cansend, so
+        can_xmit thinks it has sent the packet to the hardware, but actually
+        has not. Therefore the transmit interrupt never happens which would
+        call can_txdone, and so the size of the FIFO size does not decrease.
+        The reason why the code actually hit the mentioned line above, is
+        because stm32can_txready uses a different (incomplete) condition than
+        stm32can_send to determine if the mailbox can be used for sending,
+        and thus can_xmit forwards the packet to stm32can_send.
+        stm32can_txready considered mailboxes OK for sending if the mailbox
+        was empty, but did not consider that mailboxes may not yet be used if
+        the request completed bit is set - stm32can_txinterrupt has to
+        process these mailboxes first.  Note that I have also modified
+        stm32can_txinterrupt - I removed the if condition, because the CAN
+        controller retries to send the packet until it succeeds. Also if the
+        condition would not evaluate to true, can_txdone would not be called
+        and the FIFO size would not decrease also.  From Lederhilger Martin.
+      - STM32 Serial:  Fix freezing serial port.  Serial interrupt
+        enable/disable functions do not disable interrupts and can freeze
+        device when serial interrupt is received while execution is at those
+        functions. Trivially triggered with two or more threads write to
+        regular syslog stream and to emergency stream. In this case, freeze
+        happens because of mismatch of priv->ie (TXEIE == 0) and actually
+        enabled interrupts in USART registers (TXEIE == 1), which leads to
+        unhandled TXE interrupt and causes interrupt storm for USART.  From
+        Jussi Kivilinna.
+      - STM32 I2C:  Make private symbols static.  From Juha Niskanen.
+      - STM32 L4 GPIO:  Put back EXTI line source selection.  From Juha
+        Niskanen.
+      - STM32 L4 RTC:  Store RTC MAGIC to backup reg, not to address zero.
+        From Juha Niskanen.
+
+    * STMicro STM32 Boards:
+
+      - Disable serial console on stm32f103-minimum usbnsh example project
+        config. Devices enumerate after this change.  From Bob Ryan.
+      - Nucleo-144:  Default for choice in Kconfig was not one of the
+        possible choices.
+      - Nucleo-F4X1RE User LEDS: Issue #51 reports compilation problems with
+        stm32_userled.c.  Reported by Gappi92.
+
+    * TI Tiva Drivers:
+
+      - Tiva I2C:  Correct an error in conditional compilation.
+      - Tiva SSI:  Resolves issue 52 'Copy-Paste error in
+        tiva_ssibus_initialize()' submitted by Aleksandr Kazantsev.
+
+    * C Library/Header Files:
+
+      - C Library vsnprintf():  Fix precision for string formatting.  Fixes
+        use of format precision to truncate input string.  From Jussi
+        Kivilinna.
+      - C Library vsnprintf():  If size is zero, then vsnprintf() should
+        return the size of the required buffer without writing anything.
+        From Jussi Kivilinna.
+      - C Library netdb: in dns_query_callback, ret != -EADDRNOTAVAIL
+        condition consumes error returns including EAGAIN in this case,
+        dns query retransmission doesn't work.  From Ritajina.
+      - C Library netdb:  Fix time info in lib_dnscache.c.  From Masayuki
+        Ishikawa.
+      - C Library netdb: Fix bugs in lib_gethostbynamer.c. This fix sets
+        h_name in struct hostent returned by gethostbyname().  From Masayuki
+        Ishikawa.
+      - C Library Defect Workaround: replace '%6.6u' format with an
+        equivalent '%06u'.  From Tomasz Wozniak.
+
+    * Tools
+
+      - Fix mksyscall host binary name.  From Alan Carvalho de Assis.
+
+    * Applications (apps/)
+
+      - Fix some calls to task_create():  argv[0] is the first parameter, not
+        the name of the task.
+      - Bitbucket Issue 5:  I found an unexpected behavior in apps/
+        configuration generation. Adding external symbolic link in apps/
+        directory and using Make.defs for Kconfig generation, Kconfig file
+        has a wrong path in the source argument. It contains original dir
+        path outside of the source tree instead path to sub-directory in
+        apps/.  The problem is connected with make/system symbolic link path
+        resolution.  Corrected by a patch submitted by Artur Madrzak with
+        Issue 5.
+      - apps/: Make more globals static to avoid name clashes.  From Juha
+        Niskanen.
+
+    * NSH: apps/nshlib:
+
+      - NSH library:  In nsh_argexand(), if CONFIG_NSH_ARGCAT is defined but
+        CONFIG_NSH_CMDPARMS defined and/or CONFIG_DISABLE_ENVIRON not
+        defined, then there is a situation that causes an infinite loop in
+        the parser.  Noted by Freddie Chopin.
+      - NSH library:  Fix building when CONFIG_NET_USRSOCK enabled with other
+        link-layers.  From Jussi Kivilinna.
+      - NSH library:  Fix some warnings about integer/pointer casts of
+        different sizes (probably only effects 64-bit simulation).
+      - NSH library:  Fix open flags in nsh_codeccmd.c.  From Masayuki
+        Ishikawa.
+      - I need to look at the registers that are at or around 0xe000ef90.
+        Using mw and xd, I see that nsh does not support pointers greater
+        than 0x7fffffff.  A quick look at the source shows that the pointers
+        for those two commands are set with calls to strtol() rather than
+        strtoul().  Changing the two pointer-setting instances to strtoul()
+        fixes the problem, at least for my architecture/config.  From Ian
+        McAfee.
+      - NSH library: Fix a resource leak in cmd_hexdump().  From Nobutaka
+        Toyoshima.
+
+    * Examples/Tests: apps/examples:
+
+      - apps/examples/hidkbd:  Remove call to arch_usbhost_initialize().
+        That is violation of the OS interfacing rules and will no longer be
+        supported.  USB host should be initialized as part of the normal
+        board bring-up logic as with any other devices and should not involve
+        illegal calls from applications into the OS.
+      - apps/examples/usbterm:  Removed because it is not very useful and
+        because it can be configured to use an illegal call into the OS.
+      - examples/mm: Fix Makefile.  Built-in was not being registered.
+      - examples/hidkbd:  Add some missing configuration settings.
+      - examples/random:  Avoid stack overflows.  From Juha Niskanen.
+      - examples/nettest:  Fix an error in pre-processor expression.
+      - examples/mtdpart:  Prevent part array overflow.  mtdpart examples
+        create partions and allocate from 1 index not a 0 index to part[]
+        array. This cause buffer overflow for part array.  This change fixes
+        this problem.  From  EunBong Song.
+      - examples/can:  Fix can example app to print data when
+        CONFIG_EXAMPLE_CAN_READ is defined.  From Alan Carvalho de Assis.
+
+    * Network Utilies: apps/netuils:
+
+      - Not a clean fix, but at least makes DHCP working with
+        CONFIG_NETDEV_MULTINIC.  From Andreas Bihlmaier.
+      - Ensure netlib will not be broken when setip will not bring the
+        network up anymore.  From Sebastien Lorquet.
+
+    * CAN Utilies: apps/canutils:
+
+      - Fix libcanard github download link to get it compiling correctly.
+        From Alan Carvalho de Assis.
+      - Fix to use the new canardInit() function.  From Alan Carvalho de
+        Assis.
+
+    * System Unitilities (apps/system)
+
+      - system/dhcpc:  Add missing argument of fprintf.
+
+    * Tools (apps/tools):
+
+      - The dedicated windows tool at tools/mkkconfig.bat uses $APPSDIR,
+        which is not a windows shell variable, and is left uninitialized, but
+        in fact should be the current directory.  From Sebastien Lorquet.
diff --git a/_releases/7.22.md b/_releases/7.22.md
new file mode 100644
index 0000000..14127ca
--- /dev/null
+++ b/_releases/7.22.md
@@ -0,0 +1,1108 @@
+---
+layout: page
+released: true
+apache: false
+title: 7.22
+date: 2017-09-20
+summary: >
+    Release v7.22
+
+artifact-root: "https://bitbucket.org/nuttx/nuttx/downloads/"
+checksum-root: ""
+key-file: ""
+
+source-os-dist:
+    - "nuttx-7.22.tar.gz"
+source-app-dist:
+    - "apps-7.22.tar.gz"
+
+---
+
+
+<!--
+{% comment %}
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to you under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+{% endcomment %}
+-->
+
+{% include JB/setup %}
+
+NuttX-7.22 Release Notes
+------------------------
+
+The 122nd release of NuttX, Version 7.22, was made on September 6, 2017,
+and is available for download from the Bitbucket.org website.  Note
+that release consists of two tarballs:  nuttx-7.22.tar.gz and
+apps-7.22.tar.gz.  These are available from:
+
+    https://bitbucket.org/nuttx/nuttx/downloads
+    https://bitbucket.org/nuttx/apps/downloads
+
+Both may be needed (see the top-level nuttx/README.txt file for build
+information).
+
+Additional new features and extended functionality:
+
+    * Core OS:
+
+      - pthreads:  Move functions from sched/pthreads to libc/pthreads.  These
+        functions just coordinate other OS interface calls but are not a
+        fundamental OS interfaces and, hence, do not belong within the OS:
+        pthread_yield(), pthread_once(), pthread_cond_init(),
+        pthread_cond_destroy(), pthread_barrier_init(),
+        pthread_barrier_destroy(), and pthread_barrier_wait().
+      - Add power-related debug output.
+
+    * File Systems/Block and MTD Drivers
+
+      - RAMTRON:  Add support for splitting block writes in chunks.  Some
+        Re-RAMs like MB85AS4MT have a write buffer size limitation.  From
+        Boris Astardzhiev.
+      - MTD: Add driver for Macronix QuadSPI flash memory.  From Simon Piriou.
+
+    * Graphics/Display Drivers:
+
+      - SSD1306 LCD Driver:  (1) Separate lcd_dev_s setup to separate object.
+        g_oleddev takes 1 KiB because framebuffer and was allocated to .data
+        section because of lcd_dev_s function pointer setup. Move lcd_dev_s
+        setup out, so that g_oleddev goes to .bss and avoid wasting ROM. (2)
+        Fix memory corruption caused by ssd1306_getrun(). ssd1306_getrun was
+        writing one extra byte (with value 0) past target buffer when pixlen
+        is multiple of 8. When pixlen was not multiple of 8, last byte of
+        buffer was fully cleared, instead of modifying only the (pixlen % 8)
+        bits of last byte.  (3) Add support for board power control.
+        ThingseeOne has regulator for controlling display power on/off.  Patch
+        adds support for board based power control to SSD1306 driver. (4) Add
+        DD-12864WO-4A/SSD1309 support to SSD1306 driver. From Jussi Kivilinna.
+
+    * Networking/Network Drivers:
+
+      - Sockets: Support listening sockets in the getsockname() function.
+        From Roland Takacs.
+      - IP Forwading:  At the IP level, network may be configured to forward
+        IP packets that are not destined for the target through a different
+        network device, decrementing the packet TTL.
+      - IP forwarding:  Add optional support to forward broadcast and
+        multicast packets.  Add missing ICMP support.
+      - ICMPv6:  Add 6LoWPAN and IP forwarding support.
+      - ICMPv6:  Support source link-layer address option in RA.  From
+        Masayuki Ishikawa.
+      - TUN Driver: Add definitions that will permit TUN-only networking.
+      - Socket I/F:  Created a socket interface used to provide socket support.
+        Each address family has an interface that describes how to perform
+        socket operations on that address family.  Currently only a couple of
+        methods are defined in the socket interface call table
+      - Remove CONFIG_NET_MULTILINK.  This increases code size by a little,
+        but greatly reduces the complexity of the network code.
+      - Network procfs:  Add support for routing tables at proc/net/route.
+      - Network procfs:  Add support for network procfs statistics for the
+        PF_IEEE802154 address family.
+      - Network Driver Backlog:  Remove driver based backlog support.  This
+        affects the entire network, but is used by only one driver.  The only
+        supported RX backlog is now via common read-ahead buffering.
+
+    * Wireless Networking/Wireless Drivers:
+
+      - IEEE 802.15.4 MAC / MRF24J60 Driver:  Extensive updates for
+        association/beacon-enabled networks.  From Anthony Merlino.
+      - IEEE 802.15.4 MAC / MRF24J60 Driver:  Hook in setdevmode from newly
+        added radio attribute setting.  From Anthony Merlino.
+      - IEEE 802.15.4 MAC: Supports get request for coordinator address.  From
+        Anthony Merlino.
+      - IEEE 802.15.4 MAC: Notify radio layer of changes in devmode.  From
+        Anthony Merlino.
+      - IEEE 802.15.4:  Add special attribute that can be used to perform a
+        regdump of the radio.  From Anthony Merlino.
+      - IEEE 802.15.4 loopback driver:  Better simulation addressing: short
+        and extended addresses, panid, and IP address conversion.
+      - IEEE 802.15.4 Network Driver:  Add logic to setup the network mask,
+        update the MAC-based IPv6 addressing when the network is brought up.
+        The idea is that addressing changes are supposed to occur only while
+        the network is down but won't take effect until the network is up
+        again.
+      - PktRadio:  Add an infrastructure to support networking on generic
+        (non-IEEE 802.15.4) packet radios.
+      - PktRadio Loopback Driver:  Add a PktRadio loopback network driver to
+        testing testing with 6LoWPAN and PktRadios on the simulator.
+      - Spirit Network Driver:  The Spirit1 radio (SPSGRF-915) is the first
+        generic PktRadio Network driver.  Based on STMicros STack packets
+        with 8-bit addressing.  We need to use the STack packets in order to
+        provide the source address and automatic ACKing.
+      - Network procfs:  Fix so that PktRadio address are shown correctly.
+      - Networking:  Add support for some packet radio IOCTL commands.
+      - 6LoWPAN:  Added handling for TCP and ICMPv6 packets.
+      - 6LoWPAN:  Add configurable support for 6LoWPAN star topology.  With
+        this change, the endpoints which are the 'points' of the star will
+        forward all traffic to the coordinator.  The coordinator is assumed to
+        be the 'hub' of the star.  This function also used IPv6 forwarding.
+      - 6LoWPAN:  The original, Contiki-based design used only a single buffer
+        for reassemblying larger packets.  This could be a problem issue for
+        hub configurations which really need the capability concurrently
+        reassemble multiple incoming streams concurrently. These was also a
+        design issue in that the reassembly buffer could be corrupted by
+        outgoing packets.  The design was extended to support multiple
+        reassembly buffers, each associated with the reassembly tag and source
+        address.  This assures that there can be be no corruption of the
+        reassembly once it has started.
+      - 6LoWPAN PktRadio:  Now radio agnostic.  All IEEE 802.15.4 dependencies
+        have been removed or isolated so that 6LoWPAN can be used with any
+        kind of packet radio.  This involved things like:  (1) generalizing
+        the representation of radio MAC meta-data,  (2) changes to handle
+        variable-length radio addresses,  (3) removal of all explicit IEEE
+        802.15.4 types, references, and interfaces, (4) a new radio driver
+        interface to return 'capabilities' of the drvier.
+      - ICMPv6:  Update so that ICMPv6 can be used with 6LoWPAN.
+      - IPv6 Neighbor:  Update table format to support IEEE 802.15.4 MAC
+        addresses.
+      - PF_IEEE802154 Address Family:  Add support for the PF_IEEE802154
+        address family socket type. This socket is similar to the PF_PACKET,
+        "raw" packet address family except that:  (1) it supports only
+        SOCK_DRAM, not SOCK_RAW, and (2) works only with IEEE 802.15.4
+        MAC-based radios.  This address family permits simple access to IEEE
+        802.15.4 IOCTLs and frame-level network transfers.
+
+    * Other Common Device Drivers:
+
+      - Dynamically configurable USB composite devices:  We developed a huge
+        Changeset over a year ago to make USB Composite configuration
+        dynamical and be able to instantiate the CDC/ACM multiple times inside
+        this device.  We use this feature to switch between one in typical USB MSC + CDC/ACM configuration and up to three CDCACMs dynamically.
+        I've changed the interface for some USB-Functions to receive also the
+        dynamic configuration.  From Frank Benkert.
+      - Franks' change remained on a branch until all issues were resolved.
+        the current version in Master is complete and ready for use.
+      - power:  battery_charger: add ioctl for charging input current.  From
+        Juha Niskanen.
+      - SMPS driver:  Add generic upper-half driver for SMPS.  From Mateusz
+        Szafoni.
+      - LED Driver:  Add support for inverted LEDS.  From Jeff.
+      - LED Driver:  Add lightness correction for RGB LED driver.  From Jeff.
+      - LTC4151 Driver:  Add driver for LTC4151 current and voltage monitor.
+        From Giorgio Groß.
+      - Serial TERMIOS:  tcdrain() implementation based on a new term ioctl.
+        From Sebastien Lorquet.
+      - Serial TERMIOS:  Add support for TCFLUSH.  From Sebastien Lorquet.
+      - syslog:  Add option to use the CLOCK_MONOTONIC for time stamping. From
+        Jussi Kivilinna.
+      - HC-SR04 Driver:  Add support to HC-SR04 distance sensor.  From Alan
+        Carvalho de Assis.
+      - COMP Driver:  Add poll support.  From Pekka Ervasti.
+      - BQ2429X Driver: add driver for TI BQ2429X battery charger.  From Juha
+        Niskanen.
+      - ADC Driver:  Add poll support.  From Juha Niskanen.
+      - BCH Driver:  Add poll support.  From Jussi Kivilinna.
+      - RTC Driver:  Extend the RTC framework with an alarm read ioctl
+        (RTC_RD_ALARM).  Through it consumer could get configuration settings
+        about previously scheduled hardware alarms (active status, hours,
+        minutes, seconds).  From Boris Astardzhiev.
+
+    * Simulation
+
+      - sim/ipforward:  Add an IP forwarding configuration using TUN devices
+        and apps/examples/tun.
+      - Console:  Add non blocking read to devconsole driver.  From Simon
+        Piriou.
+      - Networking:  Poll for TX frames to speed up driver.  From Simon Piriou.
+      - pf_ieee802154:  Add configuration for testing PF_IEEE802154 address
+        family sockets.
+      - ARM Simulator:  Adds necessary functionality to build Simulator under
+        ARM Linux. Tested only on Raspberry3. Currently setjmp/longjmp do not
+        save/restore floating point registers.  From Nickolay Semyonov.
+
+    * MicroChip/Atmel SAML21 Drivers:
+
+      - SAML21 I2C driver.  Developed for and contributed with permissin from
+        Filament company.  From Alan Carvalho de Assis.
+      - SAMD/L21 USB Driver:  Add a USB driver.  Developed for Filament Inc.
+        by Offcode, LTD.  From Janne Rosberg.
+
+    * MicroChip/Atmel SAMv7 Boards:
+
+      - SAMV71-XULT:  Add support for the MRF24J40 radio and create a
+        mrf24j40-starhub configuration.
+      - SAME70-Xplained:  Add MRF24J40 support.
+
+    * NXP Freescale Kinetis Drivers:
+
+      - Kinetis USB Improvements:  usbdev clean up ensuring proper use of HW.
+        Rework suspend and resume logic so they perform properly.  Made attach
+        and detach functions optional. As they do not make sense for a bus
+        powered device.  From David Sidrane.
+      - Kinetis SPI driver:  From David Sidrane.
+      - Kinetis:  I2C driver added I2C3, reference counting and reset.
+        Refactored the driver to support reference counting and reset added
+        I2C3. From David Sidrane.
+      - Kinetis RTC:  Implementation of the alarm read function.
+
+    * NXP Freescale Kinetis Boards:
+
+      - configs/teensy-3.x USB:  Define USBOTG-FS Read from FLASH access in
+        board config.  Allow the board config to define the USBOTG-FS to have
+        Read access to FLASH.  From David Sidrane.
+      - configs/teensy-3.x:  Removed call to khci_usbattach.  The call is not
+        need by the driver if CONFIG_USBDEV_BUSPOWERED=y.  On a USB powered device if we are running we are attached.  From David Sidrane.
+      - freedom-k66f:  Use SPI driver.  Initalize SPI1 on connector J6. No
+        real use, as of yet.  From David Sidrane.
+
+    * NXP Freescale LPC43xx:
+
+      - LPC43xx:  Modify up_allocate_(k)heap() to support PROTECTED mode. From
+        Alan Carvalho de Assis.
+
+    * NXP Freescale LPC4xx Boards:
+
+      - configs/Bambino:  Add protected mode configuration to Bambino board.
+        From Alan Carvalho de Assis.
+
+    * On Semiconductor LC823450
+
+      - LC823450: Initial support for ON Semiconductor LC823450. From Masayuki
+        Ishikawa.
+      - LC823450: eMMC/SD and USB support for LC823450.  From Masayuki Ishikawa.
+
+    * On Semiconductor LC823450 Boards
+
+      - LC823450-XGEVK:  LC823450-XGEVK board support.  From Masayuki
+        Ishikawa.
+      - LC823450-XGEVK:  Add eMMC/SD and USB support.  From Masayuki Ishikawa.
+
+      * STMicro STM32:
+
+      - STM32 L4:  Add support for the STM32L475 family.
+      - STM32 L4 RCC:  Enable ADC clock source.  From Juha Niskanen.
+      - STM32:  Allow clock frequencies > 168 Mhz on stm32f427/429.  We need
+        to enable the power overdrive for this case.  This change allows the
+        required bits to be set in proper sequence.  It also modifies the
+        local register access operations to allow more than 16-bit registers.
+        From Sebastien Lorquet .
+      - STM32 F4:  Add support for STM32F433RC.  From Alan Carvalho de Assis.
+      - STM32 F7:  Add new configuration option for enabling flash ART
+        Accelerator and flash prefetcher.  From Jussi Kivilinna.
+
+    * STMicro STM32 Drivers:
+
+      - STM32 TIM:  Add the set counter function for stm32 timers.  From
+        Sergey Ustinov.
+      - STM32 HRTIM:  Update HRTIM definitions. Add HRTIM driver.  From
+        Mateusz Szafoni.
+      - STM32 HRTIM:  Add HRTIM character driver.  From Mateusz Szafoni.
+      - STM32 HRTIM:  Fix DAC triggers configuration, Add missing master timer
+        logic, enable DAC triggering.  From Mateusz Szafoni.
+      - STM32 HRTIM:  Add DMA configuration. From Mateusz Szafoni.
+      - STM32 HRTIM:  Add burst mode configuration.  From Mateusz Szafoni.
+      - STM32 RTC:  Port Boris Astardzhiev's RTC change for STM32L4 to STM32.
+      - STM32 DAC:  Add support for HRTIM triggering.  Separate dma buffer
+        configuration for channels.  From Mateusz Szafoni.
+      - STM32 DAC:  Conditional logic for timer triggering, fix TSEL
+        configuration when HRTIM, DMA request remapping, Add DMA buffers
+        initialization logic.  From Mateusz Szafoni.
+      - STM32 DAC:  Support external triggering for DMA transfer.  From Mateusz
+        Szafoni.
+      - STM32 L1 TIM:  Add base address for TIM11.  From Juha Niskanen.
+      - STM32 F4 FLASH:  Enable/disable the flash write protection on any
+        sector.  I have verified it to work on the STM32 F427.  From Sebastien
+        Lorquet.
+      - STM32 F4 Clocking:  To use an external oscillator module (not just a
+        crystal) with the STM32F4, one needs to enable the HSEBYP bit in the
+        RCC_CR register. This change allows an integrator to define
+        STM32_RCC_CR_HSEBYP in their board.h file if they want this
+        configuration.  From Jeff.
+      - STM32 F4 USB:  I'm working on bringing up USB full-speed support on
+        STM32F405.  My board does not include a USB power switch, VBus
+        sensing, over current detection, or ID pin.  This commit add a
+        config STM32_OTGFS_VBUS_ CONTROL which lets us selectively disable
+        VBus sensing and control.  I also sneaked in a change to disable the
+        configgpio call for the ID pin, which is only used in OTG mode which
+        isn't supported yet.  The only pins that need to be initialized should
+        be OTGFS_DP and OTGFS_DM.  From Jeff.
+      - STM32 FLASH:  Add CONFIG_STM32_STM32F469 support. From David Sidrane.
+      - STM32 COMP:  Add default INM configuration and some missing COMP
+        1,3,5,7 code.  From Mateusz Szafoni.
+      - STM32 F33:  Add missing SYSCFG CFGR3 definitions.  From Mateusz Szafoni.
+      - STM32 L4 Serial: Allow configuring Rx DMA buffer size.  From Juha
+        Niskanen.
+      - STM32 L4 COMP:  Input minus pin extended selection.  From Juha Niskanen.
+      - STM32 L4 COMP:  Bind to upper half comp driver.  From Pekka Ervasti.
+      - STM32 L4 DAC:  Port from STM32.  Add ADC register definitions.  From
+        Juha Niskanen.
+      - STM32 L4 DAC:  Add option for routing DAC output to ADC.  Actually
+        write something to the DAC DMA buffer.  From Juha Niskanen.
+      - STM32 L4 DAC:  Separate DMA buffer configuration for channels. From
+        Juha Niskanen.
+      - STM32 L4 ADC:  Implement peripheral.  From Juha Niskanen.
+      - STM32 F7:  Definitions for I2C4, SDMMC2.  Adapted RAM start / size to
+        internal SRAM.  From Titus von Boxberg.
+      - STM32 F7 I2C4:  I2C4_SDA can also be on GPIO PB7.  From Titus von
+        Boxberg.
+      - STM32 F7 LTDC:  Option for DSI output, inconsistency: the stm32f746
+        does not feature a DSI interface.  compilable with LTDC_INTERFACE and
+        LTDC_USE_DSI.  From Titus von Boxberg.
+      - STM32 F7 Clocking:  Added functions for DSI clock source selection.
+        From Titus von Boxberg.
+      - STM32 F7 Clocking:  Enable APB2 DSI clock.  From Titus von Boxberg.
+      - STM32 F7 LTDC:  No board specific dithering values used; corrected
+        dithering init.  Corrected LIPOS/LIPCR calculation.  Change only
+        polarity bits in LTDC_GCR.  From Titus von Boxberg.
+      - STM32 F7 Reset:  Added function for reset.  From Titus von Boxberg.
+      - STM32 F7 DMA:  DMA add dcache alignment check in stm32_dmacapable.  In
+        the case dcache write-buffed mode is used (not write-through) buffer
+        alignment is required for DMA transfers because  a)
+        arch_invalidate_dcache could lose buffered writes data and b)
+        arch_flush_dcache could corrupt adjacent memory if the maddr and the
+        mend+1, the next next address are not on ARMV7M_DCACHE_LINESIZE
+        boundaries.  From David Sidrane.
+      - STM32 F7 SDMMC: SDMMC remove widebus limitation on DMA.  There is no
+        documantation for the STM32F7 that limits DMA on 1 bit vrs 4 bit
+        mode.  From David Sidrane.
+      - STM32 F7 SDMMC: SDMMC add dcache alignment check in
+        dma{recv|send}setup. In the case where CONFIG_SDIO_PREFLIGHT is not
+        used.
+      - STM32 F7 RTC: Port Boris Astardzhiev's RTC change for STM32L4 to
+        STM32F7.
+
+    * STMicro STM32 Boards:
+
+      - STM32F103-Minimum:  Add GPIO device driver example.  From Alan
+        Carvalho de Assis.
+      - STM32F103-Minimum: Add small hello example for  STM32F103-Minimum
+        board.  From Alan Carvalho de Assis.
+      - STM32F103-Minimum: Add support for SmartFS on Winbond W25 SPI NOR
+        Flash.  From Alan Carvalho de Assis.
+      - STM32F103-Minimum: (1) Enable CONFIG_MTD_PARTITION in Kconfig if flash
+        partition is enabled and (2) Update the README.txt file with info
+        needed to get SmartFS working.  From Alan Carvalho de Assis.
+      - Nucleo-F334R8:  Add HRTIM initialization.  From Mateusz Szafoni.
+      - Nucleo-F334R8:  UART2 is default serial port (STLINK Virtual Port).
+        From Mateusz Szafoni.
+      - Clicker2-STM32:  Add a configuration that was used with the MRF24J60
+        for 6loWPAN testing.
+      - Clicker2-STM32:  Allow both IEEE 802.15.4 MAC character and network
+        devices to be registered.
+      - Clicker2-STM32:  Add configurations to support the endpoint and hub
+        roles in a star topology.
+      - Clicker2-STM32:  Add support for per-function-call stack checking.
+        From Anthony Merlino.
+      - Clicker2-STM32:  Configure EDBG SPI CS just to make that it is
+        disabled.
+      - STM32F4 Discovery: Add logic to register the button driver and the
+        user led driver if so configured.  From Jan Pobrislo.
+      - STM32F4-Discovery:  Add a configuration for testing libc++.  From Alan
+        Carvalho de Assis.
+      - B-L475E-IOT01A:  Add support for the STMicro B-L475E-IOT01A board.
+        From Simon Piriou.
+      - B-L475E-IOT01A: Add support for the SPSRGF/Spirit1 radio module.  Add
+        a configuration for testing sprit radio.
+      - B-L475E-IOT01A:  Add configurations to support a star topology.
+      - B-L475E-IOT01A: add basic support for external Macronix QuadSPI flash
+        memory.  From Simon Piriou.
+      - B-L475E-IOT01A:  Enable UDP broadcast test in the spirit-starhub
+        configuration.
+      - STM32F334-DISCO:  Add STM32F334-DISCO basic support.  From Mateusz
+        Szafoni.
+      - STM32F746-Disco:  Add ADC3 support.  From Ivan Ucherdzhiev.
+      - STM32L476-Disco:  Add a knsh configuration that may be used to test
+        the PROTECTED build mode.
+      - STM32F769I-DISCO:  Initial port to STM32F769I-DISCO.  From Titus von
+        Boxberg.
+
+    * C Library/Header Files:
+
+      - Move TUN ioctl command to include/nuttx/net/ioctl.h so that it will
+        always be unique.
+      - Math Library:  Port gamma() and lgamma() from FreeBSD to NuttX.  From
+        Alan Carvalho de Assis.
+      - C++: Compilation with recent C++ compiler needs an overloaded delete
+        operator that includes a size_t size argument.  New sized delete
+        operators are only for C++14 and above.
+
+    * Build/Configuration System:
+
+      - Initial clang compile.  From Goran Mekić.
+      - Add CLANG definitions in Kconfig and Toolchain.defs.
+      - drivers/wireless/ieee802154:  Moved radios to individual
+        sub-directories.  From Anthony Merlino.
+      - Makefile.unix: Add savedefconfig target.  From Gwenhael Goavec-Merou.
+      - Add Gwenhael's change to Makefile.win and update README.txt to
+        described the new make target.
+      - All defconfig files are now in the compressed format created with
+        'make savedefconfig.'  The original .config file can be reconstituted
+        using 'make olddefconfig.'
+      - Build System:  It is no longer necessary to have a unique Make.defs
+        file for each configuration.  A board may share a common Make.defs
+        file in the scripts directory.  Duplicate Make.defs files removed;
+        common Make.defs file moved to the scripts/ sub-directory for each
+        board.
+      - Networking: Move INET socket interface out of net/sockets to its own
+        directory net/inet.
+
+    * Tools:
+
+      - testbuild.sh:  Added -x to fail build on errors for continous
+        integration (CI).  On CI we want to know ASAP of a failure.  From
+        David Sidrane.
+      - Improve configure.sh behavior:  (1) enable to call from top directory.
+        (2) enable to designate direct path for config.  (3) install .gdbinit
+        if the target has.  From Hidetaka Takano.
+      - Update tools/configure.c to same functionality as configure.sh.  Add
+        an array of optional file names.  Currently, .gdbinit is the only
+        optional file but other things like IDE-specific project files might
+        need to be copied as well.
+      - tools/configure.sh will now copy Eclipse project files if they are
+        present in the board directory file.
+      - Update configure.sh, configure.bat, configure.c:  With compressed
+        format, part of the installation requires that we run 'make
+        olddefconfig' to restore the uncompressed defconfig format.  Also,
+        while I was at it, I also added options to select host platform on
+        configure command line.
+      - tools/refresh.sh:  Now runs make savedefconfig before copying the new
+        defconfig file in place;  Also, added a new option --defaults.  Since
+        the number of defaults that you now have to answer is so large, the
+        option lets you just accept the default values.  So it works just like
+        --silent but still prompts you for the decision to save or discard the
+        new defconfig file.
+      - tools/refresh.sh:  Update so that it can find the Make.defs file in
+        the new location.
+
+    * NSH: apps/nshlib:
+
+      - NSH Library:  Add a Telnetd command.  This is needed when network
+        initialization is deferred.  In that case, telnet daemon cannot be
+        started until the network is finally initialized.  The telnetd command
+        was added just for that case:  So that the telnet daemon can be
+        started from the NSH command line after the network is configured.
+      - NSH Library:  Misc changes needed for PktRadio support.
+      - NSH Library:  Extend ifconfig command so that it can set variable
+        length packet radio addresss.
+      - NSH Library:  Update addroute and delroute command.  The would support either
+        IPv4 or IPv6, but not both.  Allow expression of the netmask in IPv4 CIDR or
+        IPv6 slash notation.  This really reduces the pain of using the commands,
+        especially for IPv6.
+      - NSH Library: Add a route command that will dump the content of routing table.
+
+    * Examples/Tests: apps/examples:
+
+      - examples/udp: Add configurable network device name; Add option to
+        suppress network initialization which is not needed if started by NSH
+        or for 6LoWPAN.
+      - examples/udp:  Fix registration as a built-in program; Change some
+        naming to make room for a second target.  Current one endpoint is the
+        target and one is the host.  This will (eventually) allow two targets
+        to be both endpoints of the test.  Change build so that both server
+        and client can be on a target, rather than one on the target one on
+        the host PC.  Server IP address may not be provided on the command line.
+      - examples/udp:  Port numbers need to be configurable to work with
+        6LoWPAN.  Need to bind the client socket to a port number.  This was
+        not required before so is a apparently a change in the UDP packet
+        dispatch logic.
+      - examples/udp:  Enable testing with the broadcast address.
+      - examples/nettest:  Support target boards on both ends of the test.
+        Separate out network initialization so that it may be used by both a
+        target server and a target client.  Fix client/server naming
+        confusion; Add command line option to select the server address on the
+        target.  Add support for both enpoints on target boards vs. one on a
+        target and one on the host PC.
+      - examples/nettest:  The send buffer size is now a configuration option.
+      - examples/nettest:  Loopback option should be available in Kconfig for
+        PktRadio.
+      - examples/keypadtest: REMOVED and warehoused in the Obsoleted
+        repository.  This was just a bad clone of apps/examples/hidkbd for a
+        keypad driver that was removed years ago.  It also uses illegal
+        function calls into the OS.  So it has no purpse:  It is redundant, it
+        uses illegal interfaces, and is a test for non-existent code.
+      - examples/ipforward: Add an IP forwarding example using only TUN
+        devices.  Test extended to test forwarding of ICMPv6 multicast messages.
+      - Implement powermonitor example for ltc4151 current and voltage
+        monitor.  From Giorgio Groß.
+      - examples/pf_ieee802154:  Add for testing PF_IEEE802154 sockets.  Add
+        PANID to command line options; Cannot bind to address zero... There is
+        no counterpart to INADDR_ANY for these radios (not now at least).
+      - examples/dac: add DAC example.  From Juha Niskanen.
+
+    * Network Utilies: apps/netutils:
+
+      - netutils/telnetc:  This a port of libtelnet to NuttX.
+      - netutils/telnetd and users of telnetd:  Add support for IPv6.
+      - netutils/thttpd:  Remove the netstats demo.  This depends on an
+        illegal function call and cannot be supported.  That example could be
+        replaced with logic that uses the procfs network entries as was done
+        for NSH which had the same issue.  But I am too lazy to implement that.
+      - netutils/netlib:  Add support for PktRadio IOCTL commands.
+      - netutils/netlib:  Add a helper to decode short addresses.
+
+    * Wireless Utilies: apps/wireless:
+
+      - wireless/ieee802154/i8sak:  Rewrote i8sak to be test CLI for IEEE
+        802.15.4 MAC layer.  From Anthony Merlino.
+      - wireless/ieee802154/i8sak:  Updates to i8sak for
+        association/beacon-enabled changes to IEEE 802.15.4.  From Anthony
+        Merlino.
+      - wireless/ieee802154/i8sak:  Add option to make it easy to send large
+        frame for testing purposes.  From Anthony Merlino.
+      - wireless/ieee802154/i8sak:  Add scan command.  From Anthony Merlino.
+      - wireless/ieee802154/i8sak:  Add coordinfo command allowing you to
+        poll various attributes related to the coordinator.  From Anthony
+        Merlino.
+      - wireless/ieee802154/i8sak:  Add a option to retry on failures to the
+        assoc command (usually meaning tht the coordinator is not yet up).
+      - iwireless/ieee802154/8sak:  Add reset command to reset the MAC layer.
+        Adds option to assoc command -t to specify how long to wait for a
+        response from the Coordinator.  From Anthony Merlino.
+      - ieee802154/i8sak:  Adds command to trigger regdump of radio.  From
+        Anthony Merlino.
+
+    * System Unitilities (apps/system)
+
+      - apps/system/composite: Update to apps/system/composite assocated with
+        big changes to the composite device logic.  From Frank Benkert.
+      - apps/system/composite:  Remove CDC/ACM and MSC configuration logic.
+        This belongs in the OS composite initialization.  Add and argument so
+        that you can select the USB composite configuration to be attached.
+        Restore USB tracing; remove unused field in a structure.  Remove
+        configuration settings that are no longer used.  Fix configuration
+        selecting.. was setting the port number, not the configure ID.  Also
+        add a configuration option to select the default configuration.
+      - apps/system/composite: Add a configuration option to the boardctl()
+        calls to support multiple composite device configurations dynamically.
+      - apps/system/composite:  Remove references to USBMSC.  There still
+        dependencies on CDC/ACM in the serial USB trace output.
+      - apps/system/telnet:  Add Telnet Chat deamon and and client from
+        libtelent.
+
+    * Platform-Specific Support (apps/platform)
+
+Bugfixes.  Only the most critical bugfixes are listed here (see the
+ChangeLog for the complete list of bugfixes and for additional, more
+detailed bugfix information):
+
+    * Core OS:
+
+      - Fix ELF loader up_checkarch on ARM arch.  From Cristian Condurache.
+      - pthread_mutex_unlock():  Missing check for the case where
+        pthread_mutex_lock() is called when the mutex is not locked.  In that
+        case, it would increment the underlying semaphore above 1.  This is
+        the fix for a problem noted by initialkjc@yahoo.com.
+      - sig_timedwait():  Pending signal structure used after it has been
+        releasd.  From anonymous Bitbucket Issue 59.
+      - mm_mallinfo:  do heap end debug assert check with heap semaphore held.
+        From Jussi Kivilinna.
+      - sched/:  Fix return value in sched_setaffinity().  From Masayuki
+        Ishikawa.
+      - Work Queues:  work_queue() must cancel existing work prior to queuing
+        new work, otherwise the work queue list structure can become
+        corrupted. Problem noted by Pascal Speck.
+      - waitpid():  Corrects two problems when CONFIG_SCHED_HAVE_PARENT +
+        CONFIG_SCHED_CHILD_STATUS are enabled:  (1) Was erroring out if the
+        waited for task had already exited, and (2) was not freeing resources
+        when a wait was completed.  From Boris Astardzhiev.
+
+    * File System/Block and MTD Drivers:
+
+      - VFS poll():  Fix timeout calculation.  From Jim Paris.
+      - VFS poll():  Fix poll for regular files and block devices.  Open Group
+        documentation says that poll (and select) support regular files and
+        that 'Regular files shall always poll TRUE for reading and writing'.
+        From Jussi Kivilinna.
+      - VFS epoll():  Fix epoll_wait function.  From Simon Piriou.
+      - Smart FS:  Fix wrong freeing of device structure and use-after-free
+        issues on error paths.  From Jussi Kivilinna.
+      - MTD FLASH drivers:  The byte write method of several drivers had a
+        cloned error:  It was not locking the bus while performing byte write
+        operations.
+      - MTD M2PX: If we READ while a write/erase is pending, the command is
+        ignored and the write/erase continues. If we dont catch this situation
+        we will return garbage to the user because the flash will not execute
+        the command.  So READ MUST wait for write completion, and before that,
+        the bus must be locked since it's a precondition to calling
+        waitwritecomplete().  From Sebastien Lorquet.
+      - MTD FLASH drivers: Clone Sebastien Lorquet's m25px change to at25,
+        is25xp, ramtron, and sst25xx.
+      - MTD W25:  Add missing locking and fix SPI_SELECT usage for
+        w25_unprotect.  From Jussi Kivilinna.
+      - MTD W25:  Wait for BUSY flag to clear in w25_readid and
+        w25_unprotect.  W25Q128 datasheet says that all instructions expect
+        'Read Status Register' and 'Erase/Program Suspend' are ignored when
+        BUSY flag in status register is '1'. Therefore wait for busy flag to
+        clear in w25_readid() and w25_unprotect().  From Jussi Kivilinna.
+      - Automounter: FS_AUTOMOUNTER should depend on SCHED_LPWORK.  From
+        Nickolay Semyonov.
+
+    * Networking/Network Drivers:
+
+      - TCP Listen: Throw error when error happens in the tcp_listen
+        function.  From Roland Takacs.
+      - Nework Device Management:  Do not search net device when all-zeros
+        address is used.  From Roland Takacs.
+      - Network Device Management:  Fix a error in netdev_register(); it was
+        not handling device names properly when TUN is the only network device.
+      - Network Device Management:  Fix netdev_dev_lladdrsize().  In some
+        configurations, it could return the wrong size for the address of a
+        packet radio.
+      - Network Device Management:  Fix typo for 802.11 devices in
+        netdev_register().  Was being masked before because depended on
+        CONFIG_NET_MULTLINK.
+      - TUN Driver:  Use critical section instead of semaphore in
+        tun_ifdown().  From Masayuki Ishikawa.
+      - TUN Driver:  Do all polling on worker thread.  Otherwise, the stack
+        gets very deep.
+      - TUN Driver:  Currently cannot support TAP mode unless Ethenet is
+        enabled.
+      - netdb:  Fixed buffer size used for sending DNS queries should depend
+        on the configured DNS name size.  From Ritjaina.
+      - UDP networking:  The TTL (time to live) was not being set in the IPv4
+        or IPv6 header unless the UDP socket was bound.
+      - UDP Networking:  Fix a copy-paste error that could effect networking
+        when both IPv4 and IPv6 are enabled.
+      - UDP Networking:  When upd_input() cannot process a packet, it returns
+        ERROR so that network drivers may try calling ipv4_input() later.  In
+        this case, it must also set d_len to zero.  Otherwise, all network
+        drivers will assume tht there is also an outgoing packet.  This
+        results in a gratuitous ARP.
+      - TCP Networking:  Correct some issues that prevent TCP from working
+        correctly when both IPv4 and IPv6 are enabled.
+      - TCP Networking:  TCP disconnection callbacks are not retained in a
+        list.  This will support mutiple callbacks per lower-level TCP
+        connection structure.  That is necessary for the cae where a socket is
+        dup'ed and shares the same lower-level connection structure.  NOTE:
+        There still needs to be a call to tcp_start_monitor() when the socket
+        is dup'ed.
+      - TCP Networking:  Start the network monitor for a socket when a TCP
+        socket is dup'ed.
+      - TCP Networking:  If one of the dup'ed socket's is closed, then network
+        monitor resources associated with that one socket must be recovered.
+        Also, in the event that socket is being used on one thread, but then
+        closed on another, any threads waiting for events from the socket
+        should be informed of the closure.  That latter requirement is not
+        implemented because current data structures do not support it.
+      - TCP Networking:   Fix a race condition.  The accept() operation is
+        performed with the network locked.  However, the network is unlocked
+        BEFORE the connected state is set.  Therefore, a context switch may
+        occur and the socket may no longer be connected when it is marked so.
+        Noted by Pascal Speck.
+      - Network routing tables:  Fix a compilation error when IPv6 and
+        routing are enabled.
+      - Network procfs:  Fix some spacing when both IPv6 and IPv4 are enabled.
+      - Network Local Sockets:  Fix accept for local stream sockets.  From
+        Jussi Kivilinna.
+      - Network Local Sockets:  Fix server lc_waitsem overflow.  From Jussi
+        Kivilinna.
+      - IPv6 Networking:  Remove comparisons to the address with all ones
+        set.  IPv6 does not support broadcast addresses and certainly not in
+        that form.  Replace with multicast addresses beginning with 0xff02.
+      - ICMPv6 Networking:  Fix a compilation issue with
+        CONFIG_NET_ICMPv6_AUTOCONF=y.  From  Masayuki Ishikawa.
+      - Networking:  Fix net_lock returning ERROR when instead of real error
+        code on failure.  From Jussi Kivilinna.
+      - IGMPv2 Networking:  Remove special support for interrupt level
+        processing (there is none) and fix some timer cancellation logic.  In
+        many files, correct comments.  There is no interrupt level processing
+        in the networking layer.
+
+    * Wireless/Wireless Drivers:
+
+      - IEEE 802.15.4 MAC:  Need counting protection on the logic that
+        releases the notification resources.  Otherwise, notification handlers
+        may be operating with a stale pointer.
+      - IEEE 802.15.4 MAC: Improves internal timer logic to handle work
+        serially.  Before, the MAC timer used a watchdog to schedule work with
+        the high priority worker queue.  However, since everything in the MAC
+        is supposed to be serialized through the use of the high priority work
+        queue, but the timer uses a watchdog, there are some unintended
+        consequences. To simplify, we now use the delayed work feature of the
+        work queue.  From Anthony Merlino.
+      - IEEE 802.15.4 Network Driver: Update RX statistics in network driver.
+      - IEEE 802.15.4 MRF24J40 Driver:  Minor timing fix. Matches recommended
+        value in datasheet.  Splits up driver into multiple files to make it
+        easier to navigate.  Fixes issue with non-beacon enabled mode.  From
+        Anthony Merlino.
+      - IEEE 802.15.4 MRF24J40 Driver:  Fix a bug causing radio to cease
+        transmitting.  From Anthony Merlino.
+      - IEEE 802.15.4 MRF24J40 Driver:  Fixes issues with sleeping for beacon
+        enabled networking.  From Anthony Merlino.
+      - EEE 802.15.4 MRF24J40 Driver:  Fix math error for calculating sleep
+        count values.  From Anthony Merlino.
+      - IEEE 802.15.4: Fix timing issues for beacon enabled coordinators and
+        endpoints. From Anthony Merlino.
+      - iIEEE 802.15.4: Fix issue with association on beacon-enabled
+        networking.  From Anthony Merlino.
+      - 6LoWPAN:  Correct a few addressing issues.  Also reserve two bytes at
+        the end of the frame for the FCS.
+      - 6LoWPAN:  Fixes needed when extended addressing is enabled; broke short
+        addressing.  Loopback driver needs to initialize the MAC meta data;
+        Address decompression logic must have the MAC address to handle the
+        most common compression cases.  Fix a src/dest address confusion and
+        other addressing problems.
+      - 6LoWPAN:  Add missing IPv6 address creation to HC1 decode logic. Fix a
+        typo in an index that prevented use with HC1 and extended addresses.
+      - 6LoWPAN:  TCP logic was not obeying MTU packet size limitations.
+      - 6LoWPAN:  Major re-architecting of TCP logic to properly handle TCP
+        stuff like ACKs and TDP windowing which were not properly covered in
+        the initial design.
+      - 6LoWPAN:  HC06, copy TCP header as though it were data.  TCP packet
+        reassembly now seems to work OK.
+      - 6LoWPAN:  Fix duplicate and bad memcpy in loopback driver.
+      - 6LoWPAN:  Fix a misconception about HC06 16-bit IPv6 address
+        compression.
+      - 6LoWPAN:  TCP send logic was returning a failure in one case when, in
+        fact, the send was successful.
+
+    * Common Drivers:
+
+      - USB MSC:  Use struct instead of pointer to the struct as sizeof
+        argument in memset in usbmsc.c.  Otherwise it leads to error: argument
+        to sizeof in memset call is the same pointer type struct usbmsc_lun_s
+        * as the destination.  From Oleg Evseev.
+      - USB MSC:  Add missing logic to define endpoints.  The composite
+        changes broke the the non-composite, USB MSC only case because it omitted the critical setup when USB MSC was not part of the composite.
+      - USB CDC/ACM.  Fix several known problems resulting from merge of USB
+        composite device.  That merge now breaks some of the non-composite USB
+        devices.
+      - Button Driver:  Interrupts weren't enabled since nothing updates them
+        after btn_poll() marks the file descriptor structure as being polling.
+        From Jan Pobrislo.
+      - ADC Driver:  Fix some data alignment issues in the ADC driver.
+      - I2C Drivers:  Handle I2C_TRANSFER return value consistently.  Some I2C
+        peripherals transfers return zero on success, others number of
+        completed transfers.  Make drivers robust against this.  From Juha
+        Niskanen.
+      - COMP Driver:  Fix compilation errors when poll disabled.  From Mateusz
+        Szafoni.
+
+    * Simulation:
+
+      - Simulation:  Fix mkdir issue in GNU target.  From Simon Piriou.
+      - Simulation:  x86 stack needs to be aligned to 16-byte boundaries.
+      - Simulation:  Fix building 32-bit simulation on 32-bit X86.  From Jussi
+        Kivilinna.
+
+    * ARM:
+
+      - ARM: The older ARM7 and ARM9 configurations were determining CFLAGS
+        based on the GCC version 4.x.x or not.  That needx to be extended for
+        5.x.x and 6.x.x which also behave like 4.x.x.
+
+    * ARMv7-M:
+
+      - Fixed ARMv7-M Toolchain setting.  Cortex-M4 only have Single
+        Precision FPU.  From Hidetaka Takano.
+      - ARMv7-M syscall logic:  Clear bit 0 in PC settings.  Bit 0 is the
+        thumb mode indication and should not be set in the PC.  This extra bit
+        has not caused problems in the past, but seeing it set in the PC is
+        unnerving.
+
+    * Expressif ESP32:
+
+      - Fix ESP32 gpio enable reg and default UART pin. Modify default UART
+        pin for ESP-WROOM-32. Fix gpio enable reg.  From Sungki Kim.
+
+    * Microchip/Atmel SAMD21 Drivers:
+
+      - SAMD21:  Fix some SPI-related issues.  From Matt Thompson.
+      - SAMD21 SPI: I was having issues with the bus freezing up .. slaves
+        holding SDL low.. so I rewrote a good portion of the interrupt logic
+        based on the application notes from Atmel.  One major improvement is
+        using the RXNACK flag in the STATUS register, which indicates that no
+        device responded to an address packet. Assuming that the chip will
+        always give an interrupt status, I believe it's possible to eliminate
+        the timer as well.  From Matt Thompson.
+      - SAMD/L21:  Need to preserve errno value across syslog() call.
+      - SAMD21:  Changes needed to get USB working.  From Matt Thompson.
+
+    * Microchip/Atmel SAMv7 Drivers:
+
+      - SAMv7 TWIHS:  TWIHS driver add reference counting. From David Sidrane.
+      - SAMv7 CAN:  We discovered a problem with the samv7 mcan driver which
+        results, under some circumstances, in a very high CPU load.  The
+        problem occurs, and is easily reproducible, if the device is connected
+        to a CAN network with a wrongly configured CAN speed (baud rate). In
+        our tests we set the CAN speed of the device to 1000000 and the speed
+        of the other CAN nodes to 500000. The device is restarted and sends a
+        CANopen "bootup message" to the CAN network. This results in huge
+        amount of errors messages on the CAN bus, probably because of the CAN
+        feature for acknowledging error messages. The error messages can’t be
+        read by the device because of the misconfigured CAN speed, instead the
+        CAN chip reports lots of errors, which are reported to the application
+        which uses the CAN driver (CONFIG_CAN_ERRORS is enabled).  The CAN
+        errors are reported from the CAN chip via interrupts and thus the
+        interrupt load is very high in this scenario. To fix the problem the
+        driver now disables each RX error interrupt after it is occurred.  The
+        RX error interrupts are turned back on if at least one CAN message is
+        received successfully.  From Stefan Kolb.
+      - SAMv7 CAN:  I discovered while working on the SAMV7 mcan driver that
+        the implementation of the CAN error handling is suboptimal. In the
+        current implementation the many errors are implemented as pending
+        errors.  But those errors are not pending, the errors occurred and are
+        gone directly afterwards. This commit changes the described behavior
+        and simplifies the handling of CAN errors.  From Stefan Kolb.
+
+    * Microchip/Atmel SAMv7 Boards:
+
+      - SAMv71-XULT:  Fix MRF24J40 interrupt GPIO number.
+
+    * NXP/Freescale Kinetis:
+
+      - Kinetis MPU:  Disable MPU when not in protected mode.  The hardware
+        reset state of the the MPU precludes any bus masters other then DMA
+        access to memory. Unfortunately USB and SDHC have there own DMA and
+        will not have access to memory in the default reset state.  This change
+        disabled the MPU if present on system startup.  From David Sidrane.
+      - Kinetis MPU:  Fixed warning for kinetis_mpudisable. Missing header
+        file added.  From David Sidrane.
+      - Kinetis SIM:  Ensure isolation of clock dividers for 0 value case.
+        This fixes a bug were a SoC does not have a clockdivN register and
+        passes a 0 for the init value.  This prevents overflow of the 0
+        decremented to -1 (0xffffffff) spilling over to other clockdivN
+        fields.  From David Sidrane.
+
+    * NXP/Freescale i.MX6 Drivers:
+
+      - i.MX6: Fix a wrong parameter passed when calling irq_attach() in
+        imx_serial.c.  From Masayuki Ishikawa.
+      - Based on Masayuki's change, I review all serial driver vector
+        attachment.  I Found one additional error and updated all relevant
+        drivers to current interrupt parameter passing.
+
+    * STMicro STM32:
+
+      - STM32 F410 Kconfig:  Fix peripherals available on the STM32 F410.
+        This also adds a select for STM32_HAVE_DAC1 present on this STM32
+        flavor.  From Gwenhael Goavec-Merou.
+      - STM32 L4 DMA: Correct USART3_RX bad channel definition.  From Juha
+        Niskanen.
+      - STM32 L4 PWR:  Correct PWR_SR2 REGLPS and REGLPF bits, add port I
+        registers.  Also remove duplicate section from Kconfig.  From Juha
+        Niskanen.
+      - STM32 F7: do not enable read-modify-write on DTCM.  "AN 4667 - STM32F7
+        Series system architecture and performance" recommends to disable
+        read-modify-write on DTCM: "If the DTCM-RAM is used as data location
+        and the variables used are byte or/and halfword types, since there is
+        no ECC management in this RAM on the STM32F7 Series, it is recommended
+        to disable the read-modify-write of the DTCM-RAM in the DTCM interface
+        (inthe DTCMCR register) to increase the performance." From Jussi
+        Kivilinna.
+
+    * STMicro STM32 Drivers:
+
+      - STM32 TIM3/4 are always 16-bits; never 32-bits.  Noted by Eetu
+        Nevalainen..
+      - STM32 ADC:  Invalidate dma buffer before use.  Missing invalidation
+        caused old samples being fetched from cache.  From Jussi Kivilinna.
+      - STM32, STM32L4, STM32F7 ADC:  Fix channel 18 sample time.  From Juha
+        Niskanen.
+      - STM32 DAC:  Fix some configuration logic. When STM32_NDAC is greather
+        than 1, then second channel is always DAC1OUT2.  From Mateusz Szafoni.
+      - STM32 DAC:  Fix compilation when DMA disabled for channel.  From
+        Mateusz Szafoni.
+      - STM32 F0:  Fix some funny shifts in DAC header files.  From Juha
+        Niskanen.
+      - STM32 F1 RTC fixes:  (1) Compile issues because of missing RTC_MAGIC
+        #defines, (2) missing functionality based on RTC_MAGIC in RTC based on
+        stm32_rtcounter.c, (3) IRQ setup from up_rtc_initialize was later
+        reset in up_irqinitialize, (4) write access to backup registers
+        without enabling access to backup domain, (5) possible races in
+        set/cancel alarm.  tested with STM32F103C8 only.  device now wakes up
+        from forced STANDBY mode by alarm.  From Leif Jakob.
+      - STM32/STM32 L4 PWM:  While attempting to output a 70 MHz square wave
+        from the timer output of a STM32 clocked at 140 MHz, found that the
+        reload calculation was off by one.  This correction does allow the
+        output up to 70 MHz.  I am not sure this affects most users
+        generating slow PWM but for frequencies close to the PCLK, the
+        difference becomes significant.  From JM.
+      - STM32 L4 I2C: Set I2C SDA and SCL pins to open drain mode.  From Pekka
+        Ervasti.
+      - STM32 L4 I2C: I2C4 was writing to wrong RCC registers.  From Juha
+        Niskanen.
+      - STM32 L4 DAC:  Report transfer as completed in DMA callback.  Without
+        this even O_NONBLOCK writes block the calling task if DAC was using
+        DMA.  From Juha Niskanen.
+      - STM32 L4 COMP: comparators share RCC enable bit with SYSCFG.  From
+        Juha Niskanen.
+      - STM32 L4 ADC:  Correct EXTSEL macros.  From Juha Niskanen.
+      - STM32 L4 TIM: TIM15,16,17 are always in APB2.  From Juha Niskanen.
+      - STM32 F7 I2C: Set I2C4 SDA and SCL pins to open drain mode.  From Juha
+        Niskanen.
+      - STM32 F4 RTCC: ISR register and write protection fix.  From Eetu
+        Nevalainen.
+      - STM32 F7 Ethernet:  Fix typo in header; Add memory sync barrier
+        between writing to DMA TX descriptor and restarting DMA TX. Avoid
+        calling work_queue on pollwork if it's already queued, just skip a
+        poll cycle instead.  Nucleo-144: Fix RMII TXD1 signal, connected to
+        PB13 not to PG14.  From savinz.
+      - STM32 F7:  Added missing config option for register value debugging.
+        From Titus von Boxberg.
+      - STM32 F7:  No FSMC, only FMC for STM32F7.  From Titus von Boxberg.
+      - STM32 F7:  HEAP2 depends on CONFIG_ARCH_HAVE_HEAP2, not on particular
+        FMC RAM type.  From Titus von Boxberg.
+      - STM32 F7:  STM32_RCC_DCKCFGR2 has nothing to do with PLLI2S; PLLI2S is
+        not dependent on LTDC, instead on SAICLK1/2 generated from PLLI2S.
+        From Titus von Boxberg.
+      - STM32F7: Some STM32F7 builds failed in build testing due to undefined
+        STM32_SRAM1_BASE.  I think that is because stm32_allocateheap.c was
+        not including chip/stm32_memorymap.h.
+      - STM32 F7: dcache write-buffed mode is used (not write-through) buffer
+        alignment is required for DMA transfers because a)
+        arch_invalidate_dcache could lose buffered writes data and b)
+        arch_flush_dcache could corrupt adjacent memory if the buffer and the
+        bufflen, are not on ARMV7M_DCACHE_LINESIZE boundaries.  From David
+        Sidrane.
+
+    * STMicro STM32 Boards:
+
+      - STM32F103-Minumum SPI: SPIDEV_WIRELESS used when this has
+        changed to SPIDEV_CONTACTLESS. From Nicolas Estibals.
+      - configs/:  a few more places where SPIDEV_WIRELELSS should be
+        SPIDEV_CONTACTLESS.
+      - STM32F103-Minumum:  Fix a BUG when reading from output pin.  We need
+        a different read_ops to read from output pin. This patch fixes the
+        issue.  From Alan Carvalho de Assis.
+      - STM32F103-Minumum: Use separated read_ops for GPIO interrupt pins.
+        From Alan Carvalho de Assis.
+      - STM32F103-Minumum: Fix compiler error in MCP2415 logic.
+      - STM32F746G-DISCO:  Fix for compilation of STM32F746G-DISCO.  From Ivan
+        Ucherdzhiev.
+      - STM32F746G-DISCO:  Fix for stm32f746g-disco board for button support
+        with interrupt.  This change is tested with buttons app example and it
+        is working with interrupts (signals). I tried the test with polling
+        but at this point it doesn't work.  From Ivan Ucherdzhiev.
+
+    * Build System
+
+      - Fix -Werror=implicit-fallthrough on gcc7.  From Julien Lecoeur.
+      - configs/Board.mk:  Remove comment form end of line. In windows native
+        build, it appears to be trying to make that an extra parameter to the
+        AR command.  From Jeff.
+      - configs/Board.mk:  Remove quotes from CONFIG_ARCH_FAMILY.  Causes
+        problems with Windows native build.  From Jeff.
+      - Makefile.win would only create uboot images for ARM.  MIPS support
+        also needed.  From Lwazi Dube.
+
+    * C Library/Header Files:
+
+      - C++:  Fix C++ __guard implementation for ARM.  The standard C++ ABI
+        that most platforms follow defines __guard to be 64 bits.  The existing
+        implementation of libxx_cxa_guard.cxx follows this.  However, the
+        32-bit ARM C++ ABI defines it as 32 bits instead, and changes the
+        meaning slightly so only the lowest bit is used. This matters because
+        GCC creates guard symbols without regards to what libxx_cxa_guard.cxx
+        says.  So on ARM, gcc allocates 4 bytes, but __cxa_guard_release
+        writes 8 bytes, zeroing out another unlucky variable nearby. Fix it
+        by special-casing 32-bit ARM in libxx_cxa_guard.  From Jim Paris.
+      - C++:  In cwchar it uses CONFIG_LIBC_WCHAR to only export the wc/mb
+        functions.  When a build does not want to use wide or multibyte char
+        CONFIG_LIBC_WCHAR is not set. Therefore we should to only export the
+        wc/mb functions when defined.  Regardless of the stat of
+        CONFIG_LIBC_WCHAR the non mb/wc  definitions such as mbstate_t,
+        wint_t, wctype_t need to be exported.  From David Sidrane.
+      - C Library:  Fix an error in mkstemp() the could result in an infinite
+        loop.  From Alan Carvalho de Assis.
+      - C Library:  (1) Fix an error in mkstemp() the could result in an
+        infinite loop.  (2)  Fix for wrong output in some cases.  For Example:
+        (a) input: "FILEXX", output: "FILE00" and repeats same output for
+        further invocations of mkstemp(). But, the ouput has to be FILE01,
+        FILE02, ...., FILEZZ. (b) input: "FILEXXXXXX", output: "FILE100000",
+        for next invocation "FILE200000" and so on.  But it's good, if the
+        ouput goes like FILE000001, FILE000002, ..., FILE000101, ...  From
+        Lokesh B V.
+      - C Library:  gethostbyname_r: Fix check for space in buffer.
+      - C Library:  inet_ntop() was printing negative values for fields >127.
+      - Math Library:  Fix wrong ouput in modf() API.  The sign of integral
+        part given by the modf() should be same as sign of input.  But for
+        inputs between 0 and 1, the sign of integral part was not same as
+        sign of input.  From Lokesh B V.
+      - Math Library:  Fix wrong ouput in ceil() API.  Ex:for input x = 1.0,
+        the output should be 1.0, but the ouput was 2.0.  From Lokesh B V.
+
+    * Tools
+
+      - tools/testbuild.sh: Fix missing $ before variable name.
+      - tools/mkdeps.c:  Eliminate a warning. MAX_PATH may already be defined
+        in included system files.  From Jeff.
+
+    * Applications: apps/
+
+      - All apps/ Makefiles:  Add .PRECIOUS: apps/libapps.a to every
+        Makefile.  Hopefully this will end awkward problems when you Control-C
+        out of a build and libapps.a is deleted.
+      - platform/Makefile: More attempts to fix for Windows native build.
+        Backslash as a delimiter causes problems in pattern subsitutions.
+
+    * NSH: apps/nshlib:
+
+      - NSH network initialization: Fix some ieee 802.15.4 initialization
+        logic.  It should not set the saddr or panid; those cannot be
+        hard-coded but must come from the coordinator.  Re-factor a function
+        that has gotten too big and too complex.  Do not set the IP address
+        for 6loWPAN.  The 6loWPAN stack uses IP address that derive from the
+        ieee 802.15.4 addressing and cannot be (safely) configured by the user.
+      - NSH Library: Fix copy-paste typo in nsh_usbconsole.c.  From Oleg
+        Evseev.
+      - NSH Library: fix size of 6LoWPAN extended address.
+      - NSH Library: Fix build break in nsh_command.c with IPv4/IPv6 dual
+        stack.  From Masayuki Ishikawa.
+      - NSH Library: Correct parsing of ifconfig so that you can specify the
+        HW address without specifying the IP address.
+
+    * Examples/Tests: apps/examples:
+
+      - examples/smart: Fix some compilation errors.  Obviously this test has
+        not been used in a LONG time.
+      - examples/udp:  Renaming some files to prevent name collision in
+        libapps.a.  Fix naming of a configuration setting.
+      - examples/nettest:  Renaming some files to prevent name collision in
+        libapps.a
+      - examples/nximage:  Remove unused global variable.
+      - examples/nsh:  Remove APPNAME, PRIORITY, and STACKSIZE settings from
+        Makefile to avoid showing nsh in Builtin Apps.  From Masayuki Ishikawa.
+
+    * Network Utilies: apps/netutils:
+
+      - netutils/tftpc:  Missing header file causes errors in some
+        configurations.
+      - netutils/tftpc:  TFTPC depends on CONFIG_NET_IPv4.
+      - netutils/netlib:  Fixes to work when only USRSOCK is enabled.
+      - netutils/netlib: Fix netlib_nodaddrconv() so that its return type is
+        the same as other address conversion functions.
+      - netutils/netlib: If only PF_IEEE802154 socket family is enabled, then
+        must use SOCK_DGRAM.
+      - netutils/ftpc:  Fix some memory leaks.  From Boris Astardzhiev.
+      - netutils/thttpd: Fix a malformed if condition detected by GCC 6.x.x.
+      - netutils/dhcpd: Prevent buffer overflow in dhcpd_addoption.  offset
+        represents distance from start of option buffer.  So this should be
+        changed current option pointer minus start of buffer.  From EunBong
+        Song.
+
+    * Wireless Utilies: apps/wireless:
+
+      - wireless/ieee802154/i8sak:  Need to increment the next_saddr after
+        each successful association.
+
+    * System Unitilities (apps/system)
+
+      - correct copy-paste typo in comments in composite_main.c  From Oleg
+        Evseev.
+      - system/dhcpc:  The DHCPC renew command did not build correctly due to
+        naming problems.  Noted by Masayuki Ishikawa.
+      - system/dhcpc: Fix warning about renew_main.o appear twice in rule.
+
+    * Tools (apps/tools):
+
+      - tools/mkkconfig.bat: Use %cd% instead of %~dp0 for usage of APPSDIR
+        in this batch file.
+      - tools/mkkconfig.bat:  Remove quotes in echo.  These were begin
+        Echo'ed and generating double quots in the output.  From Jeff.
+      - Windows build fixes:  tools/mkkconfig.bat - switch APPSDIR path to
+        use forward slashes for kconfig-frontends. interpreters/ficl -
+        Reorder some targets that causes GNUwin32 make to behave badly.  From
+        Jeff.
diff --git a/_releases/7.23.md b/_releases/7.23.md
new file mode 100644
index 0000000..db13bfd
--- /dev/null
+++ b/_releases/7.23.md
@@ -0,0 +1,1145 @@
+---
+layout: page
+released: true
+apache: false
+title: 7.23
+date: 2018-01-01
+summary: >
+    Release v7.23
+
+artifact-root: "https://bitbucket.org/nuttx/nuttx/downloads/"
+checksum-root: ""
+key-file: ""
+
+source-os-dist:
+    - "nuttx-7.23.tar.gz"
+source-app-dist:
+    - "apps-7.23.tar.gz"
+
+---
+
+
+<!--
+{% comment %}
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to you under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+{% endcomment %}
+-->
+
+{% include JB/setup %}
+
+NuttX-7.23 Release Notes
+------------------------
+
+The 123rd release of NuttX, Version 7.23, was made on December 4, 2017,
+and is available for download from the Bitbucket.org website.  Note
+that release consists of two tarballs:  nuttx-7.23.tar.gz and
+apps-7.23.tar.gz.  These are available from:
+
+    https://bitbucket.org/nuttx/nuttx/downloads
+    https://bitbucket.org/nuttx/apps/downloads
+
+Both may be needed (see the top-level nuttx/README.txt file for build
+information).
+
+Additional new features and extended functionality:
+
+    * Core OS:
+
+      - sem_open() should return SEM_FAILED on any failures.  This is change
+        in the POSIX specification since the original sem_open() was written
+        so many years ago.
+      - exec():  The non-standard interface exec() is now enshrined as a
+        official NuttX API.  I really dislike doing this but I think that
+        this is probably the only want to load programs in the protected
+        mode.  It is currently used by some example code under apps/ that
+        generate their own symbol tables for linking.  Other file execution
+        APIs relay on a symbol table provided by the OS.  In the protected
+        mode, the OS cannot provide any meaning symbol table for execution
+        of code in the user-space blob so that is they exec() is really
+        needed in that build case.  And, finally, the interface is
+        completely useless and will not be supported in the KERNEL build
+        mode where the contrary is true:  An application process cannot
+        provide any meaning symbolic information for use in linking a
+        different process.
+      - OS Internal Functions:  Rename many OS internal functions so it is
+        clear that they are not part of the application interface.  All
+        internal functions with the sem_* prefix became nxsem_*, sig* become
+        nxsig_*, mq_* become nxmq_*, etc.
+      - Cancellation Points:  Add new cancellation point interface,
+        check_cancellation_point().
+      - Signals:  Add logic to wake up a thread that is waiting on a signal
+        if it is canceled.
+      - sigtimedwait():  Add logic to suppress the wait if there is a
+        pending cancellation.
+      - clock_nanosleep():  Implement clock_nanosleep().  nanosleep() is now
+        reduced to a libc wrapper around clock_nanosleep().
+      - task_delete():  Do not permit user applications to delete kernel
+        threads.
+      - kthread_create():  Rename kernel_thread() to kthread_create() for
+        better naming consistency with task_create() and kthread_delete().
+      - boardctl():  Remove the BOARDIOC_GRAPHICS_SETUP command.
+      - TCB:  Move POSIX thread specific data from pthread TCB to common TCB
+        structure.  This change allows using pthread_getspecific and
+        pthread_setspecific from main thread. Patch also enables using
+        pthread data with config option CONFIG_DISABLE_PTHREAD=y. From Jussi
+        Kivilinna.
+      - mm:  Remove the CONFIG_GRAN_SINGLE configuration option.  It adds no
+        technical benefit (other than some minor reduction in the number of
+        interface arguments) but adds a lot of code complexity.  Better
+        without it.
+      - mm:  Add a function to get information about the state of the
+        granule allocator.  This is the moral equivalent of mallinfo().
+
+    * File Systems/Block and MTD Drivers
+
+      - MT25Q Serial FLASH:  Add support for Micron MT25Q series MT25Q128.
+        From Sebastien Lorquet.
+      - MX35LFxGE4AB:  Add an MTD driver for Macronix MX35LFxGE4AB serial
+        NAND flash.  From Ekaterina Kovylova.
+      - FileMTD:  Add block device MTD interface.  Block MTD interface
+        allows using block device directly as MTD instead of having to use
+        file-system in between.  NOTE that this provides the opposite
+        capability of FTL which will let you use an MTD interface directly
+        as a block device.  From Jussi Kivilinna.
+      - BCH:  The character driver to block device access now supports an
+        IOCTL to get the geomtry of the underlying block device.
+      - mkfatfs:  Remove mkfatfs from the OS.  This is a user-space
+        application and belongs in apps, not in the OS.
+      - procfs:  Implements procfs /proc/fs/blocks and /proc/fs/usage files,
+        replacing the NSH df command.  Also implements procfs /proc/fs/mount
+        file, replacing the NSH mount command when there are no arguments.
+      - procfs:  Add /proc/meminfo.  This is an alternative way to get the
+        information that was previoulsy available in apps/system/free.
+        apps/system/free was removed beause it made illegal calls into the
+        OS violating the portable interface.  This new procfs entry provides
+        the same information with no such violation.  it also provides
+        information about the kernel heap (formerly /proc/kmm), about the
+        use of program memory(formerly /proc/progmem).  And also information
+        for the page table usage in the KERNEL build.
+      - UserFS:  Adds the UserFS client and of the UserFS feature in
+        general.  Initially used Unix domain local sockets instead of
+        message queues.  Easier to transfer big data in local sockets than
+        message queues.  However, that lead to certain inescapable deadlock
+        conditions So the IPC was converted to UDP LocalHost loopback
+        sockets.  The problem with the local sockets is that they do require
+        operations on the top level psuedo-file system inode tree.  That
+        tree must be locked during certain traversals such as enumerate
+        mountpoints or enumerating directory entries.  This conversion is
+        unfortunate in the sense that Unix local domain sockets are
+        relatively lightweight.  LocalHost UDP sockets are much heavier
+        weight since they rely on the full UDP stack.
+
+    * Graphics/Display Drivers:
+
+      - Framebufer character driver:  Add framebuffer character device driver.
+      - LCD Framebuffer:  Add support for a generic front-end that will
+        convert any LCD driver into a framebuffer driver.
+      - Framebufer character driver:  Include support for LCD drivers that
+        use a simulated framebuffer and must receive explicit notification
+        when there is an update to a region in the framebuffer.
+      - LCD:  Make LCD driver configuration indepently selected from NX
+        graphics configuration.  This makes things awkward and loses some
+        error checking but is a necessary step in order to make LCD drivers
+        usable when the NX graphics system is disabled.
+
+    * Networking/Network Drivers:
+
+      - Networking:   Add implementation of logic for SIOCGIFCONF and
+        SIOCGLIFCOF IOCTL commnds.
+      - Network IOCTLs:  Add support for the SIOCGIFBRDADDR ioctl() command.
+      - Routing Tables:  Permit IPv4 and IPv6 routing tables to be of
+        different sizes.
+      - Routing Tables:  Adds support for read-only routing tables.  Prior
+        to this change, routing tables were only support in RAM and had to
+        be initialized with explicit logic to add the necessary routes to
+        the routing table.  With this change, routes may be defined in the
+        pre-initialized, read-only routing table provided by the
+        board-specific logic.
+        This would be particularly useful, for example, in the case where
+        there is only a single network adaptor and you want all output
+        packets to go to the single adaptor in all cases.  So for that
+        behavior you could add a read-only routing table to the
+        board-specific long that contains a single entry, the default route:
+        0.0.0.0/0.
+      - Routing Tables.  Added support for routing tables in files in a file
+        system.  This might be useful for customized, per-unit routing
+        tables. There are two issues with it however:
+         1. Reading from file system on a per packet basis could be slow.  I
+            think it probably should have a small, in-memory cache of most
+            frequently used routes for good problem.
+         2. Currently the delroute logic is disabled due to a problem with
+            the design.  NuttX does not currently support truncate().
+            Therefore, it is not possible to delete entries from the routing
+            table file. In this current implementation, that leaves the last
+            entry intact at the end of the file.  An alternative design
+            might include a tag on each record to indicate if the record is
+            valid or not.  That would work but would add complexity to the
+            other routing table functions.
+      - Routing Tables:  Add support for an in-memory routing table cache in
+        order to improve performance when the routing table is retained in a
+        file. The cache holds the most recently used routing table entries
+        and so can eliminate some file access.  Flush the in-memory cache
+        when any entry is deleted from the routing table.  When a router
+        matching an IP address is found, add the routing table entry to the
+        cache.
+      - Routing Tables:  Add logic to mark a route as most-recently-used in
+        the route cache.
+      - ICMP:  This change adds support for semi-standard IPPROTO_ICMP
+        AF_INET datagram sockets.  This replaces the old ad hoc, nonstandard
+        way of implementing ping with a more standard, socket interface.
+      - ICMPV6: This commit adds support for semi-standard IPPROTO_ICMP6
+        sockets.  This is a replacement for the non-standard ICMPv6 ping
+        support that violated the portable POSIX OS interface.
+      - ICMPv6:  Add option to manually specify router prefix in router
+        advertisement message.  From Sakari Kapanen.
+      - Local Sockets:  This commit modifies the Unix domain local socket
+        design. Local sockets are built on top of pipes.  The Local socket
+        implementation maintained file descriptors to interrupt with the
+        pipes. File descriptors have the bad property that they are valid
+        only while running on the thread within the task that created the
+        local socket.
+        As a policy, all internal OS implementations must use "detached"
+        files which are valid in any context and do not depend on the
+        validity of a file descriptor at any point in time.  This commit
+        converts the usage of file descriptors to detached files throughout
+        the local socket implementation.
+
+    * Wireless Networking/Wireless Drivers:
+
+      - IEEE-802154:  Adds support for receiving MAC events via IOCTL through
+        socket interface.  From Anthony Merlino.
+      - IEEE-802154:  Simplifies notify() and rxframe() calls to a single
+        notify() call. dataind's and all other "notifs" are now "primitives"
+        which aligns with standard terminology  From Anthony Merlino.
+      - MAC802154:  Add support for getting promiscuous mode state From
+        Anthony Merlino.
+      - MAC802154 Character Driver: When in promiscuous mode, the char
+        driver sends the entire frame, including the MAC header.  This
+        change adds an offset field indicating the header-payload boundary.
+        It is set to 0 when not in promiscuous mode as the header is not
+        passed to the application
+      - 6LoWPAN: Remove CONFIG_NET_6LOWPAN_FRAMELEN.  In this case where
+        multiple radios are supported, this may not be a constant.  6LoWPAN
+        now always queries the driver to get the maximum frame length.
+      - 6LoWPAN:  Support sending to a router that is on-link and may be
+        able to forward the packet for us if the destination is not
+        reachable directly.  From Anthony Merlino.
+      - XBee:  Adds XBee S2C (802.15.4 firmware) support. XBee driver
+        emulates mac802154 interface.  From Anthony Merlino.
+
+    * Other Common Device Drivers:
+
+      - PowerLED:  Add upper-half driver for high power LED driver (powerled)
+        From Mateusz Szafoni.
+      - RTC Driver:  Add periodic alarms to upper and lower halves.  From
+        Juha Niskanen.
+      - Pipes:  Fix writing large buffers not triggering POLLIN for reader
+        poll.  From Jussi Kivilinna.
+      - USB CDC/ACM Device:  Add support for RX flow control to the CDC/ACM
+        driver.
+      - USB CDC/ACM Device:  Add support for flow control TERMIOs in CDC/ACM
+        driver.
+      - USB RNDIS Device:  Add RNDIS-over-USB driver.  From Sakari Kapanen
+        with added Hi-Speed support from Masayuki Ishikawa.
+      - Loop Driver:  Don't use file descriptors... Use the internal file
+        system interfaces so that the loop device can be shared across
+        threads.
+      - APA102 LED controller:  Add driver for APA102 LED controller.  These
+        LEDs are used on LED Strips and are controlled over SPI.
+      - INA219.  Add INA219 Driver.  The INA219 is a combined voltage and
+        current sensor that can measure up to 26 volts and a current that
+        depends on an external shunt resistor.  Connection happens via
+        i2c/smbus and the chip features a power supply rail that is
+        independent from the measured voltage, so it can measure low
+        voltages.  Right now it measures bus voltage and current, and does
+        not use the internal calibrated current reading, nor the available
+        power measurement.  From Sebastien Lorquet.
+      - PCA9555:  The IRQ subsystem now supports passing a void * parameter
+        to IRQ handlers.  Use that method to support multiple PCA9555
+        devices, by passing a pointer to the device to the board defined irq
+        handler.  Now the CONFIG_ for multiple PCA devices just allocates
+        device structures dynamically instead of statically when not enabled.
+        The same interrupt handler is entered with the device structure
+        parameter in all situations, multiple or single PCA. One should
+        still be careful if multiple PCA devices share the same IRQ.  From
+        Sebastien Lorquet.
+      - APDS-9960:  Add driver for the APDS-9960 gesture sensor.  From Alan
+        Carvalho de Assis.
+      - MAX7219:  Add support to MAX7219 LED Matrix as LCD interface.  From
+        Alan Carvalho de Assis.
+      - WM8774:  Add WM8774 audio DAC support.  From Masayuki Ishikawa.
+      - Nunchuck:  Add Nintendo Wii Nunchuck driver.  From Alan Carvalho de
+        Assis.
+
+    * Simulation
+
+      - Simulation:  Add a configuration for non-graphical testing of the
+        frambuffer character driver using apps/example/fb.
+      - Simulation:  Add a configuration for testing the UserFS using
+        apps/examples/userfs.
+
+    * Broadcom BCM2708:
+
+      - BCM2708:  Add enough infrastructrue (more stubs) to get a clean
+        compilation of the Pi Zero configuration (with many undefined things
+        at link time).   This includes several register definition header
+        files (some from Alan Carvalho de Assis), basic interrupt handling
+        logic, boot-up files, GPIO support, tickless timer, build and
+        configuration logic
+
+    * Broadcom BCM2708 Boards:
+
+      - Raspberry Pi Zero.  Basic board support at configs/pizero.  Untested
+        in this release and still some remaining issues.
+
+    * Infineon XMC4xxx Boards:
+
+      - XMC4500-Relax:  Add config for UART3 on RXD P0.0 and TXD P0.1 pins.
+        From Alan Carvalho de Assis.
+
+    * NXP Freescale LPC17xx Boards:
+
+      - Open1788:  Add initialization of Framebuffer driver.  Add
+        configuration for testing the framebuffer driver.
+
+    * NXP Freescale LPC43xx Drivers:
+
+      - LPC43xx:  Add LPC43xx CAN driver.  From Alexander Vasiljev.
+
+    * NXP Freescale LPC43xx Boards:
+
+      - MCB1700:  Add support for Keil MCB1700 board.  From Alan Carvalho de
+        Assis.
+      - Open1788:  Add support for the discrete joystick driver.
+      - Open1788:  Add a configuration for testing pdcurses with discrete
+        joystick.
+
+    * On Semiconductor LC823450
+
+      - LC823450:  Add ADC driver and watchdog drivers.  From Masayuki
+        Ishikawa.
+      - LC823450:  Add IPL2 support.  From Masayuki Ishikawa.
+      - LC823450:  Add I2S support. From Masayuki Ishikawa.
+      - LC823450:  Add auto LED for CPU activity.  From Masayuki Ishikawa.
+
+    * On Semiconductor LC823450 Boards
+
+      - LC823450-XGEVK:  Enable ADC and watchdog driver.  From Masayuki
+        Ishikawa.
+      - LC823450-XGEVK:  Add IPL2 support.  From Masayuki Ishikawa.
+      - LC823450-XGEVK:  Add WM8774 support. From Masayuki Ishikawa.
+      - LC823450-XGEVK:  Add auto LED support.  From Masayuki Ishikawa.
+      - LC823450-XGEVK:  Enable CONFIG_SMP for audio. From Masayuki Ishikawa.
+      - LC823450-XGEVK:  Add rndis configuration.  From Masayuki Ishikawa.
+
+    * STMicro STM32:
+
+      - ARM Kconfig:  Add support for classic ARM11 architecture selections.
+      - STM32 Tickless:  Removes the restriction to 16-bit counts when a
+        32-bit timer is used for tickless operation on the stm32.  As it
+        was, the restriction is very limiting, especially if one wants high
+        granularity and large achievable intervals and has the hardware
+        (namely the 32bit timers) available.  From Rajan Gill.
+      - STM32 L4 Kconfig:  Add some L486 and L496 chips.  From Juha Niskanen
+      - STM32 F7:  Adds architecture support for the STM32 F72x and F73x
+        families.  From Bob Feretich.
+      - STM32 F7:  Allow changing voltage output scaling setting and
+        prevents enabling over-drive mode for low frequencies (STM32 F74xx,
+        75xx, 76xx, 77xx). From Jussi Kivilinna.  Changes replicated for
+        the 72xx and 73xx families.
+
+    * STMicro STM32 Drivers:
+
+      - STM32 ADC:  Added support for ADC's IO_ENABLE_TEMPER_VOLT_CH ioctl
+        on STM32F10XX and STM32F20XX.  From Dmitriy Linikov.
+      - STM32 Wakeup:  Add logic for enabling wakeup pins.  From Oleg Evseev.
+      - STM32 PWR:  Adds stm32_pwr_getsbf and stm32_pwr_getwuf functions
+        that return the standby flag and the wakeup flag PWR power
+        control/status register.  From Oleg Evseev.
+      - STM32 HRTIM:  Sdd support for capture, chopper, deadtime and dump
+        registers.  From Mateusz Szafoni.
+      - STM32 RTC:  Canceling an alarm marks it as inactive.  From Juha
+        Niskanen
+      - STM32 Serial:  Add interface to get uart_dev_t by USART number,
+        stm32_serial_get_uart().  From Juha Niskanen.
+      - STM32 F33xx ADC:  Initial ADC support for the STM32F33XX.  From
+        Mateusz Szafoni.
+      - STM32 F33xx ADC:  Add ADC DMA support to STM32F33 configuration.  From
+        Mateusz Szafoni.
+      - STM32 L4 ADC:  Port analog watchdog ioctl commands from the Motorola
+        MDK.  From Juha Niskanen
+      - STM32 L4 ADC:  Add option for routing ADC data to DFSDM, fix DFSDM
+        DMA. From Juha Niskanen
+      - STM32 L4 ADC:  Add PM hooks from Motorola MDK
+      - STM32 L4 FLASH:  Add function for modifying device option bytes,
+        From Juha Niskanen.
+      - STM32 L4 DFSDM:  Add peripheral support for digital filters for
+        sigma-delta ADCs.  Initial version.  Timer trigger support is not
+        completed and there is some issue with DMA.  From Juha Niskanen.
+      - STM32 L4 I2C:  Port then STM32 F7 I2C driver to STM32 L4.  STM32L4 I2C
+        driver is in work-in-progress state (plentiful of TODOs and
+        #warnings) and lags many features found in more up-to-date STM32 I2C
+        drivers.  The peripheral on STM32F7 and STM32L4 are identical except
+        for L4's 'wakeup from stop mode' flag and STM32F7's I2C driver is in
+        more 'ready to use' state.  The I2C clock configuration is kept the
+        same as before (I2CCLK = PCLK1 80 Mhz) instead of switching to
+        STM32F7 arch default that is I2CCLK=HSI. Further work would be to
+        add configuration option for choosing I2C clock source instead of
+        current hard-coded default.  From Jussi Kivilinna.
+      - STM32 L4 RTC:  Add up_rtc_getdatetime_with_subseconds
+      - STM32 L4 RTC:  Change maximum alarm time from 24h to one month.  From
+        Juha Niskanen.
+      - STM32 L4 RTC:  Add support for periodic interrupts with
+        (experimental) CONFIG_RTC_PERIODIC.   From Juha Niskanen.
+      - STM32 L4 SDMMC:  Add support for an SDMMC driver.  From Miha Vrhovnik.
+      - STM32 L4 Serial:  Suspend serial for Stop mode.  From Juha Niskanen.
+      - STM32 L4 Serial/PM:  STM32L4 serial PM interface improvements:
+        Check rx/tx buffers for pending data in pmprepare.  Remove adhoc PM
+        interfaces and move serial suspend functionality behind CONFIG_PM.
+        From Jussi Kivilinna.
+
+    * STMicro STM32 Boards:
+
+      - STM32F103-Minimum:  Add board support for APA102 driver.  From Alan
+        Carvalho de Assis.
+      - STM32F103-Minimum:  Add ADC support on stm32f103-minimum board.
+        From Alan Carvalho de Assis.
+      - STM32F103-Minimum:  Add support for LM75 in the stm32f103-minimum
+        board.  From Alan Carvalho de Assis.
+      - STM32F103-Minimum:  Add an ADPS-9960 example configuration.  From
+        Alan Carvalho de Assis.
+      - STM32F103-Minimum:  Add board support for MAX7219 LED Matrix
+        controller.  From Alan Carvalho de Assis.
+      - STM32F103-Minimum:  Add USB MSC device initialzation to
+        stm32f103-minimum.  From Alan Carvalho de Assis.
+      - STM32F103-Minimum:  Add framebuffer driver initialization for
+        stm32f103-minimum board.  From Alan Carvalho de Assis.
+      - STM32F103-Minimum:  Add Nunchuck board support for
+        stm32f103-minimum board.  From Alan Carvalho de Assis.
+      - STM32F4 Discovery:  Add support for JLX12864G display on STM32F4
+        Discovery board.  From Alan Carvalho de Assis.
+      - Viewtool-STM32F107:  Add support to auto-mount the procfs file system.
+      - Photon:  Support SPI1 and SPI3.  From Anthony Merlino.
+      - STM32F334-DISCO:  Add lower half driver for high power LED
+        (powerled).  From Mateusz Szafoni.
+      - STM32F334-DISCO:  Add flash mode support for powerled driver. From
+        Mateusz Szafoni.
+      - STM32F334-DISCO:  Add powerled example configuration.  From Mateusz
+        Szafoni.
+      - STM32F334-DISCO:  Add lower-half driver for SMPS (buck-boost onboard
+        converter).  From Mateusz Szafoni
+      - Nucleo-F334R8:  Add logic for zero latency high priority interrupts
+        example.  From Mateusz Szafoni.
+      - Nucleo-F334R8:  Add highpri example configuration.  From Mateusz
+        Szafoni.
+      - STM32 F4 Discovery:  Added support for the LIS3DSH accelerometer on
+        the STM32F4 Discovery rev. C boards.  From Florian Olbrich.
+      - STM32 F4 Discovery: ROMFS for STM32F4 Discovery board.  From Tomasz
+        Wozniak.
+      - STM32 F4 Discovery:  Add a USB MSC configuration.  From Alan Carvalho
+        de Assis.
+      - STM32 F4 Discovery:  RNDIS support on STM32F4Discovery + DM-STF4BB.
+        NOTE: MAC address for the host side starts 0xaa.  This assignment
+        scheme should be fixed later.  From Masayuki Ishikawa.
+      - STM32 F4 Discovery:  Add STM32F4 Discovery board support for
+        Nunchuck joystick.  From Alan Carvalho de Assis.
+      - STM3240G-EVAL:  Add a configuration for testing the Framebuffer
+        character driver using the LCD framebuffer front.
+      - STM3240G-EVAL:  Mount procfs if enabled.
+      - STM3240G-EVAL:  Add support for pdcurses and the pdcurses demo
+        programs in the 'fb' configuration.
+      - Clicker2-STM32:  Adds SD card, automount, and syslog file
+        support and fixes a few minor issues.  From Anthony Merlino.
+      - Clicker2-STM32:  Adds support for USB RNDIS device.  From Anthony
+        Merlino.
+      - Olimex STM32-H407:  Add serial support on the on-board UEXT
+        connector.  Add USART6 for UEXT connector.   Add nsh_uext
+        configuration and README update.  From Jan Pobříslo.
+      - Nucleo-F410RB:  Add support for the nucleo-F410RB board.  From
+        Gwenhael Goavec-Merou.
+      - STM32F429i-DISCO:  Add framebuffer driver initialization.  Add a
+        framebuffer (fb) configuration.
+      - STM32F429i-DISCO:  Add logic to auto-mount procfs.  Enable procfs in
+        all configurations that use NSH.
+      - STM32F429i-DISCO:  Enable support for the STMPE811 touchscreen
+        controller.  Enable touchscreen and also the touchscreen testa at
+        apps/examples/touchscreen in the fb configuration.
+      - STM32F429i-DISCO:  Convert NxWM configuration to use LTDC
+        framebuffer driver instead of SPI serial.  Also reduce number of
+        layers from 4 to 1 in fb configuration.  Only one layer is used.
+      - STM32L476-MDK:  Add support for the on-board LEDs.
+      - Nucleo-L496ZG:  Add DFSDM initialization.  From Juha Niskanen
+      - Nucleo-L496ZG:  Add support for SDMMC driver.  From Miha Vrhovnik.
+      - Nucleo-L496ZG:  Enable I2C4 bus with i2ctool in NSH configuration.
+        From Jussi Kivilinna.
+      - Nucleo-L496ZG:  Make HSE on Nucleo-L496ZG default to enable USB.
+        From Miha Vrhovnik.
+      - Nucleo-F746ZG:  Use the serial console over /dev/ttyACM0 by default.
+        The Nucleo-F746ZG doesn't come with Arduio RS-232 shield, then it is
+        better to use the serial over the /dev/ttyACM0 that is created
+        automatically when the board is plugged in the computer.  From Alan
+        Carvalho de Assis.
+      - Nucleo-144:  Adds support for the Nucleo-144 boards with
+        STM32F722ZE.  From Bob Feretich.
+
+    * ZiLOG Z80
+
+      - z80/include: compiler.h, limits.h, types.h:  Update SDCC/z80 files
+        to include support for long long, inline, __FILE__, and __func__.
+
+    * C Library/Header Files:
+
+      - include/:  Add stdnoreturn.h.  Holds definitions for the C11
+        noreturn keyword.  Applies to C too.
+      - include/netinet/tcp.h:  Add trivial standard tcp.h header file.
+      - libc:  Add support for readv() and writev().
+      - libc:  Adds tcflow().
+      - libc:  Add support for sigwait().
+      - libnx:  Changes to allow the font subsystem to be built without
+        enabling the entire graphics system (CONFIG_NX).  Adds
+        CONFIG_NXFONTS and CONFIG_NXGLIB.  Needed to duplicate some Kconfig
+        setting for NXFONTs if it can be configured and built independently
+        of NX.
+
+    * Tools:
+
+      - tools/configure.sh:  Add special support so that you can start with a
+        windows native configuration and install on a different host (and
+        vice versa).
+      - tools/configure.c:  Duplicate new functionaity added to configure.sh.
+      - tools/configure.sh:  This commit adds a -m option for macOS. For
+        anyone not aware, Apple renamed OSX to macOS recently; thus the 'm'
+        instead of 'o'. This does not change the other uses of *_OSX to
+        macOS. From jeditekunum.
+      - tools/configure.c:  Update functionality to match last change to
+        tools/configure.sh.
+
+    * NSH: apps/nshlib:
+
+      - apps/nshlib:  mount command no long uses the non-standard OS
+        interface foreach_mountpoint().  Now simply cats /proc/fs/mount
+        when there are no arguments to the mount command.
+      - apps/nshlib:  df command no long uses the non-standard OS interface
+        foreach_mountpoint().  Now simply cats /proc/fs/blocks or
+        /proc/fs/usage.
+      - apps/nshlib:  The free commands no longer used mallinfo() to get
+        the state of the use heap.  Two reasons:  That is not useful
+        information in the kernel build.  And (2) there are other memory
+        resources of interest in other configurations such as the Kernel
+        heap in PROTECTED and KERNEL builds, and the prog mem uses when
+        FLASH is used to hold modifiable data.  The free command has been
+        extended to just dump the content of procfs entries and to include
+        all of these other memory resources of the procfs entries are
+        available.
+
+    * Examples/Tests: apps/examples:
+
+      - apps/examples/fb:  Add a simple test for the framebuffer character
+        driver..
+      - apps/examples/ostest: sem_open() now returns SEM_FAILED in the
+        event of a failure.
+      - examples/ostest:  Extend cancellation test to make sure that
+        cancelable threads waiting on a message queue or on a signal can be
+        canceled.
+      - Added a simple reader example for the LIS3DSH acceleration sensor
+        on STM32F4Discovery.  From Florian Olbrich.
+      - apps/examples/apa102:  Add a Rainbow example for APA102 LED Strip.
+        From Alan Carvalho de Assis.
+      - apps/examples/flowc:  Add a simple test of serial hardware flow
+        control.
+      - Add powerled driver example.  From Mateusz Szafoni.
+      - apps/examples/ina219: A simple infinite loop that polls the INA219
+        sensor and displays the measurements.  From Sebastien Lorquet.
+      - apps/examples/alarm:  Add options for reading alarm value and
+        canceling it.  From Juha Niskanen.
+      - Add -n samples to lm75 app and replace Centigrade with Celsius.
+        From Alan Carvalho de Assis.
+      - apps/examples/adps9960:  Add ADPS-9960 example.  From Alan Carvalho
+        de Assis.
+      - apps/examples/obd2:  Add OBD2 example application.  From Alan
+        Carvalho de Assis.
+      - apps/examples/userfs:  Add a test case for verifying UserFS.
+      - apps/examples/smps: add SMPS driver example.  From Mateusz Szafoni.
+      - apps/examples/pdcurses:  Bring in pdcurses demos and make them
+        conform to the NuttX coding style.
+      - apps/examples/pdcurses:  Add a very simple example that just shows
+        the entire character set (7-bit only).  It adapts to the size of
+        the framebuffer and, hence, can be used with very tiny displays.
+        In fact it looks really dumb on big displays.
+      - apps/examples/nunchuck:  Add Nunchuck example application.  From
+        Alan Carvalho de Assis.
+
+    * File System Utilies: apps/fsutils:
+
+      - apps/fsutils/mkfatfs:  Move mkfatfs from the OS to here.
+
+    * Network Utilities: apps/netutils:
+
+      - apps/netutils/netlib:  Add netlib_ipv6adaptor() and
+        netlib_ipv4adaptor().
+      - apps/netutils/netlib:  Add helpers for reading the routing table:
+        netlib_read_ipv4route() and netlib_read_ipv6route().
+      - apps/netutils/netlib:  Add new utilities netlib_ipv[4|6]router()
+        that can be used to determine the IP address of a router that would
+        be used some some destination IP address that is not locally
+        accessible.
+      - apps/netutils/ftpc:  Adds support for IPv6 and fixes various
+        transfer issues.   From Anthony Merlino.
+
+    * CANUtilities: apps/canutils:
+
+      - apps/canutils/libobd2:  Add libobd2 for NuttX.  From Alan Carvalho
+        de Assis.
+
+    * Graphics: apps/graphics:
+
+      - graphics/traveler:  Convert to use the framebuffer driver.
+      - apps/graphics/pdcurs34:  This commit brings the public domain
+        pdcurses library into NuttX.  NuttX graphics support based on the
+        framebuffer character drivers has been integrated.  Input is
+        currently limited to a discrete joystick driver.
+
+    * Wireless Utilities: apps/wireless:
+
+      - apps/wireless/ieee802154/i8sak:  Adds socket interface support. You
+        can now use both socket or char driver to control the MAC layer.
+        From Anthony Merlino.
+      - apps/wireless/ieee802154/i8sak:  Adds sniffer port option and a few
+        other get/set parameters.  From Anthony Merlino.
+      - apps/wireless/ieee802154/i8sak: Changes 'notif' to 'primitive'
+        corresponding to the changes in the Kernel.  From Anthony Merlino.
+      - apps/wireless/ieee802154/i8sak: Channel setting is now saved
+        locally, so when performing a startpan or assoc, the channel
+        previously set is still used, even though the MAC layer gets reset.
+        From Anthony Merlino.
+      - apps/wireless/ieee802154/i8sak:  Adds ability to get/set rxonidle
+        setting for MAC layer. From Anthony Merlino.
+      - apps/wireless/ieee802154/i8shark:  Adds i8shark, a sniffer "adapter"
+        that captures all 802.15.4 traffic, packages it into a Wireshark ZEP
+        packet, and sends it to a host running Wireshark  From Anthony
+        Merlino.
+
+    * System Utilities (apps/system)
+
+      - apps/system/ping and ping6:  This commit removes the ping and ping6
+        commands from NSH and replaces then with the apps/system/ping and
+        apps/system/ping6 built-in commands.  The NSH ping[6] commands had
+        to be removed because they violated the portable POSIX OS interface.
+        The apps/system/png and ping6 command uses the sem-standard
+        IPPROTO_ICMP and IPPROTO_ICMP6 socket interfaces.
+
+    * Platform-Specific Support (apps/platform)
+
+Bugfixes.  Only the most critical bugfixes are listed here (see the
+ChangeLog for the complete list of bugfixes and for additional, more
+detailed bugfix information):
+
+    * Core OS:
+
+      - Task Environment Creation:  Fix an error in the duplication of the
+        child tasks environment in the special case where the parent's
+        environment was created, but then all of the variables were unset.
+        In that case, there is still an allocation in place but the size of
+        the allocation is zero. This case was not being handled correctly
+        when a child task attempts to create its environment and inherit the
+        zero-size partent environment. Noted by Anthony Merlino.
+      - timer_create():  Fix watchdog resource leak if cannot allocate a new
+        timer. From Bruno Herrera.
+      - OS Internal Functions: Internal OS functions should not return error
+        information via the user errno variable:  This includes functions
+        like file_seek(), file_read(), file_write(), etc.  The complete list
+        is too long to duplicate here (please refer to the ChangeLog for
+        details).
+      - OS Internal Functions:  Not only should internal OS functions not
+        modify the errno variable, they should never introduce cancellation
+        points:  psock_connect(), psock_listen(), psock_getsockopt(), etc.
+        The list is too long to duplicate here (please refer to the
+        ChangeLog for details).
+      - OS Internal Functions:  Create OS internal versions of many
+        applications functions that were used by the OS.  The new versions
+        differ from the application interfaces in that (1) they do not
+        return error information via the errno variable, and (2) they never
+        create cancellation points.  This includes new internal interfaces
+        like nxsem_init() that is like sem_init(), etc.  There are too many
+        to list here (see the ChangeLog for details).
+      - Task Exit:  task_exithook.c fails to link if signals are disabled
+        because was unconditionally trying to send the SIGCHLD signal to the
+        parent in certain configurations.  Noted by Jeongchan Kim.
+      - memalign():  Fix heap corruption caused by using unaligned chunk
+        size.  Unaligned nodes generated by memalign later cause heap
+        corruptions when nodes are shrink further (for example, 24 bytes ->
+        8 bytes, when alignment is 16 bytes).  From Jussi Kivilinna.
+      - SMP:  In sched/sched/sched_cpuselect.c, in order to find the cpu
+        with the lowest priority thread, we have to remember the already
+        found lowest priority.  Noted by Anonymous in Issue #75.
+      - spinlocks:  Disable local interrupts in spin_setbit() and
+        spin_clrbit() in order to avoid a deadlock condition.  From Masayuki
+        Ishikawa.
+      - atexit()/on_exit():  Clear atexit()/on_exit() function pointer
+        before calling it.  On most archs, up_assert() calls exit() so
+        without this change, if atexit() function triggers an assertion we
+        are in endless loop.  From Juha Niskanen.
+
+    * File System/Block and MTD Drivers:
+
+      - tmpfs:  Fixed directory unlocking in tmpfs_opendir.   From Dmitriy
+        Linikov.
+      - fcntl():  fcntl() did not return success fail for F_SETFL.  Reported
+        by Jussi Kivilinna.
+      - tcdrain():  tcdrain() was recently added to the NuttX C library.
+        But there is a problem.  The specification of tcdrain() requires
+        that it be a cancellation point.  In order to do this, tcdrain was
+        moved from the C library into the OS and the addition cancellation
+        point hooks were added.  In non-FLAT builds, access via system calls
+        is also now supported.
+      - FS FAT:  Fix hard-fault when listing contents of FAT root.  From
+        Jussi Kivilinna.
+      - procfs: Correct a problem that was causing an apparent directory to
+        be reported as a file instead of a directory by opendir.  This
+        happened after adding these three new procfs entries: fs/block,
+        fs/mount, and fs/usage.  Of course, there is no directory fs in this
+        case, only three files that have fs/ in their relative pathnames.
+        The logic was detecting that fs was the name of the enty to report,
+        but it was then declaring that fs was a file (because fs/block is of
+        type file).  This was fixed by adding a check for matching lenghts.
+        i.e., if strlen(fs) != strlen(fs/block), then report fs as a
+        directory instead of a file.
+      - procfs:  Fix uptime being clse to maximum 32-bit value in certain
+        config.  From Juha Niskanen.
+
+    * Binary Loader:
+
+      - binfmt/:  Don't schedule starthook if there are no constructors.
+
+    * Graphics/Display Drivers:
+
+      - LCD: ILI9341 initialize method not permitted to set errno.
+
+    * Networking/Network Drivers:
+
+      - Networking:  net/netdev/netdev_ifconfig.c: Was not returning all of
+        the address info.
+      - Networking: In some cases, packets are still not sent behind the
+        router. I found that NuttX sends the ARP requests not to the router
+        but to the target. Mistake in file net/route/netdev_router.c.  From
+        Aleksandr Kazantsev.
+      - SIOCGIFCONF and SIOCGLIFCONF IOCTL commands should only report on
+        network adatpors in the UP state.
+      - recvfrom():  Fix double leave_cancellation_point on error path.
+        From Jussi Kivilinna.
+      - send():  Verify that sock descriptor is valid.  Fixes assertion when
+        using send on closed socket.  From Jussi Kivilinna.
+      - sendto():  Remove assert check for null psock and buf input
+        pointers.  Removes check as 'psock == NULL' altogether because that
+        checked for later in psock_send and psock_sendto. Change null check
+        for 'buf' so that it is handled same as in recvfrom.c (return
+        -EINVAL instead of assert).  From Jussi Kivilinna.
+      - sockgetname() files need to include udp/udp.h and tcp/tcp.h or
+        otherwise NET_UDP_HAVE_STACK and NET_TCP_HAVE_STACK are undefined
+        and the logic is never compiled.  Noted by Anthony Merlino.
+      - dup()/dup2():  There was a reference counting problem in the TPC
+        logic of net_clone().  net_clone() which is the common logic
+        underlying dup() and dup2() for sockets.  When net_clone() calls
+        net_start_monitor() and net_start_monitor() returns a failure
+        (because the underlying TCP connection) then net_clone() must back
+        out the reference count on the structure.  Problem noted by Pascal
+        Speck and this implementation of the solution is based on his
+        suggestion.
+      - close():  There was a possible recursion that could eventually
+        overflow the stack.  The error occurred when closing the socket with
+        inet_close() while a socket callback was still queued.  When the
+        socket callback was executed by devif_conn_event(), this resulted in
+        a call to psock_send_eventhandler() with TCP_CLOSE flag set which
+        then called tcp_lost_connection().  tcp_shutdown_monitor() then
+        called tcp_callback() again, which again called
+        psock_send_eventhandler(), and so on....  Noted by Pascal Speck.
+        Solution is also similar to a solution proposed by Pascal Speck.
+      - inet:  Add check for protocol before handing out TCP and UDP sockets.
+      - IP Forwarding:  Fixes typo that caused build error when IP
+        forwarding was enabled with CONFIG_NET_ICMPv6_NEIGHBOR enabled as
+        well.  From Anthony Merlino.
+      - IP Forwarding:  Do not add link layer header size to d_len inside
+        devif_forward().  From Anthony Merlino.
+      - TCP Networking:  When CONFIG_NET_TCP_WRITE_BUFF=y there is a
+        situation where a NULL pointer may be dereferenced.  In this
+        configuration, the TCP connection's 'semi-permanent' callback,
+        s_sndcb was nullified in tcp_close_disconnect.  However, other logic
+        in tcp_lost_connection() attempt to use that callback reference
+        after it was nullifed.  Fixed in tcp_lost_connectino() by adding a
+        NULL pointer change before the access.  This was reported by Dmitriy
+        Linikov in Bitbucket Issue 72.
+      - UDP Broadcat:  Fix some issues with regard to UDP broadcast
+        handling.  This is Bitbucket Issue #77.
+      - ICMP:  Fix an error in the poll logic.  It was assumed that the
+        input parmeter pvconn was valid.  It was not.  Instead, the poll
+        logic must work like the sendto() and recvfrom() logic:  It must
+        keep a copy of the conn structure in the private data.
+      - ICMPv6: Fixes several errors preventing icmpv6_radvertise.c from
+        being compiled. Fixes conversions to network byte order (namely
+        vlifetime, plifetime, mtu).  IPv6 source address is set to
+        link-local IP address instead of the address in the netdev
+        structure. This is in compliance to RFC 4861. RA didn't work on
+        Linux before this change.  Finally, router prefix and prefix length
+        are derived from the IPv6 address and netmask in the netdev
+        structure. This seems to make more sense than using a predefined,
+        separate prefix from the config.  From Sakari Kapanen.
+      - ICMPV6:  icmpv6_input() needs to set d_len to 0 after consuming echo
+        reply, otherwise, garbage will get sent out.  From Anthony Merlino.
+      - ICMPV6:  Fix an error in the poll logic.  It was assumed that the
+        input parmeter pvconn was valid.  It was not.  Instead, the poll
+        logic must work like the sendto() and recvfrom() logic:  It must
+        keep a copy of the conn structure in the private data.
+      - IGMPv2 Send:  Fix incoming IGMP checksum calculation.  From Louis
+        Mayencourt.
+      - ARP:  Fix IGMP Ethernet address computation.  From Louis Mayencourt.
+
+    * Wireless/Wireless Drivers:
+
+      - CC1101:  CC1101 driver not permitted to set errno.
+      - 6LoWPAN:  Correct an error in uncompressing multicast address.
+      - 6LoWPAN:  Correct a bug in handling uncompressed frames (IPv6
+        dispatch).  Adds a separate local variable, protosize, to keep track
+        of the size of thep protocol header.
+      - 6LoWPAN:  Fix an endian-ness problem in 6LoWPAN address
+        decompression.  From Anthony Merlino.
+      - 6LoWPAN:  The logic that extracts interface identifier from the IP
+        address needs to be generalized to handle cases where the address is
+        not a link local address.  From Anthony Merlino.
+
+    * Common Drivers:
+
+      - Serial: 16550 UART driver IOCTL method must not set errno; it must
+        return a negated errno value.
+      - LIS3DSH:  Added the argument parameter (FAR void *arg) to the
+        interrupt handler provided by the LIS3DSH driver to fit the
+        definition for ISRs in xcpt_t.  Changed the check for working queue
+        availability in lis3dsh interrupt handler to use work_available()
+        and not crash in case of an overrun.  From Florian Olbrich.
+      - LIS2DH:  Fixes for self-test.  From Jussi Kivilinna.
+      - LIS2DH:  Fix use of obsolete dbg macro.  From Jussi Kivilinna.
+      - LIS331DL:  LIS331DL driver not permitted to set errno.
+      - HTS221:  Power-on sensor for loading calibration data. From Jussi
+        Kivilinna.
+      - MCP2515:  Fix the MCP2515 Bit Rate Prescale calculation.   Fix BRP
+        for SET_BITTIMING ioctl as well.  From Alan Carvalho de Assis.
+      - STMPE811: Fix GPIO operation of STMPE811 driver.
+        1. STMPE811_GPIO_DIR was defined for register name and later was
+          redefined to be the pin direction mask for `stmpe811_gpioconfig`.
+          I decided to change register name to be STMPE811_GPIO_DIR_REG, and
+          keep pin direction mask STMPE811_GPIO_DIR, so that any external
+          code that already use this driver will be unchanged.
+        2. The STMPE811 register GPIO_DIR uses bit value 1 for output and 0
+          for input, but `stmpe811_gpioconfig` set the opposite.
+        3. The call to `stmpe811_gpiowrite` from inside of
+          `stmpe811_gpioconfig` leaded to deadlock.
+        From Dmitriy Linikov.
+      - BQ2429X:  Add BATIO_OPRTN_SYSON for enabling BATFET after SYSOFF.
+        From Jussi Kivilinna.
+
+    * Simulation:
+
+      - Simulation:  Serial and console drivers are not permitted to set
+        the errno.
+
+    * ARMv7-M:
+
+      - ARM Stack Check:  Fix assert panic when both TLS and interrupt stack
+        are enable.  From Jussi Kivilinna.
+
+    * Expressif ESP32:
+
+    * Infineon XMC4xxx Drivers:
+
+      - XMC4 USIC: Kconfig was not selecting XMC4_USIC for USIC1. From Alan
+        Carvalho de Assis.
+      - XMC4 UART: Fix XMC4xxx USIC UART sginal to be high level when in idle.
+        From Alan Carvalho de Assis.
+      - XMC4 UART:xmc4_uart_configure() expects the channel# not uartbase as
+        an input parameter.  From Alan Carvalho de Assis.
+      - XMC4 UART:  Enable RX/TX status.  From Alan Carvalho de Assis.
+      - XMC4 UART:  The Alternative Receive Interrupt was not being
+        configured.
+
+    * Infineon XMC4xxx Boards:
+
+      - XMC4500-Relax:  Setup max. freq. 120MHz and setup pull-up to UART
+        RXD pin.  From Alan Carvalho de Assis.
+
+    * Microchip/Atmel SAMv7 Drivers:
+
+      - SAMv7:  DAC and ADC drivers are not permitted to set the errno.
+      - SAMv7:  Correct an error in RX DMA setup.  From Manish Kumar Sharma.
+      - SAMv7 USB:  It is necessary to disable pre-emption and interrupts
+        around a loop that copies TX data into the hardware in order to
+        avoid a TX data underrun condition.  From Anthony Merlino.
+
+    * NXP/Freescale LPC31xx Drivers:
+
+      - LPC31xx:  Serial and console drivers are not permitted to set
+        the errno.
+
+    * NXP/Freescale LPC43xx:
+
+      - lpc43xx:  lpc43_adc.c was being selected by the build system wehn
+        DAC was selected.
+
+    * NXP/Freescale LPC43xx Drivers:
+
+      - LPC43xx Ethernet:  Fix some backward logic setting full-duplex and
+        100mbps when autoconfiguration is disabled.  Noted by Anonymous in
+        Issue #76.
+      - lpc43xx: UART_RX pins should be configured with input buffers
+        enabled. Otherwise it cannot be read.  From Alexander Vasiljev.
+
+    * STMicro STM32:
+
+      - STM32 F2:  Fixed build for STM32F20XX platforms when
+        CONFIG_STM32_DMACAPABLE is enabled.  From Dmitriy Linikov.
+      - STM32 F4:  Remove ltdc.h and dma2d.h. Those header files in that
+        location permitted inclusion into application space logic and,
+        hence, facilitated and encouraged calling into the OS and violating
+        the portable POSIX OS interface.  The definitions in those header
+        files were move the appropriate location in the counterpart,
+        architecture specific files at arch/arm/src/stm32/dma2d.h and ltdc.h.
+      - STM32 L4:  Build stm32l4_idle.c only if  CONFIG_ARCH_IDLE_CUSTOM is
+        not enabled.  From Jussi Kivilinna.
+      - STM32 F7:  Remove ltdc.h and dma2d.h. Those header files in that
+        location permitted inclusion into application space logic and,
+        hence, facilitated and encouraged calling into the OS and violating
+        the portable POSIX OS interface.  The definitions in those header
+        files were move the appropriate location in the counterpart,
+        architecture specific files at arch/arm/src/stm32f7/dma2d.h and
+        ltdc.h.
+
+    * STMicro STM32 Drivers:
+
+      - STM32:  DAC and ADC drivers are not permitted to set the errno.
+      - STM32 ADC:  Clear pending interrupts.  From Mateusz Szafoni.
+      - STM32 CAN:  Lower part of STM32 CAN driver
+        arch/arm/src/stm32/stm32_can.c uses all three hw tx mailboxes and
+        clears TXFP bit in the CAN_MCR register (it means transmission order
+        is defined by identifier and mailbox number).
+        This creates situation when order frames are put in upper part of
+        CAN driver (via can_write) and order frames are sent on bus can be
+        different (and I experience this in wild).  Since CAN driver API
+        pretends to be "file like" I expect data to be read from fd the same
+        order it is written. So I consider described behaviour to be a bug.
+        Fixed by settin the TXFP bit in the CAN_MCR register (FIFO
+        transmit order).  From comments by Alexey T, in Bitbucket Issue 73.
+      - STM32 HRTIM:  Fix pclk calculation.  From Mateusz Szafoni.
+      - STM32 HRTIM:  Fix burst mode prescaler update. From Mateusz Szafoni.
+      - STM32 (alt) I2C:  Ensure proper error handling. Injecting data
+        errors would cause the driver to continually reenter the isr with
+        BERR an RxNE.  This fix allows the error to be cleared and
+        propagated to the waiting task.  From David Sidrane.
+      - STM32:  LTDC and DMA2D drivers are not permitted to set the errno.
+      - STM32 RTC:  Workaround for potential subseconds race condition.  In
+        all recent STM32 chips reading either RTC_SSR or RTC_TR is supposed
+        to lock the values in the higher-order calendar shadow registers
+        until RTC_DR is read. However many old chips have in their errata
+        this silicon bug (at least F401xB/C, F42xx, F43xx, L15xxE, L15xVD
+        and likely others):  "When reading the calendar registers with
+        BYPSHAD=0, the RTC_TR and RTC_DR registers may not be locked after
+        reading the RTC_SSR register. This happens if the read operation is
+        initiated one APB clock period before the shadow registers are
+        updated. This can result in a non-consistency of the three
+        registers. Similarly, RTC_DR register can be updated after reading
+        the RTC_TR register instead of being locked."
+      - STM32 Serial:  Do not stop processing input in SW flow-control
+        mode.  From Juha Niskanen.
+      - STM32F33xxx ADC:  Add some publicly visable interfaces and some
+        code to support injected channels.  From Mateusz Szafoni.
+      - STM32F33xxx DMA:  Add public interface to handle with DMA
+        interrupts.  From Mateusz Szafoni.
+      - STM32F33xxx RCC:  Fix CAN clock enable.  From Mateusz Szafoni.
+      - stm32 F4 I2C:  Ensure proper interrupt handling.  Injecting data
+        errors that causes a STOP to be perceived by the driver, will
+        continually re-enter the isr with SB not set and BTF and RxNE set.
+        This changes allows the interrupts to be cleared and propagates a
+        I2C_SR1_TIMEOUT to the waiting task.  From David Sidrane.
+      - STM32 L4 Serial:  Do not stop processing input in SW flow-control
+        mode.  From Juha Niskanen.
+      - STM32 F7:  LTDC and DMA2D drivers are not permitted to set the errno.
+      - STM32 L4:  DAC and ADC drivers are not permitted to set the errno.
+      - STM32 L4 DAC:  Do not configure output pin if it is not used.  From
+        Juha Niskanen.
+      - STM32 L4 RTC, PM:  Small fixes to subseconds handling, ADC
+        power-management hooks
+      - STM32 F4 RTC:  Fix reading alarm value that is more than 24h in
+        future.  From Juha Niskanen
+      - STM32 L4 RTC:  Fix reading alarm value that is more than 24h in
+        future.  From Juha Niskanen
+      - STM32 L4 TIM:  Fix compilation of timers with complementary outputs
+        when not PWM_MULTICHAN.  From Juha Niskanen.
+      - STM32 L4 RCC:  Restore backup-registers after backup-domain reset.
+        From Jussi Kivilinna.
+      - STM32 L4 RTC:  Correct RTC_SSR and RTC_TR read ordering.  In all
+        recent STM32 chips reading either RTC_SSR or RTC_TR is supposed to
+        lock the values in the higher-order calendar shadow registers until
+        RTC_DR is read. Change the register read ordering to match this and
+        don't keep a workaround for a hypothetical race condition (not in
+        any L4 errata, lets for once assume ST's silicon works as it is
+        documented...)
+      - STM32 L4 RTC:  Init mode was never exited because nested locking in
+        rtc_synchwait() disabled backup domain access.  From Juha Niskanen.
+      - STM32 L4 RTC:  Use backup register magic value instead of INITS
+        bit.  The INITS (bit 4) of RTC_ISR register cannot be used to
+        reliably detect backup domain reset. This is because we can operate
+        our device without ever initializing the year field in the RTC
+        calendar if our application does not care about correct date being
+        set.  Hardware also clears the bit when RTC date is set back to year
+        2000.  From Juha Niskanen.
+      - STM32 L4 RTC:  Put back the SSR race condition workaround.  ST has
+        confirmed that the issue has not been fixed, and that it applies to
+        STM32 L4 too (was not in errata sheets due to documentation bug) See
+        discussion: https://community.st.com/thread/43710-issue-with-rtc-maximum-time-resolution .
+        From Juha Niskanen.
+      - STM32 F7 BBSRAM:  Avoid assert in stm32_bbsram_savepanic. If panic
+        happens before stm32_bbsram is initialized, stm32_bbsram_savepanic
+        caused additional assert panic. Function has null pointer check, so
+        drop DEBUGASSERT.  From Jussi Kivilinna.
+      - STM32 F7 I2C: fix I2C_M_NORESTART handling.  From Jussi Kivilinna.
+      - STM32 F7 I2C:  Restore bus frequency after I2C reset.  Copy
+        frequency restoration fix from STM32L4 I2C driver to STM32F7 I2C
+        driver.  From Jussi Kivilinna.
+      - STM32 F7 RTC:  Fix reading alarm value that is more than 24h in
+        future.  From Juha Niskanen
+
+    * STMicro STM32 Boards:
+
+      - STM32F334-DISCO:  Add missing ram_vectors configuration in linker
+        script.  From Mateusz Szafoni.
+      - Nucleo-F334R8:  Add missing ram_vectors configuration in linker
+        script.  From Mateusz Szafoni.
+      - Nucleo-F334R8:  Add Missing ADC trigger configuration tot he highpri
+        configuration.  From Mateusz Szafoni.
+      - STM3240G-EVAL:  The timer frequencies (BOARD_TIMx_FREQUENCY) are
+        incorrectly defined in board.h.  Since the APB prescalers are set to
+        divide by 4 and 2 respectively, the frequencies should be "2xAPBx"
+        as said in the comment.  The correct frequencies are already defined
+        but as STM32_APBx_TIMx_CLKIN.  From Mattias Edlund.
+      - STM32F429i-DISCO:  The ltdc configuration has been deleted because
+        it violated the portable POSIX OS interface.  It used
+        apps/examples/ltdc and include ltdc.h and dma2d.h which were also
+        removed for the same reason.
+
+    * ZiLOG Z80
+
+      - configs/z80sim and xtrs:  Serial driver lower halfs ioctl methods
+        should return a negated errno value, not set the errno variable.
+      - z80 Make.defs:  Fixes dependency generation with newest SDCC
+        compiler.
+      - configs/z80sim:  Fix a naming problem.  Also, don't try to build the
+        serial driver if CONFIG_NFILE_DESCRIPTOR=0.
+      - Z80:  Makefile fix for use with current SDCC.
+
+    * Build System
+
+      - configs/:  All defconfig filess that include
+        CONFIG_NET_ICMPv6_SOCKET=y need to select CONFIG_SYSTEM_PING6=y and
+        deselect CONFIG_DISABLE_POLL.
+      - configs/:  All NX configuration... Because of recent changes to
+        libnx/nxfonts, Supported bit per pixel must be separated specified
+        for NXFONTs too and need to match the select BPP for NX.
+      - Build system:  Fix CONFIG_BUILD_KERNEL logic directories that have
+        ubin and kbin subdirectories.  Conditional logic was fine for
+        CONFIG_BUILD_FLAT and CONFIG_BUILD_PROTECTED but generated useless
+        dependencies if CONFIG_BUILD_KERNEL.
+
+    * C Library/Header Files:
+
+      - libc/stdio:  Build the lib_noflush() and lib_snoflush() stubs even
+        if CONFIG_FILE_DESCRIPTORS=0.  They may still be needed.
+      - libc and libnx:  When the libraries are built into two libraries, a
+        user space library and a OS space library (as in the PROTECTED and
+        KERNEL build).  Then the user space library must not use the OS
+        internal interfaces; similarly, the OS must avoid using the
+        userspace interfaces so that it does not muck the errno value or
+        create spurious cancellation points.
+      - libc/match:  Use of exp() vs expf() in logf() caused function to be
+        slow.  From Alan Carvalho de Assis.
+      - libnx:  Fixes a memory leak that is caused because the client message
+        queue is not unlinked after the client disconnects from the NX
+        server.  From Masayuki Ishikawa.
+      - sscanf():  Fix sscanf() character conversion (%c): do not add '\0' at
+        the end as for strings, cause, for example, parsing one character
+        will fill two bytes: character itself and zero one '\0' after it, so
+        will overflow one byte variable argument and corrupt memory for
+        variables allocated after it.  From Oleg Evseev.
+
+    * Tools
+
+      - tools/:  configure.sh and configure.c should redirect stdout to
+        /dev/null but should not suppress stderr output.
+
+    * NSH: apps/nshlib:
+
+      - apps/nshlib/:  Avoid truncating the strcmp result in the parser
+        into a unsigned char variable.  nshlib/nsh_netcmds.c:  Check for
+        valid hostip before using it.   From Bruno Herrera.
+      - apps/nshlib/:  Fix resouce leak in 'dd' commenad when 'if=' or
+        'of=' params are repeated in the command line.  For example:
+          dd if=/dev/null if=/dev/zero of=/dev/null or
+          dd if=/dev/zero of=/dev/zero of=/dev/null.   From Bruno Herrera.
+      - apps/nshlib:  This commit eliminates the ping and ping6 commands
+        from NSH and replaces them with 'built-in' commands at
+        apps/system/ping and ping6.  The original NSH version of ping[6]
+        commands violated the portable POSIX interface and, hence, had to
+        be removed. The new system/ping and ping6 built-in commands uses
+        the new IPPROTO_ICMP AF_INET and IPPROTO_ICMP6 AF_INET6 datagram
+        sockets to implement ping.
+      - apps/nshlib: Fix parsing of empty strings when CONFIG_NSH_CMDPARMS
+        is not defined. Problem noted by Juha Niskanen.
+
+    * Examples/Tests: apps/examples:
+
+      - All configurations that use NXIMAGE or NXHELLO must select
+        NX_MULTIUSER.  All configuratinos that use examples/nxterm must
+        enable CONFIG_LIB_BOARDCTL.
+      - All configurations that use NXLINES must select NX_MULTIUSER.  All
+        configurations that use the NX server need to have larger POSIX
+        messages.
+      - apps/examples/adc:  Fix g_adcstate.count initialization.  From
+        Masayuki Ishikawa.
+      - apps/examples/elf:  Remove low-level interfaces and replace with
+        call to exec().
+      - apps/examples/nxflat:  Remove low-level interfaces and replace with
+        call to exec().
+      - examples/ostest:  Works around a bug in printf() when cancellation
+        points are enabled.  printf() is a cancellation point because it
+        calls write().  This is correct according to OpenGroup.org.
+        However, printf holds the stdio library semaphore when it is
+        canceled and this leaves the semaphore in a bad state.  No fix for
+        the printf bug yet.
+      - apps/examples/nx:  The NX example no longer supports single user
+        mode.
+      - apps/examples/nxtext:  The nxtext example no longer supports single
+        user mode.
+      - apps/examples/nxhello now supports only multiuser mode.
+      - apps/examples/nximage now supports only multiuser mode.
+      - examples/nxlines:  Now supports only multiuser mode.
+
+    * Network Utilies: apps/netutils:
+
+      - apps/netutils/ftpc:  Fix some crazy comparisons to determine is a
+        file is an absolute path.  Noted by Anthony Merlino.
+
+    * System Unitilities (apps/system)
+
+      - apps/system/i2ctool: Fixed i2ctool write operation in `no restart`
+        mode (flag `-n`).  It seems that I2C driver has changed a bit since
+        i2ctool was written, so now i2ctool sends repeated start even if
+        `no restart` flag (-n) was passed to it.  From Dmitriy Linikov.
diff --git a/_releases/7.24.md b/_releases/7.24.md
new file mode 100644
index 0000000..6d499f1
--- /dev/null
+++ b/_releases/7.24.md
@@ -0,0 +1,787 @@
+---
+layout: page
+released: true
+apache: false
+title: 7.24
+date: 2018-03-04
+summary: >
+    Release v7.24
+
+artifact-root: "https://bitbucket.org/nuttx/nuttx/downloads/"
+checksum-root: ""
+key-file: ""
+
+source-os-dist:
+    - "nuttx-7.24.tar.gz"
+source-app-dist:
+    - "apps-7.24.tar.gz"
+
+---
+
+
+<!--
+{% comment %}
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to you under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+{% endcomment %}
+-->
+
+{% include JB/setup %}
+
+NuttX-7.24 Release Notes
+------------------------
+
+The 124th release of NuttX, Version 7.24, was made on March 2, 2018,
+and is available for download from the Bitbucket.org website.  Note
+that release consists of two tarballs:  nuttx-7.24.tar.gz and
+apps-7.24.tar.gz.  These are available from:
+
+    https://bitbucket.org/nuttx/nuttx/downloads
+    https://bitbucket.org/nuttx/apps/downloads
+
+Both may be needed (see the top-level nuttx/README.txt file for build
+information).
+
+Additional new features and extended functionality:
+
+    * Core OS:
+
+      - SMP: Introduce spin_lock_irqsave() and spin_unlock_irqrestore().
+        These APIs are simplified version of enter_critical_section()
+        and leave_critical_section() to protect data (e.g. registers) in
+        SMP mode.  By using these APIs inside drivers, performance will
+        be improved.  From Masayuki Ishikawa.
+      - System Timer:  Replace critical section APIs with spinlock APIs.
+        (64bit only).  If SMP=n or SMP=y && SPINLOCK_IRQ=n, this works
+        in the same way as before.  If SMP=y && SPINLOCK_IRQ=y, performance
+        will be improved.  From Masayuki Ishikawa.
+      - POSIX Timers: Replace critical section APIs with spin lock APIs in
+        clock_gettime.c.  This change will improve performance for SMP
+        systems but nothing changes for non-SMP systems.  In SMP mode,
+        the running TCB is not always at the g_readytorun.head.  From
+        Masayuki Ishikawa.
+      - SMP: Introduce spin_lock_wo_note() and spin_unlock_wo_note().  These
+        APIs are used in sched_note.c to protect instrumentation data.  The
+        difference between these APIs to exsiting spin_lock() and
+        spin_unlock() is that they do not perform instrumentation to avoid
+        recursive call when SCHED_INSTRUMENTATION_SPINLOCKS=y.  From
+        Masayuki Ishikawa.
+      - Interrupts:  Add a configuration option to show interrupt
+        information via a procfs file.
+
+    * File Systems/Block and MTD Drivers
+
+      - VFS:  Add support for truncate() and ftruncate().
+      - FAT, SmartFS, UserFS, UnionFS, TmpFS, NFS: Add truncate() support.
+      - FAT.  Effectively handles the situation when a new file position is
+        within the current sector.  Accelerates the work of the FS with a
+        multitude of operations to write small pieces of data within the
+        current sector.  From Aleksandr Vyhovanec.
+
+    * Graphics/Display Drivers:
+
+      - HiletGo OLED:  Add configuration support for HiletGo SSD1306 OLED.
+      - lcd/ft80x:  This commit adds an FTDI/BridgeTek FT80x GUI driver.  It
+        is untested (I don't even have hardware yet) and, hence, it is
+        marked as EXPERIMENTAL).
+
+    * Networking/Network Drivers:
+
+      - 6LoWPAN:  Adds configuration options for specifying preloaded
+        address contexts for compression  From Anthony Merlino.
+      - TCP:  Introduce tcp receive window control based on I/O buffer.
+        NOTE:  The algorithm is still experimental but useful for http
+        streaming.  From Masayuki Ishikawa.
+      - UDP:  Add an implementation of UDP write buffering.
+      - Routing Tables:  Adding ftruncate() support eliminates an issue
+        in file-based routing table management system.
+      - Telnet:  Add support for Telnet character mode  From Masayuki
+        Ishikawa.
+
+    * Other Common Device Drivers:
+
+      - drivers/input/ft5x06.c:  Add a driver for the FT5x06 capacitive,
+        multi-touch, touchscreen controller.
+      - drivers/input/ft5x06:  Add a polled mode of operation for the FT5x06
+        in attempt to work around the fact that the LPCXpresso-LPC54628
+        chose a non-interrupt pin for the FT5x06 interrupt.  Driver is still
+        not yet functional.
+      - drivers/power/bq2429x.c:  Add trickle charging mode  From Juha
+        Niskanen.
+      - drivers/sensors:  Add support to MAX44009 ambient light sensor.
+        From Juha Niskanen.
+      - drivers/sensors:  Added support for LIS3DH accelerometer sensor.
+        From Matt Thompson.
+      - drivers/eeprom:  EEPROM driver for AT24xx compatible EEPROMs.
+        From Sebastien Lorquet.
+
+    * Simulation
+
+      - sim:  Add support for a RAM MTD driver and initialization for use
+        with SmartFS.
+      - sim:  Add support for testing NXFFS.
+
+    * ARM:
+
+      - ARMv7-A, ARMv7-R, ARMv7-M:  Add atomic read-add-write and
+        read-subtract-write functions.
+
+    * Infineon XMC4xxx:
+
+      - XMC4xxx:  Refactor PLL setup, refactored PLL/CLK config, easier,
+        checks for correctness, call go_os_start if STACK_COLORIZED, smarter
+        config of EXTCLK output freq.  From David Alessio.
+
+    * Infineon XMC4xxx Boards:
+
+      - Add FPU to xmc4 ostest.  Remove +x from makefiles, preserve
+        .gdbinit across make clean, add FPU support to ostest on xmc4,
+        add FPU test to ostest on xmc4  From David Alessio.
+
+    * Microchip/Atmel SAMD/L Drivers:
+
+      - SAMD: SAMD External Interrupt Controller (EIC) support  From Matt
+        Thompson.
+      - SAMD/L:  Added Analog Comparator basic initialization  From Matt
+        Thompson.
+      - SAMD/L:  Added FDPLL clock support.  Fixed sequence of OSC32K
+        calibration setup.  From Matt Thompson.
+      - SAMD/L: Added loading factory USB calibration data from NVRAM.
+        From Matt Thompson.
+      - SAMD/L: Added experimental DMA support to SPI driver.  spi_exchange()
+        uses a pair of DMA channels for TX and RX.  From Matt Thompson.
+
+    * Microchip/Atmel SAM3/4 Boards:
+
+      - Flip&Click SAM3X:  Add board support for the Mikroe Flip&Click
+        SAM3X.
+      - Flip&Click SAM3X:  Adds basic board support for the HiletGo OLED.
+
+    * Microchip PIC32MZ
+
+      - PIC32MZEF:  Add architectural support for the PIC32MZEF family.
+
+    * Microchip PIC32MZ Boards
+
+      - Flip&Click PIC32MZ:  Adds board support for the Mikroe Flip&Click
+        PIC32MZ board.
+      - Flip&Click PIC32MZ:  Add board support for HiletGo OLED.
+      - Flip&Click PIC32MZ:  Add an nxlines configuration for use in
+        testing the custom HiletGo Click board.
+
+    * NXP Freescale LPC43xx Drivers:
+
+      - LPC43xx:  Adapt LPC176x RTC driver for the LPC43xx.  From Gintaras
+        Drukteinis.
+      - LPC43xx:  Add Windowed Watchdog Timer (WWDT) driver.  Tested on
+        LPC4357 but should be compatible for all LPC43xx MCUs.
+        From Gintaras Drukteinis.
+      - Leverage the LPC54xx SD/MMC back to the LPC43xx (where it came from
+        originally).
+
+    * NXP Freescale LPC43xx Boards:
+
+      - Bambino-200e:  Add LPC43 SDMMC board support to Bambino-200E.  From
+        Alan Carvalho de Assis.
+
+    * NXP Freescale LPC54xx:
+
+      - LPC546xx:  Added basic architectural support for the LPC546xx
+        family.
+
+    * NXP Freescale LPC54xx Drivers:
+
+      - LPC546xx:  Basic NSH configuration includes support for UARTs,
+        SysTick timer, GPIOs, LEDs, and buttons
+      - LPC546xx:  Additional drivers include EMC, I2C, Ethernet
+      - LPC546xx:  Implement GPIO interrupt support.
+      - LPC546xx:  And unverified SPI driver is included.
+      - LPC546xx:  Ported LPC1788 LCD driver to use the LPC54xx pin.
+      - LPC546xx:  Bring in LPC43xx SD/MMC driver from
+        https://github.com/Smoothieware/smoothie-nuttx/tree/master/nuttx/arch/arm/src/lpc43xx
+        and adapt for use with the LPC43xx
+      - LPC546xx:  Add DMA driver ported from the LPC43xx GPDMA driver.
+      - LPC546xx:  Bring in WWDT driver from LPC43.
+      - LPC546xx:  Add an RTC driver and a RTC character driver lower half.
+      - LPC546xx:  Add support for a random number generator.
+      - LPC546xx:  Add an Ethernet driver.
+
+    * NXP Freescale LP54xx Boards:
+
+      - LCXpresso-LPC54628:  Added support for the LPCXpresso-LPC54628
+        board.  The initial bring-up used a basic NSH port.
+      - LCXpresso-LPC54628:  On-board SDRAM is also supported
+      - LCXpresso-LPC54628:  Add support for I2C2 and for the I2C tool to
+        the NSH configuration.
+      - LCXpresso-LPC54628:  Add support for the USER button.  Enable the
+        apps/examples/button test in the NSH configuration.
+      - LCXpresso-LPC54628:  Add the fb configuration for testing the LCD.
+      - LCXpresso-LPC54628:  Add support for the the FT5x06 touchscreen
+        controller.  Enable the driver as well as the apps/examples
+        touchscreen test.
+      - LCXpresso-LPC54628:  Add an NxWM configuration.
+      - LCXpresso-LPC54628:  Add logic to bring up SDMMC.
+      - LCXpresso-LPC54628:  Add logic to register the RTC character driver
+        if it is enabled.  Enable the RTC and RTC character driver in the
+        NSH configuration.
+      - LCXpresso-LPC54628:  Add a netnsh configuration that was be used to
+        test the Ethernet driver.
+      - LCXpresso-LPC54628:  Add LittlevGL graphics demo configuration.
+
+    * On Semiconductor LC823450
+
+      - LC823450 SMP improvements:  (1) Apply irq_spin APIs to
+        modifyregXX, (2) Do not use modifyreg32() to enable Mutex, (3)
+        Modify IRQ control for i2s.  Apply irq_spin APIs to
+        dma/syscontrol/usbdev.  From Masayuki Ishikawa.
+      - LC823450:  LC823450 http streaming improvements: (1) Use spinlock
+        APIs in lc823450_gpio.c.  (3) Fix a potential race condition in
+        up_enable_irq(), (3) Use spinlock APIs instead of critical section
+        APIs, (4) Enable HRT_TIMER in lc823450_timerisr.c. (5) Use spinlock
+        APIs instead of critical section APIs. (6) Fix race conditions in
+        dma/usbdev.  From Masayuki Ishikawa.
+      - LC823450: Introduce DVFS.   This version only supports manual mode
+        and Vdd1 is fixed to 1.2V.  From Masayuki Ishikawa.
+
+    * On Semiconductor LC823450 Drivers
+
+      - LC823450:  Refactor timer driver.  Add MTM timer APIs for DVFS.
+        Introduce up_rtc_gettime() for CONFIG_RTC_HIRES.  Introduce idle
+        time calculation in DVFS.  Also, DVFS autonomous mode based on CPU
+        idle time is supported.  NOTE: voltage control is still disabled.
+        From Masayuki Ishikawa.
+
+    * On Semiconductor LC823450 Boards
+
+      - LC823450-XGEVK:  I2S interrupt will be handled on CPU0 with this
+        change.  Assign CPU1 to lpwork.  This change will improve load
+        balancing for networking with RNDIS.  From Masayuki Ishikawa.
+      - LC823450-XGEVK: Enable SPINLOCK_IRQ and NXPLAYER in rndis.  From
+        Masayuki Ishikawa.
+      - LC823450-XGEVK: LC823450 http streaming improvements: (1) In SMP
+        mode, H/W interrupts should be handled on CPU0 to avoid deadlocks.
+        (2) Call up_enable_irq() to assign CPU0 for IRQ handling.  (3)
+        Enable HRT_TIMER, LC823450_MTM0_TICK, SPINLOCK_IRQ, (4) Enable
+        NET_TCP_RWND_CONTROL, NXPLAYER_HTTP_STREAMING_SUPPORT (rndis only)
+        From Masayuki Ishikawa.
+      - LC823450-XGEVK:  Enable DVFS in lc823450_bringup.c.  Enable DVFS
+        in audio and rndis. Add Telnet character mode to rndis.  From
+        Masayuki Ishikawa.
+      - LC823450-XGEVK:  Explicitly assign I2S IRQ handling to CPU0.  From
+        Masayuki Ishikawa.
+      - LC823450-XGEVK:  Enable RTC_HIRES instead of RTC_DATETIME (audio/
+        rndis).  Disable TCP_WRITE_BUFFERS and change SCHED_LPWORKPRIORITY
+        (rndis). Update SMP and DVFS related part.  From Masayuki Ishikawa.
+
+    * STMicro STM32:
+
+      - STM32 F7:  Add support for the STM32F72x/73x family. From Bob
+        Feretich.
+
+    * STMicro STM32 Drivers:
+
+      - STM32 HRTIM:  Add interface to change outputs SET/RST configuration.
+        From Mateusz Szafoni.
+      - STM32 HRTIM:  Add interface to get timer clock frequency,
+        calculation, add compare/capture registers significant bits
+        checking.  From Mateusz Szafoni.
+      - STM32 HRTIM:  Add interface to set timer frequency, fix slave timers
+        reset configuration, change POWER_INFO to TIMER_INFO  From Mateusz
+        Szafoni.
+      - STM32 HRTIM:  Add repetition support and fix enum overflow  From
+        Mateusz Szafoni.
+      - STM32 HRTIM:  Add HRTIM push-pull mode configuration.  From
+        raiden00pl.
+      - STM32 FLASH:  Add progmem support for STM32L15XX From Juha Niskanen.
+
+    * STMicro STM32 Boards:
+
+      - configs/photon: Adds BOARD_TIMn_FREQUENCY macros  From Anthony
+        Merlino.
+      - configs/indium-f7:  Adds support for the RAF Research Indium-F7
+        board.  From Bob Feretich.
+      - Rename the configs/stm32f0discovery board directory to
+        configs/stm32f051-discovery.  There are others stm32f0discovery
+        boards with different MCUs and different peripherals on the board.
+        From Alan Carvalho de Assis.
+      - configs/stm32f072b-discovery:  Adds support for stm32f072b-disco
+        board. This is the board. I added the LEDs of this board and tested
+        the compilation.  From Alan Carvalho de Assis.
+      - configs/stm32f103-minimum:  Add AT24 EEPROM support on STM32F103-
+        Minimum board  From Alan Carvalho de Assis.
+      - configs/stm32f103-minimum:  Add support to BMP180 on BluePill
+        (stm32f103-minimum) board.  From Alan Carvalho de Assis.
+      - configs/stm32f334-disco:  Add buck converter and boost converter
+        logic.  From Mateusz Szafoni.
+      - configs/stm32f103-minimum:  Add zerocross support to STM32F103-
+        Minimum board  From Alan Carvalho de Assis.
+      - configs/stm32f103-minimum:  Add OLED SSD1306 support to
+        STM332F103-Minimum  From Alan Carvalho de Assis.
+      - configs/stm32f103-minimum: Add board support to MAX6675 Thermocouple
+        sensor  From Alan Carvalho de Assis.
+      - configs/stm32f746g-disco: Add stm32f746g-disco Ethernet configuration.
+        Add USART1 support (connected to the USB virtual serial port)  From
+        Louis Mayencourt.
+      - configs/viewtool-stm32f107:  Add support for FT80X initialization.
+        Add ft80x configuration that will eventually be used for testing the
+        ft80x if I ever receive hardware.
+
+    * Tools:
+
+      - tools/logparser:  Add a tool which will help me to convert git logs
+        to ChangeLog format.
+
+    * NSH: apps/nshlib:
+
+      - apps/nshlib:  Add support for a truncate command.  This will be used
+        to test the new ftruncate file system support.
+      - apps/nshlib:  Add support for Telnet character mode.  From Masayuki
+        Ishikawa.
+      - apps/nshlib: Add support for '-n' option to the echo command.  From
+        Masayuki Ishikawa.
+      - apps/nshlib:  Add irqinfo command.
+
+    * Examples/Tests: apps/examples:
+
+      - apps/examples/userfs:  Add truncate() support for userfs.
+      - apps/examples/lvgldemo:  Add lvgldemo example for LittlevGL.
+      - apps/examples/veml6070:  Add VEML6070 Application Example.  From
+        Alan Carvalho de Assis.
+      - apps/examples/bmp180: Add BMP180 application example.  From Alan
+        Carvalho de Assis.
+      - apps/examples/ft80x:  Add a test of the FT80x based on FTDI
+        SampleApp.  Includes tests of GPU primitives and graphics co-
+        processor commands.
+
+    * Network Utilities: apps/netutils:
+
+      - apps/netutils/netlib: Add default route in netlib_set_dripv4addr().
+        From Masayuki Ishikawa.
+
+    * Graphics: apps/graphics:
+
+      - apps/graphics/littlevgl:  Add littlevgl library.  From Alan Carvalho
+        de Assis.
+      - apps/graphics/ft80x:  Add the FTDU FT80x GUI support library.
+        Consists of some display list helpers, audio helpers, touch helpers,
+        RAM access, register access etc.
+
+    * System Utilities (apps/system)
+
+      - apps/system/nxplayer:  Add support for HTTP streaming in nxplayer.
+        From Masayuki Ishikawa.
+      - apps/system/setlogmask:  Adds 'setlogmask' application that allows
+        you to set the syslog priority via a simple command.  From Anthony
+        Merlino.
+      - apps/system/usbmsc: Added Kconfig options to configure write
+        protection for each LUN.  From Fabio D'Urso.
+      - system/stackmonitor:  Re-design the stack monitor so that it does not
+        make forbidden calls directly into the OS, breaking the portable POSIX
+        OS interface.  It now properly uses the PROCFS file system to glean
+        information about stack usage.
+
+Bugfixes.  Only the most critical bugfixes are listed here (see the
+ChangeLog for the complete list of bugfixes and for additional, more
+detailed bugfix information):
+
+    * Core OS:
+
+      - System Timer:  Change the way that the 64-bit time is sampled.
+        Previously, we disabled interrupts before sampling the 64-bit
+        timer since the uint64_t access is not atomic on most CPUs.  However,
+        disabling (local) interrupts does not work in the SMP case.  In that
+        case, the timer interrupt may be running on only one of the CPUs;
+        disabling interrupts on a different CPU will provide no protection
+        from timer rollover.  To work around this, logic was added that
+        samples 64-bit timer is sampled twice and if 32-bit rollover was
+        detected between samples, then loops until there is no rollover.
+      - POSIX Timers:  In SMP mode, running TCB is not always at the head of
+        the g_readytorun list.  This change removes DEBUGASSERT() to avoid
+        this condition.  From Masayuki Ishikawa.
+      - Spinlocks:  Add memory barrier operations in spin_unlock().  In ARM
+        document regarding memory barriers, SP_DMB() must be issued before
+        changing a spinlock state to SP_UNLOCKED.  However, we found that
+        SP_DSB() is also needed to ensure that spin_unlock() works
+        correctly for network streaming aging test.  From Masayuki Ishikawa.
+      - Sporadic Scheduler:  Fix compiler error in Sporadic Scheduler when
+        priority inheritance is enabled.  Noted by eunb.song@samsung.com
+      - Priority Inheritance:  Fix some priority inheritance related issues
+        noted during review of logic.  Also add some REVISIT comments for some issues noted in the design.
+      - boardctl:  Remove the BOARDIOC_TSCTEST_TEARDOWN and
+        BOARDIOC_TSCTEST_SETUP boardctl() commands.  Remove all
+        implementations of board_tsc_teardown().  Each board now initializes
+        the touchscreen controller as a normal part of its board  bring-up.
+        board_tsc_setup() is gone; the touchscreen controller is now treated
+        like any other on-board device.
+      - configs:  CONFIG_MAX_TASKS must be a power of 2.
+      - SMP: Introduce a new global IRQ clearing logic and tasklist
+        protection.  The previous implementation of clearing global IRQ in
+        sched_addreadytorun() and sched_removereadytorun() was done too
+        early. As a result, nxsem_post() would have a chance to enter the
+        critical section even nxsem_wait() is still not in blocked state.
+        This patch moves clearing global IRQ controls from
+        sched_addreadytorun() and sched_removereadytorun() to
+        sched_resumescheduler() to ensure that nxsem_post() can enter the
+        critical section correctly.  For this change,
+        sched_resumescheduler.c is always necessary for SMP configuration.
+        In addition, by this change, task_exit() had to be modified so that
+        it calls sched_resumescheduler() because it calls
+        sched_removescheduler() inside the function, otherwise it will cause
+        a deadlock. However, I encountered another DEBUGASSERT() in
+        sched_cpu_select() during HTTP streaming aging test on LC823450-XGEVK.
+        Actually sched_cpu_select() accesses the g_assignedtasks which might
+        be changed by another CPU. Similarly, other tasklists might be
+        modified simultaneously if both CPUs are executing scheduling logic.
+        To avoid this, I introduced tasklist protection APIs. With these
+        changes, SMP kernel stability has been much improved.  From Masayuki
+        Ishikawa.
+      - SMP:  Fix this_task() to be an atomic operation.  In the previous
+        implementation, this_task() was defined in sched.h by using just a
+        macro current_task(this_cpu()).  However, I found that this is not
+        atomic and actually sometimes switching CPU happened in executing
+        the macro when we tested audio steaming plus executing commands via
+        Telnet.  This change resolves this issue by implementing atomic
+        this_task()in sched_thistask.c which is newly introduced.  From
+        Masayuki Ishikawa.
+      - SMP:  Implements a global scheduler lock capability as part of SMP
+        support.  This allows the scheduler to be locked with no knowledge
+        or access to the TCB of the currently running task.  This is
+        necessary because accessing the TCB of the currently running task
+        is, itself, a non-atomic operation.  This global scheduler lock
+        capability was add just to support that atomic access to the TCB.
+      - SMP:  Extend the last global lock change to work with the
+        LC823450-XGEVK which does not support the atomic fetch add but
+        does support disabling interprocessor interrupts.  Disabling
+        interprocessor interrupts will also guarantee that the TCB address
+        calculation is atomic.
+      - SMP:  Fix a infinite recursion problems that a recent changes
+        introduced into the i.MX6 SMP implementation.  This is not seen
+        with the LC823450 because you can disable inter-processor interrupts
+        in that architecture; but you cannot in the ARMv7-A/GIC architecture.
+      - SMP:  Remove SMP related logic in sig_dispatch.c.   This change
+        prevents from a deadlock in up_schedulesigaction.c where inter-CPU
+        signal handling is actually implemented.  arch/arm/src/armv7-m: Fix
+        signal handling for SMP. In previous implementation, signal handling
+        for SMP was incorrect.  Thus, for example, if an inter-CPU signal
+        happened an incorrect tcb was signaled and caused ASSERT().  This
+        change fixes the issues and works for both inter-CPU signal handling
+        and signal handling on the same CPU.  From Masayuki Ishikawa.
+      - Tasking:  Add nxtask_create().  Kthread_create() and nxtask_create()
+        are internal OS functions and should not modify the errno variable.
+        Convert legitimate uses of task_create() to nxtask_create().
+        Review handling of returned values from all uses of kthread_create()
+        (as well as nxtask_create()).
+      - Tasking:  Threads started by board bring-up logic should be kernel
+        threads, not user tasks.
+      - Tasking:  Threads started by drivers should be kernel threads, not
+        user tasks.
+      - Semaphore Usage:  Added ECANCELED condition to DEBUGASSERT's
+        checking sem_wait result  From Dmitriy Linikov.
+
+      - errno:  Add new internal OS function nxsched_setaffinity() that is
+        identical to sched_isetaffinity() except that it does not modify the
+        errno value.  All usage of sched_setaffinity() within the OS is
+        replaced with nxsched_setaffinity().
+      - errno:  Internal functions sched_reprioritize() and
+        sched_setpriority() no longer modify the errno value.  Also renamed
+        to nxsched_reprioritize() and sched_setpriority().
+      - errno:  Add new internal OS function nxsched_getscheduler() that is
+        identical to sched_getscheduler() except that it does not modify the
+        errno value.  All usage of sched_getscheduler() within the OS is
+        replaced with nxsched_getscheduler().
+      - errno:  Add new internal OS function nxsched_setparam() that is
+        identical to sched_setparam() except that it does not modify the
+        errno value.  All usage of sched_setparam() within the OS is
+        replaced with nxsched_setparam().
+      - errno:  Add new internal OS function nxsched_getparam() that is
+        identical to sched_getparam() except that it does not modify the
+        errno value (actually, the previous value erroneously neglected to
+        set the errno value to begin with, but this fixes both issues).  All
+        usage of sched_getparam() within the OS is replaced with
+        nxsched_getparam().
+      - errno:  wd_start() is an internal OS function and should not set the
+        errno value.  Reviewed and updated every call to wd_start() to
+        verify if return value is used and if so if the errno value is
+        accessed.
+      - errno:  Fix several inappropriate accesses to get_errno() that were
+        missed in previous changes (some going back to nuttx-7.23).  Add new
+        nxsched_setscheduler() and nxsched_getaffinity() which are
+        equivalent to their counterparts without the nx on front.  These
+        versions do not modify the errno value.  Changed all calls within
+        the OS to use these newer versions of the functions.
+      - errno:  binfmt/, configs/, grahics/, libc/, mm/, net/, sched/:  OS
+        references to the errno variable should always use the set_errno(),
+        get_errno() macros.
+      - drivers/, fs/ and libc/:  OS references to the errno variable should
+        always use the set_errno(), get_errno() macros.
+
+    * File System/Block and MTD Drivers:
+
+      - FAT:  CONFIG_FAT_MAXFNAME may not exceed NAME_MAX (CONFIG_NAME_MAX)
+      - NFS:  Correctly infer file type.  The file type is in struct
+        nfs_statinfo_s's ns_type field, not in the ns_mode field.  From
+        Michael Jung.
+      - NFS: Fix buffer corruption.  In case multiple read requests to the
+        NFS server are required to fill up the user provided buffer,
+        nfs_read() might write behind the end of said buffer.  This is fixed
+        with this change.  From Michael Jung.
+      - VFS:  reopen() should return NULL when oflags is less than 0, not
+        equal to 0. Because negative value is returned on failure of
+        lib_mode2offlags() which converts the mode string into file open
+        mode flag.
+      - ProcFS:  Fix an error in a common function that manages read data.
+      - drivers/mmcsd:  Respect SDIO_CAPS_DMABEFOREWRITE on CMD25.  From
+        Evgeniy Bobkov.
+      - AT24xx:   Correct page size for AT24C02 part.  From Alexander
+        Oryshchenko.
+      - mtd_config.c:  Add still more error handling (to detect bad
+        underlying flash implementations).  Remove MTD_ERASE that was
+        erasing data block instead of erase block.  This is a partial
+        revert of 4f18b4. Reported-by: Pascal Speck <ik...@yahoo.com>
+
+    * Graphics/Display Drivers:
+
+      - drivers/lcd:  Fix the default I2C address of SSD1306 OLED display
+        (7- vs 8-bit addressing)  From Alan Carvalho de Assis.
+      - drivers/lcd:  lcd_framebuffer.c does not need to include board-
+        specific board.h.
+      - include/lcd:  Eliminate a warning from an SSD1306 header file by
+        adding a forward reference to struct i2c_master_s.  From Sebastien
+        Lorquet.
+
+    * Networking/Network Drivers:
+
+      - ARP:  Fix an error introduced when ICMP and ICMP6 socket support was
+        added in NuttX-7.3.  A gratuitous ARP (or solicitation) was being
+        sent after receive of the ECHO replay (advertisement).
+      - ARP:  Fix IGMP multicast address computation on Nuttx network stack.
+        This change fixes the IGMP address computation to allow multicast
+        UDP messages. The destination address was created with the incorrect
+        bytes of the given IPv4 address.  From Louis Mayencourt.
+      - ioctl:  The existence of the network driver ioctl() method should
+        depend on CONFIG_NETDEV_IOCTL rather than CONFIG_NETDEV_PHY_IOCTL.
+        The former enables the method, the later enables a subset of
+        possible driver IOCTLs.
+      - TCP:  Write buffering logic should not wait for a free buffer if
+        the socket was opened non-blocking.
+      - TCP:  Fixed bad return value handling in psock_tcp_send().  send()
+        expects psock_tcp_send() to return a negated errno value, not -1
+        with the errno set (GN: I added same change for tcp_send_buffered.c
+        which has the same issue as tcp_send_unbuffered.c)  From Pelle
+        Windestam.
+      - TCP:  Fixes hardfault when network goes done and network monitoring
+        is in place.  From Gianpaolo Ferroni Ariani.
+      - TCP: tcp_send_[un]buffered.c:  Check routing table in
+        psock_send_addrchck().  Previously only ARP table was considered
+        when determining if the data will actually be sent.  From Juho
+        Grundstrom.
+      - TCP:  Generalize Juho Grundstrom's IPv4 change for IPv6 as well.
+      - UDP:  Remove some conditional logic that was true if there is only a
+        single network device, but not true in the multi-device context.
+      - UDP:  In sendto(), return EHOSTUNREACH if the network is down.
+
+    * Common Drivers:
+
+      - drivers/pipes:  In poll logic, fix off-by-one error in calculation
+        of bytes in the buffer.  Buffer calculation in pipe poll setup is
+        off-by-one when read index is larger than write index. This causes
+        poll() not getting POLLIN when buffer has one byte as calculation
+        gives zero bytes in buffer.  From Jussi Kivilinna.
+      - drivers/audio:  Improve stability of the WM8776 driver in SMP mode.
+        Apply irq_spin APIs to improve performance.  Repeat to process a
+        message to avoid deadlock.  From Masayuki Ishikawa.
+      - drivers/ioexpander:  Fixed build of PCF8574 driver when its
+        interrupts aren't enabled by config.  From Dmitriy Linikov.
+      - drivers/syslog:  Fixes LOG_UPTO macro to include specified log level.
+        From Anthony Merlino.
+      - drivers/sensors:  Fix HTS221 sensor reset with BOOT bit  From Jussi
+        Kivilinna.
+      - drivers/loop:  If we want to open read-only in losetup.c, flags
+        should be O_RDONLY not O_RDWR.  From Fabio D'Urso.
+      - drivers/timers/ds3231.c:  Correct some debug statements.  From
+        Alexander Oryshchenko.
+      - drivers/sensors/lis2dh:  Use realtime clock if monotonic is not
+        available  From Juha Niskanen.
+      - drivers/i2c and drivers/spi:  Fix compile error if
+        CONFIG_DISABLE_PSEUDOFS_OPERATIONS, fix bad NULL checks  From Juha
+        Niskanen.
+
+    * ARMv7-A:
+
+      - Data Cache:  Fix cp15_invalidate_dcache.  In cases where more than
+        one dcache line was to be invalidated, a missing branch label
+        would result in a false branch target into cp15_flush_idcache.  Also
+        the .size macro was fixed for both cp15_invalidate_dcache.  From
+        Michael Jung.
+      - SMP:  Port the signal-related SMP change by Masayuki Ishikawa to the
+        ARMv7-A family.
+
+    * Extensa:
+
+      - SMP:  Port the signal-related SMP change by Masayuki Ishikawa to the
+        Xtensa family.
+
+    * Infineon XMC4xxx Drivers:
+
+      - XMC4xxx:   Only setup USB clock when USB PLL is enabled  From Alan
+        Carvalho de Assis.
+      - XMC4xxx: Fix USIC_BRG_SCLKCFG definition  From Alan Carvalho
+        de Assis.
+
+    * Microchip PIC32MZ
+
+      - MIPS32:  In up_idle, the kludge that was conditionally enabled if
+        the work queue was enable appears to be needed even when he work
+        queue is not enabled on the PIC32MZ.
+      - PIC32MZ:  Fix some typos in debug instrumentation in pic32mz-gpio.c;
+        fix some typos related to UART5 configuration in pic32mz-serial.c.
+
+    * Microchip/Atmel SAMD/L:
+
+      - SPI:  In sam_spibus_initialize(), the pinmux configuration was
+        smashing the previous CTRLA register configuration. There are
+        also some typos in samd_spi.h  From Matt Thompson.
+      - SPI:  Fixes g_spi2ops and g_spi2dev using incorrect values  From Matt
+        Thompson.
+      - SPI:  SPI must be disabled before changing the mode bits in CTRLA
+        register  From Matt Thompson.
+      - DMA:  Fix DMA controller support.  From Matt Thompson.
+
+    * NXP/Freescale LPC17xx Drivers:
+
+      - LPC17xx:  Disable LPC17 FDR when not used.  If a boot loader set the
+        fractional divider (FDR) the baud rate in nuttx will be wrong
+        (multiplied by this fraction).  So if it is not used, it should be
+        disabled. From Harald Gutsche.
+
+    * NXP/Freescale Kinetis Drivers:
+
+      - Kinetis:  Correct some Ethernet PHY register bit tests for the
+        KSZ8081 PHY.  From Stewart.
+
+    * On Semiconductor LC823450
+
+      - arch/arm/src/LC823450: Add SP_DMB() into lc823450_testset.c.
+        In LC823450, ldrex and strex are not supported. So we implemented
+        up_testset() with H/W Mutex. However, there was a bug in memory
+        access order. This change ensures correct memory access order in
+        up_testset() for LC823450. From Masatoshi Tateishi.
+
+    * STMicro STM32 Drivers:
+
+      - STM32 F3 RCC:  A flash wait state configuration.  Flash latency must
+        be fixed according to sysclk frequency.  If this operation is not
+        done or done after PLL configuration, the STM32 fail to continue
+        boot operation if the frequency if greater than 24MHz according to
+        the board variable STM32_SYSCLK_FREQUENCY.  Tested on stm32f334-disco
+        board.  From Gwenhael Goavec-Merou.
+      - STM32 RTC:  Make STM32 usable with an external RTC.
+      - STM32 SPI:  Removed unnecessary (and incorrect) speed limitation.
+        From Alexander Oryshchenko.
+      - STM32 SPI:  I have a SPI bus with both Mode 0 and Mode 3 devices
+        on it.  After performing SPI I/O to a Mode 0 device, switching to a
+        Mode 3 device locked up the SPI interface.  Only zeroes would be
+        read.  I traced the reason for the lock-up to arm/arm/src/stm32f7/stm32_spi.c function spi_setmode().  Changing
+        the mode causes a spurious SPI clock transmission that confuses the
+        stm32f7 SPI input hardware.  This problem is solved by (1) changing
+        the SPI mode with SPI (and perhaps DMA) disabled, and (2) flushing
+        the receive FIFO if the mode change results in garbage in the FIFO.
+        From Bob Feretich.
+      - STM32 and STM32 F7:  Remove confusing, redundant, and misleading
+        definitions of STM32_BKP_BASE from the F2, F3, and F4 memory
+        maps.  Unlike the F1, these parts do not have a separate BKP address
+        region.  The BKP registers are with the RTCC address regions.
+        stm32_bkp.h should only be used for STM32 F1. stm32_rtcc.h should be
+        used to access BKP registers on F2, F3, and F4.
+      - STM32 and STM32 F7:  Architecture-specific code is not permitted to
+        modify the errno variable.
+      - STM32 F4 I2C:  Correct some recent changes to STM32F4 I2C that broke
+        poll mode of operation.  From Alexander Oryshchenko.
+      - STM32 F4 I2C:  Corrections to STM32 F4 I2C to restore functionality.
+        From Alexander Oryshchenko.
+      - STM32 F4 I2C:  Corrections to STM32 F4 I2C to fix the NORESTART
+        flag.  From Alexander Oryshchenko.
+      - STM32 F7:  Fixes a bug in multi-block SD-card operations on the
+        STM32F7 platform.  DBLOCKSIZE must be the size of SD-card block, not
+        the total amount of transferred bytes.  From Evgeniy Bobkov.
+      - STM32 F7:  Fix undefined variable when using USART1 for other
+        purposes than UART (e.g. SPI).  From Frank Benkert.
+      - STM32 F7:  Backport RTC alarm setting changes from STM32L4.  Most
+        notably this fixes RTC getting stuck issue when both alarms were
+        used.  Root cause was writing RTC ISR register contents to RTC CR
+        register.  From Juha Niskanen.
+      - STM32 L4 Flash:  Change flash programming to use page buffer for
+        unaligned writes.  From Juha Niskanen.
+
+    * STMicro STM32 Boards:
+
+      - Nucleo-L432KC:  Fix some bogus logic noted by Fanda.
+      - configs/nucleo-* and configs/stm32l476vg-disco:  Fix more
+        stm32_userleds.c bogus logic  From Juha Niskanen.
+      - Nucleo-L432KC:  Fixed nucleo-l432kc broken build when
+        CONFIG_USERLED_LOWER defined  From Fanda.
+      - Nucleo-L432KC:  Issue #85: /dev/userleds is not working for
+        Nucleo-L432KC fixed  From Fanda Vacek.
+      - STM32F429I-Disco:  Separate SPI4 from MTD init.  I was trying to
+        attach a non-MTD peripheral to an STM32F429I Discovery Board's SPI4
+        port and was hitting compilation problems, since CONFIG_MTD and
+        thus 'struct mtd_geometry_s' was not defined.  This patch separates
+        SPI4 initialization logic from MTD initialization logic.  From
+        Michael Jung.
+      - STM32F103-Minimum:  Remove CONFIG_NX_LCDDRIVER dependence from
+        stm32_ssd1306.c  From Alan Carvalho de Assis.
+
+    * C Library/Header Files:
+
+      - libc/stdio:  In dtoa(), up_interrupt_context() is used in a debug
+        assertion.  up_interrupt_context() is not available in the user-mode
+        phase of the PROTECTED or KERNEL build configurations.  In those
+        configurations, enabling libc floating point support and debug
+        assertions will result in an undefined reference to
+        up_interrupt_context().
+      - libc/netdb:  Fixed parsing of DNS response packets having compressed
+        names ending with pointer.  There were troubles parsing response
+        packets which have compression of QNAME/NAME field when only
+        trailing part of the name (not the whole name) is replaced with
+        pointer to another part of the packet.  This commit fixes parsing of
+        such packets.  Also I added checks to keep parsing only in bounds of
+        the read part of DNS response packet.  From Dmitriy Linikov.
+
+    * Tools
+
+      - tools/*.c:  Add #define _GNU_SOURCE to all C files that call
+        asprintf() to eliminate a warning.
+      - tools/cvsparser.c:  Add a check to avoid access past the end
+        of a fixed size array
+
+    * NSH: apps/nshlib:
+
+      - apps/nshlib:  Fix compile error when CONFIG_NSH_DISABLESCRIPT is not
+        defined.  The field np_flags does not exist if scripting is disabled.
+
+    * Examples/Tests: apps/examples:
+
+      - apps/examples/touchscreen:  Eliminate BOARDIOC_TSCTEST_SETUP.
+
+    * Network Utilities: apps/netutils:
+
+      - apps/netutils/ftpc:  Fix some corner-cases that could cause FTP to
+        access past the end of valid data.
+
+    * Wireless Utilities: apps/wireless:
+
+      - apps/wireless/ieee802154/i8shark: Fixes special XBee compensation
+        by purposely chopping off the FCS.  From Anthony Merlino.
+
diff --git a/_releases/7.25.md b/_releases/7.25.md
new file mode 100644
index 0000000..5d54033
--- /dev/null
+++ b/_releases/7.25.md
@@ -0,0 +1,811 @@
+---
+layout: page
+released: true
+apache: false
+title: 7.25
+date: 2018-06-28
+summary: >
+    Release v7.25
+
+artifact-root: "https://bitbucket.org/nuttx/nuttx/downloads/"
+checksum-root: ""
+key-file: ""
+
+source-os-dist:
+    - "nuttx-7.25.tar.gz"
+source-app-dist:
+    - "apps-7.25.tar.gz"
+
+---
+
+
+<!--
+{% comment %}
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to you under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+{% endcomment %}
+-->
+
+{% include JB/setup %}
+
+NuttX-7.25 Release Notes
+------------------------
+
+The 125th release of NuttX, Version 7.25, was made on June 3, 2018,
+and is available for download from the Bitbucket.org website.  Note
+that release consists of two tarballs:  nuttx-7.25.tar.gz and
+apps-7.25.tar.gz.  These are available from:
+
+    https://bitbucket.org/nuttx/nuttx/downloads
+    https://bitbucket.org/nuttx/apps/downloads
+
+Both may be needed (see the top-level nuttx/README.txt file for build
+information).
+
+Additional new features and extended functionality:
+
+    * File Systems/Block and MTD Drivers
+
+      - fs/cromfs:  Added CROMFS file system.  CROMFS is a commpressed, in-
+        memory, read-only file system based on LZF.
+      - fs/vfs:  Added support for checking if a descriptor is a socket in
+        fstat().  From Pelle Windestam.
+
+    * Graphics/Display Drivers:
+
+      - drivers/lcd:  Remove support for the Nokia6100 LCD.  That LCD uses a
+        9-bit SPI interface (the 9th bit being the command/data bit that is
+        normally a discrete).  That communication was never successfully
+        integrated.  I now believe that it would would require some special
+        support from the low-level, MCU SPI driver to manage that 9th bit.
+        The deleted code is still available in the Obsoleted repository.
+
+    * Networking/Network Drivers:
+
+      - net/tcp:  Added support for TCP Keepalive, add SO_KEEPALIVE socket
+        option.  Added socket options needed to manage TCP-keepalive and TCP
+        state machine logic to detect if that the remote peer is alive.
+      - net/tcp:  In tcp_input(), add the logic to detect, decode, and
+        respond to TCP Keep-Alive packets.
+      - net/tcp:  Extended support for sending to non-blocking tcp sockets.
+        From Pelle Windestam.
+      - net/bluetooth:  Added support for AF_BLUETOOTH sockets.
+      - drivers/net:  Added TAP (network bridge) mode to tun.c.  In the
+        previous implementation, TAP mode did not handle a packet correctly.
+        Also, the driver did not set the link layer type and could not
+        assign the interface name. This change fixes such issues and supports
+        TAP mode correctly.  From Masayuki Ishikawa.
+
+    * Wireless/Wireless Drivers:
+
+      - wireless/ieee802154:  Added basic MAC support for RX-ENABLE.request
+        primitive  From Anthony Merlino.
+      - wireless/ieee802154:  Added MAC ackreq flag to TX descriptor for use by
+        radio driver.  The radio layer is responsible for a full "transaction".
+        Because of differences in radio capabilities, the radio must be
+        responsible for the handling of acks and retransmissions. This commit
+        simply passes the ackreq meta-data flag along to the radio.  Also
+        Fixes bug where primitive was freed when it shouldn't have been,
+        causing double free call.  From Anthony Merlino.
+      - wireless/bluetooth:  Bring in the Bluetooth stack from the Intel/
+        Zephyr arduino101_firmware_source-v1.tar package.
+      - drivers/bluetooth:  Added re-architected version of the Bluetooth
+        UART driver from the Intel/Zephyr arduino101_firmware_source-v1.tar
+        package.
+      - include/nuttx/wireless:  Added a setbaud() method to the HCI UART
+        lower half interface that can be used to change the default BAUD
+        selection.
+      - wireless/bluetooth and include/nutt/net:  Added support for Bluetooth
+        IOCTL commands.
+      - drivers/wireless/bluetooth:  Added a NULL device to support some very
+        low level testing on the Simulator.
+      - drivers/wireless/cc3000:  Eliminate support for the CC3000 wireless
+        part because it doesn't use the USRSOCKET.  From Alan Carvalho de
+        Assis.
+      - drivers/wireless/ieee80211:  Added BCM43428 support.  From hhuysqt.
+
+    * Other Common Device Drivers:
+
+      - drivers/1wire:  Added 1-wire subsystem and ds28e17 driver  From Juha
+        Niskanen.
+      - drivers/1wire:  Added PM hooks and unlink support to sht21 sensor
+        (allowing hot-swappable I2C bus from 1-wire converter).  Unlike most
+        other unlink implementations in NuttX drivers, this one does not
+        allow any I2C operations after unlink, making it possible to
+        deallocate the I2C bus.  From Juha Niskanen.
+      - drivers/i2c:  Added support for the pca9540bdp i2cmultiplexer.  From
+        Giorgio Groß.
+      - drivers/power:  Added pm_unregister  From Juha Niskanen.
+      - drivers/power:  Added generic upper-half motor driver  From Mateusz
+        Szafoni.
+      - drivers/rgbled:  Added support for multichannel PWM (multiple PWM
+        channels on a single timer)  From Anthony Merlino.
+      - drivers/sensors:  Added support for Sensirion SHT2x humidity sensor.
+        From Juha Niskanen.
+      - drivers/sensors:  Added LSM330 SPI and ADXL372 drivers along with the
+      - drivers/sensors:  Added support for INA3221 power sensor. This has a
+        3 channel bus/shunt voltage pairs.  From Anthony Merlino.
+        cluster driver infrastructure.  From Bob Feratich.
+      - drivers/sensors:  Added multiple MAX31855 sensors feature support.
+        From Tiago Almeida.
+      - drivers/wireless/cc1101.c:  Driver improvements from from lihaichen.
+      - progmem interface:  Discern r/w and erase page sizes.  Introduce new
+        up_progmem_erasesize architecture API to be able to communicate the
+        read/write page size independently from erase page size.  Implement
+        up_progmem_erasesize for all architectures that already support
+        progmem, assuming that for those architectures the sizes of both
+        read/write and erase pages are identical.  From Michael Jung.
+
+    * Simulation
+
+      - configs/sim:  Added a configuration that will support some limited
+        testing of the Bluetooth stack.
+
+    * ARM:
+
+      - ARM:  All ARM architectures now support CONFIG_ARCH_IDLE_CUSTOM.
+
+    * MIPS:
+
+      - MIPS:  All MIPS architectures now support CONFIG_ARCH_IDLE_CUSTOM.
+
+    * Infineon XMC4xxx Drivers:
+
+      - XMC4:  Added SPI support for Infineon XMC45xx microcontroller. From
+        Alan Carvalho de Assis.
+
+    * Infineon XMC4xxx Boards:
+
+      - XMC4500-Relax: Added board support for SPI.  From Alan Carvalho de
+        Assis.
+
+    * Nordic NRF52:
+
+      - NRF52:  Initial support for the NRF52 including UART and GPIO
+        support.  From Janne Rosberg.
+
+    * Nordic NRF52 Drivers:
+
+      - NRF52:  Added watchdog timer drivers.  Includes significant
+        updates from Levin Li.
+      - NRF52:  Added nRF52 Flash PROGMEM support  From Alan Carvalho de
+        Assis.
+
+    * Nordic NRF52 Boards:
+
+      - configs/nrf52-pca10040:  Added support for the NRF52-PCA10040 board
+        including LEDs and buttons  From Janne Rosberg.
+      - configs/nrf52-pca10040:  Added support for starting the watchdog
+        timer on the nRF52.  From Alan Carvalho de Assis.
+      - configs/nrf52-pca10040:  Added a configuration for testing the
+        watchdog timer.  From Alan Carvalho de Assis.
+
+    * NXP Freescale i.MX RT:
+
+      - i.MX RT:  Brings in basic support for the i.MX RT 1050 'crossover'
+        SoC.   Includes timer and UART support.  This port was the joint
+        effort of Janne Rosberg, Ivan Ucherdzhiev, and myself.  I give
+        credit to Ivan for the kill because he is the one to held on to
+        the end.  From Ivan Ucherdzhiev.
+
+    * NXP Freescale i.MX RT Drivers:
+
+      - i.MX RT:  Added power management hooks.
+      - i.MX RT:  Added eDMA support (unverified).
+      - i.MX RT:  Added Ethernet driver.  From Jake Choy.
+      - i.MX RT:  Added cache operations to permit the Ethernet driver to
+        work with the D-Cache enabled, at least in write-through mode.
+        Added support for PHY interrupts and PHY IOCTLs.
+
+    * NXP Freescale i.MX RT Boards:
+
+      - IMXRT1050-EVK:  Added support for booting from the on board HYPER
+        Flash.  From Ivan Ucherdzhiev.
+      - IMXRT1050-EVK:  Added logic to support the board's user LED.  From
+        Jake Choy.
+      - IMXRT1050-EVK:  Added procfs auto-mount support in imxrt_bringup.c.
+        From Ivan Ucherdzhiev.
+      - IMXRT1050-EVK:  Added LIBCXX test configuration.
+      - IMXRT1050-EVK:  Added support for the imxrt1050-evk button.  From
+        Jake Choy.
+      - MXRT1050-EVK:  Added support for on-board NOR FLASH boot.  From
+        Ivan Ucherdzhiev.
+      - IMXRT1050-EVK:  Disable LED support because pins conflict with PHY.
+        Enable device statistics.  Enable NSH ifup and ifdown commmands.
+        Added an NSH configuration for testing Ethernet.
+
+    * NXP Freescale Kinetis:
+
+      - K28F:  Added architecture support for the Kinetis K28F.
+
+    * NXP Freescale Kinetis Drivers:
+
+      - SDHC:  Make Kinetis SDHC pullups work the same as the STM32 SDIO
+        pullups.
+
+    * NX FreescaleP Kinetis Boards:
+
+      - Freedom-K28F.  Added support for the Kinetis Freedom-K28F board.
+
+    * NXP LPC17xx:
+
+      - LPC17xx:  Added support for ARMv7-M run time stack checking on NXP
+        LPC17xx MCUs based on CONFIG_ARMV7M_STACKCHECK. Basically copied
+        from STM32.  From Michael Jung.
+
+    * NXP LPC17xx Drivers:
+
+      - LPC17xx:  Added a configurable option to allow using a part of
+        LPC17xx's internal flash memory as a Memory Technology Device via
+        NuttX' mtd_progmem infrastructure. Tested with LPC1769.  From
+        Michael Jung.
+
+    * NXP LPC17xx Boards:
+
+      - Olimex-LPC1766STK:  Remove support for the Nokia6100 LCD.  That
+        LCD uses a 9-bit SPI interface (the 9th bit being the command/data
+        bit that is normally a discrete).  That communication was never
+        successfully integrated.
+
+    * NXP LPC43xx Boards:
+
+      - configs/bambino-200e:  Added support for multiple MAX31855 sensors
+        to the bambino-200e.  From Tiago Almeida.
+
+    * OpenRISC
+
+      - arch/or1k/src.  Added basic architectural support for the OpenRISK
+        mor1kx architecture.  The initial commit was verified on a Qemu
+        simulation but is otherwise untested.  From Matt Thompson.
+
+    * OpenRISC Board
+
+      - configs/or1k.  OpenRISK mor1kx Qemu simulation.  From Matt Thompson.
+
+    * STMicro STM32:
+
+      - STM32:  Added support for the STM32F401xB and STM32F401xC families.
+
+    * STMicro STM32 Drivers:
+
+      - STM32 HRTIM:  Added HRTIM software capture trigger, added software
+        reset trigger, added outputs polarization configuration  From
+        raiden00pl.
+      - STM32 ADC:  Added ADC injected channels configuration.  From Mateusz
+        Szafoni.
+      - STM32 HCIUART:  Added a Bluetooth HCI UART lower half driver for the
+        STM32.
+      - STM32 HCIUART:  Implement the setbaud() method for the STM32 HCI
+        UART interface.
+      - STM32 SDIO:  Added support for SDIO card to SDIO driver.  From
+        hhuysqt.
+      - STM32 SDIO:  Added internal pull-up option for SDIO pins.  From Alan
+        Carvalho de Assis.
+      - STM32 F2/F4 ADC:  Added Vbat measurement to ADC driver for
+        STM32F20xx and STM32F4xxx.  As with the MCU temperature and VREFINT
+        measurement, this change requires user to enable the corresponding
+        channel first.  For Vbat channel the ioctl cmd is
+        IO_ENABLE_DISABLE_VBAT_CH, and its arg should be a pointer to bool
+        which must be true to enable and false to disable the Vbat channel.
+        Moreover, since Vbat input contains a built-in voltage divider, it
+        is highly suggested to disable Vbat input channel after measurement
+        is done in order to prevent battery drain through the divider.  From
+        Dmitriy Linikov.
+      - STM32, STM32L4 1WIRE:  Added one bit read and write to 1-wire
+        interface.  This is needed for devices that require single bit
+        timeslot generation and for 1-Wire search algorithm triplets.  From
+        Juha  Niskanen.
+      - STM32 F3 SPI:  Enable DMA for SPI on stm32f30xxx MCUs.  From Michał
+        Łyszczek.
+      - STM32 L4 1WIRE:  Ported 1wire driver from STM32.  From Juha
+        Niskanen.
+      - STM32 L4 I2C/SPI/1WIRE:  Added PM hooks to I2C, SPI and 1-wire  From
+        Juha Niskanen.
+      - STM32 F7 RTC:  Added CONFIG_RTC_PERIODIC support.  Also makes the RTC
+        lowerhalf more like in STM32L4.  From Juha Niskanen.
+      - STM32 F7 ADC/I2C/SPI:  Added PM hooks to ADC, I2C and SPI.  From
+        Juha Niskanen.
+
+    * STMicro STM32 Boards:
+
+      - Indium-F7:  Removed support for the Indium-F7 board.  This was done
+        for two reasons:  (1) The board support was just clone of the
+        Nucleo-144 board support with naming changes.  There has been no
+        support and no further development for the board support.  (2) There
+        does not seem to be any available Indium-F7 board available to the
+        public anywhere on the Internet.  There is not even a reference to
+        the board on the rafresearch.com web stie.
+      - Nucleo-L452RE:  Added buttons example  From Juha Niskanen.
+      - Nucleo-L476RG:  Added support to Nokia LCD PCD8544 on nucleo-l476rg.
+        From Alan Carvalho de Assis.
+      - Nucleo-L476RG:  Added nxdemo configuration to nucleo-l476rg using
+        PCD8544.  From Alan Carvalho de Assis.
+      - Olimex-STM32-P407:  Added a zmodem test configuration.
+      - Olimex-STM32-P407:  Added the module configuration.
+      - Photon:  Added RGB led support  From Anthony Merlino.
+      - STM32F103-Minimum:  Added support for DFU bootloader  From Simon
+        Piriou.
+      - Spark:  Removes Spark board configuration.  Still available in the
+        Obsoleted repository.  If there is no CC3000 support, then there is
+        no purpose in supporting the Spark either.
+      - STM32F334-Disco:  Added buck/boost converter example configuration.
+        From Mateusz Szafoni.
+      - STM32F4 Discovery:  Added support for multiple MAX31855 sensors to the
+        STM32F4 Discovery  From Tiago Almeida.
+      - STM32F4 Discovery:  Added support in bring-up logic to initialize the
+        HCI UART and register the HCI UART network device.
+      - STM32F4 Discovery:  Added MAX7219 support to STM32F4Discovery board.
+        From Alan Carvalho de Assis.
+      - STM32F4 Discovery:  Added board configuration for CS43L22 audio
+        example.  From Alan Carvalho de Assis.
+      - STM32F4 Discovery:  Added a module configuration for testing the
+        kernel module example with the STM32F4Discovery board.  From Alan
+        Carvalho de Assis.
+      - STM32F429I-DISCO:  Added a LittlevGL configuration for stm32f429i-
+        disco.  From seyyah.
+      - STM32F746G-DISCO.  Added clang support to stm32f746g-disco board.
+        From Goran Mekić.
+      - STM32L1 Discovery:  Added support for the STM32L152RCT6 version of
+        the board.
+
+    * TI TMS570:
+
+      - TMS570:  Added support for the TMS570LS3137ZWT.  From Ivan Ucherdzhiev.
+
+    * TI TMS570 Boards:
+
+      - configs/tms570ls31x-usb-kit:  Added support for the TI Hercules
+        TMS570LS31x USB Kit  From Ivan Ucherdzhiev.
+
+    * TI Tiva:
+
+      - CC3200: Remove all support for the CC3200.  This was a port that was
+        started but never completed.  What good is partial CC3200 support
+        with no wireless support?.
+
+    * TI Tiva Drivers:
+
+      - EEPROM:  Implements an EEPROM driver in compliance with MTD driver
+        as provided by NUTTX for TM4C1294.  The EEPROM driver currently
+        supports only two functionalities - read bytes(multiple of 4) and
+        write bytes (multiple of 4).  From Shirshak Sengupta.
+      - FLASH:  Implemented Flash CONFIG_MTD_BYTE_WRITE for TM4c1294.
+        Implemented the tiva_write function which will write an arbitrary
+        number of bytes to flash (in multiple of 4).  From Shirshak Sengupta.
+      - Serial:  Added TERMIOS IOCTL support to the Tiva serial driver.
+        From Dmitry Sharihin.
+
+    * TI Tiva Boards:
+
+      - CC3200-Launchpad:  Remove all support for the CC3200-Launchpad.
+        This was a port that was started but never completed.  What good is
+        partial CC3200-Launchpad board support with no wireless support?.
+
+    * Libraries/Header Files:
+
+      - libs/:  Moved all of the libraries under a common directory called
+        libs/ (libc, libnx, and libxx).  This almost certainly break libcxx
+        for now.
+      - libs/libc/time:  Added an implementation of clock().
+      - libs/libc/lzf:  Added a modified version of Marc Alexander Lehmann's
+        LIBLZF3.6 library  From Boris Astardzhiev.
+      - libs/libc/unistd:  Initial, minimal implementation of sysconf().
+        Only sufficient to support the functionality of less standard
+        getdtabilesize().  From Michael Jung.
+      - libs/libdsp:  Added DSP support library.  From Mateusz Szafoni.
+      - include/sys:  Added resource.h.
+      - include/nuttx/video:  Add overlay support to framebuffer interface
+        definition. From Marco Krahl.
+
+    * Tools:
+
+      - tools/gencromfs.c:  Added tools/gencromfs.c, a tool that can be used
+        to generate CROMFS file system images.
+      - tools/mkromfsimg.sh:  Include an option in mkromfsimg.sh to ignore
+        FAT/RAMDISK. This permits you to build tiny systems with ROMFS but
+        with the rather large FAT FS support.  From Alan Carvalho de Assis.
+      - tools/nxstyle.c:  Added check for blank lines before and after single
+        line comments.  From Bob Feretich.
+      - tools/sethost.sh:  Added support for macOS.
+      - tools/uncrustify.cfg:  An initial cut at an uncrustify C formatting
+        script from Gregory Nutt. Updated, corrected, and verified.  From
+        Bob Feretich.
+
+    * Build System:
+
+      - Makefile:  Added support for nconfig frontend for 'make nconfig'.
+        From Michał Łyszczek.
+      - configs/:  Added definition of strip to many Make.defs files.
+      - staging/:  Remove fixed lib/ subdirectory and its content.  Replace
+        with new directory called staging/ that is created dynamically when
+        building and removed when 'make clean' is done.  This both improves
+        the naming and eliminates a garbage directory from the repository.
+      - tools/:  Move all build-related files (except the top-level Makefile)
+        into the tools/ sub-directory.  This really cleans up the top-level
+        directory.
+
+    * NSH: apps/nshlib:
+
+      - apps/nshlib:  Added the mkfatfs -r option which can be used to
+        specify the number of entries in the FAT12/FAT16 root directory.
+        From Boris Astardzhiev.
+
+    * Examples/Tests: apps/examples:
+
+      - apps/examples/adxl372_test and lxm330spi_test:  Added ADXL372 and
+        LSM330 tests.  From Bob Feretich.
+      - apps/examples/cc3000:  Removed the CC3000 example.  From Alan
+        Carvalho de Assis.
+      - apps/examples/cromfs:  Added an example of how to build a CROMFS
+        file system image.
+      - apps/examples/elf:  Extend the ELF program module demo so that you
+        can use compressed ELF programs with CROMFS.
+      - apps/examples/elf:  Use strip command to make ELF binaries MUCH
+        smaller. Added an option to strip debug symbols even if the debug
+        symbols are enabled in the base code.
+      - apps/examples/max31855: Added an example to read multiple max31855
+        sensors.  From Tiago Almeida.
+      - apps/examples/netloop:  Update network loopback example so that it
+        can be used to test TCP KeepAlive.
+      - apps/examples/nxdemo:  Added nxdemo application  From Alan Carvalho
+        de Assis.
+      - apps/examples/powerled:  Added arch initialization.
+      - apps/examples/uavcan:  Removed because apps/canutils/libuavcan is no
+        longer available.
+
+    * System Utilities: apps/system
+
+      - apps/system/lzf:  Added the test case from Marc Alexander Lehmann's
+        LIBLZF3.6 librrary  From Boris Astardzhiev.
+      - apps/system/embedlog:  Support for embedlog data loggin package from
+        https://embedlog.kurwinet.pl/  From Michał Łyszczek.
+      - apps/system/zmodem:  Added an option to enable hardware flow control
+        via termios.  Allow stack size and priority to be configured.
+      - apps/system/zmodem:  Call tcflush() before closing the serial port.
+        This is necessary because that close operation may hang if hardware
+        flow control is enabled.  Consider this scenario:  After the host
+        sz runs on the host, it exits and leaves CTS high.  The target rz
+        completes, and tries to close the serial port.  But if there is
+        buffered Tx data, then the close will hang when it tries to drain
+        the buffered Tx data since there is no where it can go.  tcflush()
+        discards the buffered data and permits the close to continue.
+        There is additional logic in nuttx/drivers/serial needed to work
+        with this.
+
+    * CAN Utilities:  apps/canutils:
+
+      - apps/canutils/libuavcan.  Removed! libuavcan has not built for a
+        year or so.  The basic problem is that as NuttX advances, the old
+        frozen version of libuavcan has become absolute because it violates
+        the portable POSIX OS interface.  No one is maintaining the port so
+        there is no alternative but to remove it.
+
+    * Network Utilities: apps/netutils:
+
+      - apps/netutils/tftpc:  Modified the TFTP client functions to use a
+        data read/write callback instead of a file.  This allows TFTP to
+        write to arbitrary destination (in my case, a MTD device - for
+        firmware update).  Two new functions are introduced for this, named
+        tftpget_cb and tftpput_cb. They are just made of most of the
+        existing code.  The previously existing tftpget/tftpput functions
+        are now wrappers on the new ones, with callbacks that read/write
+        from files, so my modifications are backwards compatible with
+        existing applications, eg the associated nsh commands dont need to
+        be changed.  From Sebastien Lorquet.
+
+    * Wireless Utilities: apps/wireless:
+
+      - apps/wireless/bluetooth/btsak:  Added a Bluetooth debug tool.
+
+Bugfixes.  Only the most critical bugfixes are listed here (see the
+ChangeLog for the complete list of bugfixes and for additional, more
+detailed bugfix information):
+
+    * Core OS:
+
+      - sched/sched: Fix a deadlock in SMP mode.  Two months ago, I
+        introduced sched_tasklist_lock() and sched_tasklist_unlock() to
+        protect tasklists in SMP mode.  This change works well for HTTP
+        audio streaming aging test with lc823450-xgevk.  However, I found a
+        deadlock in the scheduler when I tried similar aging tests with DVFS
+        autonomous mode where CPU clock speed changed based on cpu load. In
+        this case, call sequences were as follows.  To avoid this deadlock,
+        I added sched_tasklist_unlock() when calling up_cpu_pause() and
+        sched_addreadytorun(). Also, added sched_tasklist_lock() after the
+        call.  Also added critical sections to lib_filesem.c, mm_sem.c, and
+        net_lock.c for SMP for SMP.  From Masayuki Ishikawa.
+      - sched/sched:  Change ordering of round-robin time slice check
+        (sched_process_scheduler()) and processing of wdog timers
+        (wd_timer()).  wd_timer()'s callback function can change current
+        running task and, hence, must be done after the time slice check.
+        The time slice check will decrement the currently running task's
+        time slice allotment.  If such a context switch occurs, then the
+        newly started task will lost one could of that allotment before it
+        even has a chance to run.  From EunBong Song.
+
+    * File System/Block and MTD Drivers:
+
+      - fs/fat: In fs_stat(), when stat'ing the root directory, avoid
+        calculating the address of the root directory entry.  The
+        calculation is bogus (but not harmful) because the root directory
+        does not have a directory entry.  Noted by Boris Astardzhiev.
+      - fs/fat:  Avoid calculating the bogus directory entry address for
+        the FAT root directory (since it has no directory entry).  This
+        change should have no effect, other than making the logic clearer.
+        From Boris Astardzhiev.
+      - fs/mount:  Fix wrong size reported by df -h.  Reason is that size
+        in bytes is calculated always on uint32_t types and cards bigger
+        than 4GB will overflow uint32_t type. Solution is to use uint64_t
+        where possible.  From Michał Łyszczek.
+      - fs/smartfs:  Fix a hardfault in SmartFS.  Problem occurred when
+        opening a file with O_CREAT (only) when the file arelready exists
+        but has a size of zero.  From Michał Łyszczek.
+      - fs/vfs:  Fix negative errno set in fs_open.c  From Michał Łyszczek.
+      - drivers/mtd:  Fixed a W25 driver w25_cacheflush sector bug.  From
+        lihaichen.
+      - drivers/mtd:  mtdconfig_register() returned OK instead of -ENOMEM on
+        failed allocation.  From Michał Łyszczek.
+
+    * Graphics/Display Drivers:
+
+      - drivers/lcd/ft80x:  ACTIVE host command appears to be formatted
+        differently than other host commands; Fix ROM CHIPID.  Appears to
+        be big-ending, BCD.  Fix some compile issues when debug features
+        are enabled.
+      - drivers/lcd/ft80x:  Fix a typo that caused the driver to fail to
+        recognize the ft801 chip version. From Gregory Nutt.
+      - Review all board implementations of board_lcd_initialize().  The
+        NuttX convention is that all internal functions that return errors
+        as an 'int' must return a negated errno value on failure and a non-
+        negative value on success.  Most were right but eight of them had
+        cloned logic that returns 1 on success and zero on failure. both
+        of which are interpreted as success by the caller since they are
+        non-negative.
+
+    * Networking/Network Drivers:
+
+      - net/tcp:  Fixed problem with send() retrun value when using
+        nonblocking I/O over buffered tcp socket  From Dmitriy Linikov.
+      - net/sixlowpan:  Fix a nasty, byte-ordering/endian-ness problem.
+        The root cause has been found and corrected.  And a half dozen
+        or so bandaid fixes were reverted.
+      - net/sixlowpan:  Preserve big-endian (network order) when
+        uncompressing address.  From Anthony Merlino.
+      - net/sixlowpan: TCP send should have PSH and ACK flags set when
+        sending.  This matches the standard network (Ethernet) TCP send
+        logic.  From Anthony Merlino.
+      - net/udp:  Fix several issues using connected UDP sockets:  sendto()
+        should not accept an address.  Normally send() should be used with
+        connect UDP sockets instead.  recvfrom() is no longer necessary.
+        recvfrom() and poll() should not reset to accept any addresses but
+        should, instead, only accept inputs and events from the connected
+        remote peer.  On of these issues was noted by 李桂丁
+        <li...@pinecone.net>.  Changes were made as summarized here:
+        http://www.masterraghu.com/subjects/np/introduction/unix_network_programming_v1.3/ch08lev1sec11.html
+        From Gregory Nutt.
+      - net/udp: Resolve race condition in connection-less UDP sockets with
+        read-ahead buffering.  In connection-mode UDP sockets, a remote
+        address is retained in the UDP connection structure.  This
+        determines both there send() will send the packets and which packets
+        recv() will be accepted.  This same mechanism is used for
+        connection-less UDP sendto:  A temporary remote address is written
+        into the connection structure to support the sendto() operation.
+        That address persists until the next recvfrom() when it is reset to
+        accept any address.  When UDP read-ahead buffering is enabled,
+        however, that means that the old, invalid remote address can be left
+        in the connection structure for some time.  This can cause read-
+        ahead buffer to fail, dropping UDP packets.  Shortening the time
+        between when he remote address is reset (i.e., immediately after the
+        sendto() completes) is not a solution, that does not eliminate the
+        race condition; in only makes it smaller.  With this change, a flag
+        was added to the connection structure to indicate if the UDP socket
+        is in connection mode or if it is connection-less.  This change
+        effects only UDP receive operations:  The remote address in the UDP
+        connection is always ignored if the UDP socket is not in connection-
+        mode.  No for connection-mode sockets, that remote address behaves as
+        before.  But for connection-less sockets, it is only used by sendto().
+
+    * Wireless/Wireless Drivers:
+
+      - drivers/wiresless/ieee80211:  Correct some initialization problems
+        with BCM43362 chip.  From hhuysqt.
+      - drivers/ieee802154/xbee:  Added a timeout to send logic to handle
+        case where XBee module fails to respond to a Transmit request with
+        a Transmit Status  From Anthony Merlino.
+
+    * Common Drivers:
+
+      - Per OpenGroup.org, syslog -- and, hence, nonstandard vsyslog, and
+        debug wrappers -- does not return a value.  Rename _vsyslog to
+        nx_vsyslog.  Use internal nx_vsyslog in the few cases where a
+        return value is required.
+      - drivers/leds:  Fixes RGB LED issues caused by uninitialized memory
+        with CONFIG_RGBLED_MULTICHAN.  The uninitialized pwm_info_s struct
+        caused a rogue channel to be started causing errros in the pwm
+        driver  From Anthony Merlino.
+      - drivers/sensors/lis2dh:  Clear INT1 at SNIOC_WRITE_INT1THRESHOLD
+        ioctl.  From Jussi Kivilinna.
+      - drivers/sensors/sht21:  Changed I2C_TRANSFER return value so that
+        it return on zero on success, not the count of bytes transferred.
+        From Juha Niskanen.
+      - drivers/serial:  Per Matias Edlund:  I recently used the tcflush
+        function and found that it failed with ENOTTY. The reason is that
+        the TCFLSH case in the function uart_ioctl in the file
+        drivers/serial/serial.c does not update the ret value."  On
+        success, the TCFLSH IOCTL logic needs to explicitly set the return
+        value (ret) to zero.
+      - drivers/serial:  Added a timeout to uart_tcdrain().  Even if
+        tcflush() is used to discard buffered data, the close() can still
+        hang if (a) hardware flow control is enabled, (b) CTS == 1, and
+        (c) there is data stuck in the hardware Tx FIFO.  tcflush() does
+        not currently clear the MCU serial drivers' hardware Tx FIFOs.
+        This is a workaround for that.
+      - drivers/sensors:  Fix APDS9960 work queue BUG found by Kyle Lei.
+        From Alan Carvalho de Assis.
+
+    * Simulator:
+
+      - arch/sim:  Various fixes necessary to build the simulator under
+        MSYS2.
+
+    * ARMv7-R:
+
+      - ARMv7-R:  Corrected several ARMv7-R issues.  From Ivan Ucherdzhiev.
+
+    * Infineon XMC4xxx Boards:
+
+      - XMC4500-Relax:  Call xmc4_spidev_initialize() in xmc4_boot.c.  From
+        Alan Carvalho de Assis.
+
+    * NXP/Freescale LPC17xx Drivers:
+
+      - LPC17xx USB: Fix USB device endpoint allocation bookkeeping.  From
+        Michael Jung.
+      - LPC17xx USB:  Freeing endpoints should be set the same allocations
+        as when endpoint was allocated.
+      - LPC17xx USB:  Fix loss of RX initiatives.  USB bulk endpoints are
+        double buffered on LPC17xx MCUs.  This means that up to two packets
+        might be received on an OUT endpoint that can not be handled
+        immediately if the receive request queue is empty.  Thus,
+        rxpending must be a counter not a boolean flag.  From Michael Jung.
+
+    * NXP/Freescale Kinetis Drivers:
+
+      - Kinetis USG:  USB device fixes:  Use correct CONFIG OTG control,
+        Fix interrupt storm when cable is disconnected.  The DM, DP state
+        were incorrect because the pulldowns were not enabled.  Also the
+        pending asynchronous resume interrupt needed to be re-armed after
+        the suspend is in effect. This is now done in the isr.  From David
+        Sidrane.
+      - Kinetis Serial:  In kinetis_lowputc.c, fix esBRFA calculation
+        effecting baudrate.  Previous BRFA was not cleared and or-ed into
+        new BRFA, hence, buadrate was wrong.  Where Baud Rate Fractional
+        Divisor (BRFD) UART baud rate = clock / (16 * (SBR + BRFD)).  From
+        David Sidrane.
+      - Kinetis Serial:  In kinetis_lowputc.c, fixed parity settings.
+        Kinetis UART must be placed in 9 bit mode (M=1) with when 8 bit data
+        with parity is required. If left in 8 bit mode (M=0) with parity
+        then D7 of the TX/RX register becomes parity bit.  Hence what is
+        called 9-bit or 8-bit Mode Select is a misnomer.  8 bit mode when
+        parity is enabled is realy 7 bit with parity.  From David Sidrane.
+
+    * NXP/Freescale Kinetis Boards:
+
+      - configs/teensy-3.x:  Remove CONFIG_USBDEV_DUALSPEED from the usbnsh
+        configuration.  Hardware supports only FS.
+
+    * NXP i.MX6 Drivers:
+
+      - i.MX6:  Bring in a few i.MX6 fixes that were committed to similar
+        files for the i.MX RT.
+
+    * STMicro STM32:
+
+      - STM32 F3:  Problem: stm32f30xx hangs waiting for LSE to initialize.
+        Reason for hang is that operation of setting LSE_ON does not take
+        effect because there is no clock on PWR peripheral.  This is
+        initialized later in the code  From Michał Łyszczek.
+
+    * STMicro STM32 Drivers:
+
+      - STM32 and STM32 L4 1WIRE:  In 1wire driver, do not write useless
+        WRITEBIT zero return value to const buffer  From Juha Niskanen.
+      - STM32 HRTIM:  Fixed capture_get function,.  From raiden00pl.
+      - STM32 F3 ADC:  Fixed bug in RCC reset logic that resets ADC1
+        configuration when both ADC1 and ADC2 are in use  From Mateusz
+        Szafoni.
+      - STM32 Ethernet:  In case of PHY failure, usually because of the
+        lack of 25/50 MHz REFCLK input, the Ethernet block would lock up
+        in a while loop waiting for readiness, which will never happened.
+        This prevented the board from starting at all in the case of a PHY
+        failure.  This commit adds a retry loop to avoid bricking the board
+        if the Ethernet block is unable to start.  From Sebastien Lorquet.
+      - STM32 F7 SDMMC:  Added support for the second SDMMC device.  The
+        second SDMMC device was already supported but the clock was never
+        enabled.  This fixes that.  From William Douglas.
+      - STM32 Serial:  Fix UART glitch when lowputc is enabled.  From
+        Simon Piriou.
+      - STM32 USB:  Skip recipient check for descriptor related
+        requests  From Simon Piriou.
+
+    * TI Tiva Drivers:
+
+      - Tiva ADC: Fix compilation errors on Tiva ADC code when ADC is
+        enable.  From Vinicius Maciel.
+      - Tiva Serial:  Allow building of Tiva platform with no serial
+        console.  From Dmitry Sharihin.
+
+    * C Library/Header Files:
+
+      - lib/libc/netdb:  Fixed boundary conditions in dns_recv_response().
+        Fixed typos in include/nuttx/net/dns.h.  From Masayuki Ishikawa.
+      - libs/libc/modlib:  Fixed backward test for an error in
+        modlib_verify.c.
+
+    * Build System:
+
+      - Makefiles:  Eliminate the spurious errors reported by 'make
+        savedefconfig'.
+      - Makefile(s):  There is a sort command in the 'make savedefconfig'
+        file.  I found that sort behaves differently on different platforms
+        based on the environment variable LC_ALL.  Now, Makefile.unix will
+        force LC_ALL=C just for the sort command so that we can all generate
+        equivalent defconfig files.
+      - Makefile(s):  The clean_context target needs to invoke a
+        corresponding clean_context target in the apps/Makefile in order to
+        remove linkages.  From Gregory Nutt.
+      - LibTargets.mk, tools/Config.mk:  Drop executable bit on installed
+        libraries. The rules to install libraries under lib/ were modified
+        to use mode 0644 instead of the default 0755.  From Andrey Zabolotnyi.
+
+    * Examples/Tests: apps/examples:
+
+      - apps/examples/ft80x:  Fix some size calculations.  Added option to
+        disable primitive tests. just too boring to have to watch over and
+        over again. Fix a typo in backlight fade logic; Fix error in
+        formatted display light debug dump output.
+      - apps/examples/ft80x:  Text is handled by the coprocessor and, hence,
+        must use RAM_CMD, not RAM_DL.
+      - apps/examples/ft80x:  Fix some errors in co-processor demos.  Correct
+        an error in the spinner demo.
+      - apps/examples/nsh and posix_spawn:  Must not call exec_setsymtab()
+        directly.  That is a non-POSIX internal OS interface.
+      - apps/examples/ostest:  Do not call AIO test without
+        CONFIG_EXAMPLES_OSTEST_AIO  From Juha Niskanen.
+      - apps/examples/smps:  Fix typos in Kconfig.  All power, voltage,
+        current values were strings with no default.  I assume they should
+        be 'int' with what default?.
+      - apps/examples/smps:  Fixes in some printf and in Kconfig  From
+        Mateusz Szafoni.
+      - apps/system/zmodem:  Fix Makefile.host.  It was broken when zmodem.h
+        was moved to apps/include/system.  Fix an incompatibility with the way
+        that CRCs are calculated.
+
+    * System Utilities: apps/system:
+
+      - apps/system:  Applications should use the standard clock() interface,
+        not the internal NuttX clock_systimer() interface.
+      - apps/system/stackmonitor:  Fix comparison between pointer and zero
+        character constant.  From Juha Niskanen.
+
+    * Network Utilities: apps/netutils:
+
+      - apps/netutils/netlib:  Various fixes needed to get a clean netlib
+        build with Bluetooth only.
+
+    * Wireless Utilities: apps/wireless:
+
+      - apps/wireless:  Applications should use the standard clock()
+        interface, not the internal NuttX clock_systimer() interface.
diff --git a/_releases/7.26.md b/_releases/7.26.md
new file mode 100644
index 0000000..afd33c1
--- /dev/null
+++ b/_releases/7.26.md
@@ -0,0 +1,1497 @@
+---
+layout: page
+released: true
+apache: false
+title: 7.26
+date: 2019-01-08
+summary: >
+    Release v7.26
+
+artifact-root: "https://bitbucket.org/nuttx/nuttx/downloads/"
+checksum-root: ""
+key-file: ""
+
+source-os-dist:
+    - "nuttx-7.26.tar.gz"
+source-app-dist:
+    - "apps-7.26.tar.gz"
+
+---
+
+
+<!--
+{% comment %}
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to you under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+{% endcomment %}
+-->
+
+{% include JB/setup %}
+
+NuttX-7.26 Release Notes
+------------------------
+
+The 126th release of NuttX, Version 7.26, was made on September 8, 2018,
+and is available for download from the Bitbucket.org website.  Note
+that release consists of two tarballs:  nuttx-7.26.tar.gz and
+apps-7.26.tar.gz.  These are available from:
+
+    https://bitbucket.org/nuttx/nuttx/downloads
+    https://bitbucket.org/nuttx/apps/downloads
+
+Both may be needed (see the top-level nuttx/README.txt file for build
+information).
+
+Additional new features and extended functionality:
+
+    * Core OS:
+
+      - General: Eliminate use of the non-standard type systime_t and
+        replace it the equivalent, standard type clock_t  From Gregory Nutt.
+      - General:  Replace non critical PANIC with DEBUGPANIC to save the
+        code space From Xiang Xiao.
+      - General: Replace all ASSERT with DEBUGASSERT to save the code
+        space  From Xiang Xiao.
+      - Initialization:  Add option to mount block device for
+        INIT_FILEPATH case.  From anchao.
+      - clock():  clock_systimer() is no longer a system interface.  It has
+        been replaced with the equivalent, standard interface clock().
+        Moved the implementation of clock() from the C library into the OS
+        core.  This is necessary because it calls the (now) internal OS
+        function clock_systimer().  clock() is now accessed only via a
+        system call in certain configurations.  From Gregory Nutt.
+      - clock Utilities:  Move clock_timespec_[add|subtract] to
+        include/nuttx/clock.h  From Xiang Xiao.
+      - Binary Loader:  Add binfmt_initialize().  All binary formats are
+        now registered centrally vs. in board-specific logic.  This
+        simplifies the usage of the binfmt subsystem.  From Xiang Xiao.
+      - Binary Loader:  Reference default symtab name to binfmt  From anchao.
+      - mm:  Add mm_heapmember function and reimplement kmm_heapmember base
+        on mm_heapmember since this function is very useful if multiple
+        heaps exist.  From Xiang Xiao.
+      - mm:  Add {kumm/kmm}_calloc API.  Add calloc API for manage user
+        memory and kernel memory in Flat Build/Kernel Build without kernel
+        heap.  From zhuyanlin.
+      - pthreads:  Add support static pthread stack.  Add standard
+        pthread_attr_setstack() and pthread_attr_getstack().  In all cases
+        where the stack is released, add check to see which allocator must
+        be used to free the stack:  The user or the kernel allocator.  From
+        xuanlin.
+      - Semaphores:  Apply the semaphore wait function
+        nxsem_wait_uninterruptible().  This function is a wrapped version
+        of nxsem_wait() that is uninterruptible and convenient for use.
+        From liuhaiyang.
+      - Signals:  Add default signal action to SIGKILL.  From ligd.
+      - Signals:  Update the signal default action logic to support
+        sigaction().  signaction() must be able to handle and input action
+        of SIG_DFL to setup the default signal action; it mast also return
+        SIG_DFL it is replacing the default action.  From Gregory Nutt.
+      - Signals: Default Signal Actions.  Change some types to
+        superficially simplify.  Add configuration options to enabled
+        default signal behaviors on a per-signal basis.  I don't think
+        users are prepared for SIGALRM to terminate the task (which is the
+        correct default behavior if you don't change it).  Extend the
+        implementation of default signals so that it is totally table
+        driven and extensible by simply mondifying the content of const
+        tables.  From Gregory Nutt.
+      - Signals:  Add support for SIGINT in addition to SIGKILL.
+      - Signals:  Add logic and an interface to determine if a signal can
+        be caught or ignored.  sigaction now correctly returns EINVAL on
+        any attempt to catch or ignore such signals (only SIGKILL for now
+        and only if CONFIG_SIG_DEFAULT=y).  From Gregory Nutt.
+      - Signals:  Add support for default signal actions for SIGSTOP,
+        SIGSTP, and SIGCONT.  Add procfs support to show stopped tasks.
+        From Gregory Nutt.
+      - Signals:  Add nxsig_action() to solve a chicken and egg problem:
+        We needed to use sigaction to set default actions, but sigaction()
+        would refuse to set actions if the default actions could not be
+        caught or ignored.  From Gregory Nutt.
+      - Signals:  Add configuration option to selectively enabled/disable
+        default signal actions for SIGSTOP/SIGSTP/SIGCONT and SIGKILL/SIGINT.
+      - Signals:  If a task/thread was already blocked when
+        SIGSTOP/SIGSTP was received, it will restart in the running state.
+        It will appear that to the task/thread that the blocked condition
+        was interrupt by a signal and returns the EINTR error.  From
+        Gregory Nutt.
+      - Signals:  Update signal default STOP action.  If waitpid was
+        called with the WUNTRACED then wake up waitpid().  From Gregory
+        Nutt.
+      - IRQs:  Monitor the irq execution time.  This is very useful for
+        measuring the interrupt latency.  From Xiang Xiao.
+      - IRQ Dispatch:  Add support interrupt chains in NuttX.  IRQ chain is
+        very useful in these cases:  (1) Multiple hardware connect to the
+        same request line(e.g. PCI), (2) Need multiple driver to support
+        one hardware block (like Linux MFD)  From zhuguangqing.
+      - Work Queue:  Modify high priority work queue to support multiple
+        threads.   From ligd.
+      - System Calls:  Add support for getpeername() and get_sockname()
+        system calls.  From Gregory Nutt.
+      - System Calls:  svcall/sycall logic needs to get the ucontext
+        argument from R4 instead of stack since all syscall parameters pass
+        from registers in syscall.h  From Xiang Xiao.
+      - CPU Load Measurement:  Support the CPU load measurement using
+        timer_lowerhalf_s interface  From Xiang Xiao.
+      - Assertions: Change CONFIG_BOARD_RESET_ON_CRASH to
+        CONFIG_BOARD_RESET_ON_ASSERT, arch/: Implement call to
+        board_reset() if in all implementations of up_assert() when
+        CONFIG_BOARD_RESET_ON_ASSERT=y.  From Xiang Xiao.
+      - boardctl():  Add support for board_app_finalinitialize() From ligd.
+      - Architecture Interface:  Add prototype for an architecture-specific
+        up_trigger_irq function.  From dongjianli.
+      - Architecture Interface:  Add the garbage collection hook so each
+        architecture can do custom memory cleanup if necessary.  From Xiang
+        Xiao.
+      - Architecture Interface:  Add architecture-specific prototypes for
+        conversions between physical and virtual address.  From ligd.
+
+    * File Systems/Block and MTD Drivers
+
+      - ProcFS:  Add support for a procfs entry that will permit examining
+        the environment of any task.  From Gregory Nutt.
+      - ProcFS:  Add support for proc/self/, a convenient way for getting
+        information about the currently running task.  From Gregory Nutt.
+      - HostFS:  Add support for open() append mode  From anchao.
+      - HostFS:  Add ftruncate support.  From Xiang Xiao.
+      - HostFS:  Remove ARCH_SIM dependence since other architectures
+        (e.g., arm semihosting) could support hostfs too  From Xiang Xiao.
+      - HostFS:  Support remote directory names without a trailing '/'
+        From ligd.
+      - HostFS:  Add re-try when hostfs mount() fails  From ligd.
+      - NFS:  Update NFS client mount to VER3  From zhangyuan7.
+      - Partitions:  Add PTABLE parser fs/partion:  Add a partition parser
+        framework fs/driver/fs_blockpartition.c:  Add
+        register_blockpartition for block partition  From Xiang Xiao.
+      - MTD:  Add gd25 driver  From wangyanjiong.
+      - MTD:  In MTD partitions, copy the partition name to internal
+        buffer so that the caller can free the name argument  From Xiang
+        Xiao.
+      - MTD:  Support initialization of an FTL block device with a custom
+        name  From Xiang Xiao.
+      - MTD:  FTL:  Reduce size of stack buffer from 64 to a maximum size
+        as determined from NAME_MAX.  From Gregory Nutt.
+      - VFS poll():  Send poll() notification when the Tx buffer is flushed
+        From ligd.
+      - VFS fstat():  Add file_fstat() function for internal OS use. From
+        ligd.
+      - VFS fcntl():  Add file_fcntl, psock_fcntl, and psock_dupsd for use
+        within the kernel.  From Xiang Xiao.
+      - VFS dup2():  Addpsock_dupsd for use within the kernel.  From Xiang
+        Xiao.
+      - VFS poll():  Add poll use in kernel space.  From dongjianli.
+      - VFS select():  Make select be more consistent with Linux man page:
+        'The timeout ... Some code calls select() with all three sets
+        empty, nfds zero, and a non-NULL timeout as a fairly portable way
+        to sleep with subsecond precision.'  From anchao.
+
+    * Networking/Network Drivers:
+
+      - Sockets:  Add getpeername() support  From ligd.
+      - sockopt():  Move psock check from [get|set]sockopt to
+        psock_[get|set]sockopt From Xiang Xiao.
+      - getsockname():  Add psock_getsockname function  From Xiang Xiao.
+      - Netlink Sockets:  This brings in a fragmentary, experimental
+        implementation of NETLINK sockets.  There is not too much to that
+        socket support on this initial commit, just the netlink socket
+        framework.  However, I decided to bring it into master because
+        there is a enough that I would not want to lose what is in place.
+        And since it is dependent on CONFIG_EXPERIMENTAL, its presence on
+        master should be innocuous.  From Gregory Nutt.
+      - Interface Indexes:  Add driver interface index support.  Add
+        implementation of if_nametoindex() and if indextoname().  Raw
+        AF_PACKET sockets now depend on CONFIG_NETDEV_IFINDEX.  Add syscall
+        support for if_nametoindex() and if_indextoname(). Includes an
+        algorithm to prevent an interface index from being reused until all
+        network interfaces have by assigned once.  The prevents removable
+        devices from being removed, unregistered and re-installed,
+        re-registered and keeping the same interface index.  From Gregory
+        Nutt.
+      - Driver Interface:  Add devif_loopback() to check the loopback
+        case where a packet is being sent to itself.  Modify the net driver
+        to call this function in this case.  This function will simply
+        re-inject the packet back into the network and the network driver
+        will not put anything on the wire.  From Xiang Xiao.
+      - Network Devices:  Remove all references to CONFIG_NET_USER_DEVFMT.
+        That feature is now unconditionally enabled.  This was done because
+        (1) the feature does not require very much additional memory, and
+        (2) it causes confusion in the configuration due to the additional
+        complexity.  Any network drivers that fail to zero the device
+        structure interface name field (d_ifname) because calling
+        netdev_register() will, however, get a nasty surprise.  From
+        Gregory Nutt.
+      - Network Devices:  Add support for Microchip LAN91C111 driver  From
+        Xiang Xiao.
+      - Network Devices:  netdev_findby_ipv[4|6]addr return
+        netdev_default() as last resort but don't return loopback device
+        if another network device is in the UP state.  From Xiang Xiao.
+      - Network Device IOCTLs:  Add si_ioctl callback and net_ioctl_arglen
+        so usrsock could forward the ioctl to the remote end/  From
+        dongjianli.
+      - IPv6:  Rename g_ipv6_allzeroaddress with the more meaning
+        g_ipv6_unspecaddr since the all-zero address is the IPv6
+        unspecified address (sometime IN6_ADDR_ANY).  Replace more inline
+        tests for IPv6 multicast with common net_is_addr_mcast() macro.
+        From Gregory Nutt.
+      - ARP:  arp_find() now checks if the target IP belongs to one of the
+        local network devices.  From Xiang Xiao.
+      - ARP:  Make the function arp_find() thread-safe.  It now returns a
+        copy of the MAC address from the ARP table entry, rather than a
+        potentially unstable reference to the ARP table entry.  From
+        Gregory Nutt.
+      - TCP:  Re-work of TCP receive window size algorithm.  The new logic
+        is based only on the ability to buffer TCP read-ahead data. From
+        Gregory Nutt.
+      - UDP:  Add support for the UDP_BINDTODEVICE protocol socket option
+        From Sebastien Lorquet.
+      - Slip:  Uncomment the prompt of NET_SLIP_PKTSIZE in Kconfig file.
+        From Xiang  Xiao.
+      - USRSOCK:  Combine some the duplicated logic.  From Xiang Xiao.
+      - USRSOCK:  Optimize option dependence  From Xiang Xiao.
+      - USRSOCK:  Add the listen/accept/getpeername/ioctl support  From
+        dongjianli.
+
+    * Other Common Device Drivers:
+
+      - Analog DAC:  Add driver for digital to analog converter DAC7571.
+        Nucleo-L422KC:  Add support for a connect DAC7571 converter. From
+        Daniel Pereira Carvalho.
+      - Audio Interface:  Change member samp of apb to pointer so driver
+        can customize sample buffer allocation  From ZhongAn.
+      - Audio Interface:  Add ioctl cmd 'AUDIOIOC_SETBUFFERINFO' so user
+        space could config the buffer  From ZhongAn.
+      - Audio Interface:  Add hardware format support  From anchao.
+      - I2S Interface:  Add i2s_rxchannels and i2s_txchannels methods to
+        the I2S lower half interface.  From ZhongAn.
+      - Audio:  Move the I2S character driver to a dedicated folder. From
+        Xiang Xiao.
+      - Audio:   Add audio_i2s device driver.  From ZhongAn.
+      - Audio:  Add the composite audio driver  From Xiang Xiao.
+      - Crypto:  Move dev_urandom.c into new crypto folder.  From Xiang
+        Xiao.
+      - GPIO driver:  Add gpio_pin_unregister function to GPIO driver
+        driver/ioexpander:  Add pinset struct to GPIO driver for interrupt
+        pins larger than 64.  Initialize pintype/inttype when registering
+        ioexpander device.  Add SETPINTYPE ioctl command to the GPIO
+        driver. From zhuyanlin.
+      - I2C Interface:  Add a definition to distinguish a new START of
+        messages from a repeated start.  No lower-half I2C drivers actually
+        implement this new flag bit, however. In I2C write/read logic use
+        new repeated START definition where appropriate.  Rename
+        I2C_M_NORESTART to I2C_M_NOSTART since it may be used in other
+        contexts than a repeated start.  Add comments to clarify setup for
+        repeated start.  From Gregory Nutt.
+      - I2C:  Add the standard speed macros.  From dongjiuzhu.
+      - Leds:  Add support to MAX7219 to control 7-segment displays.  From
+        Alan Carvalho de Assis.
+      - Power: PM: Add pm_stay and pm_relax function so special apps(e.g.
+        mediaplayer) could disable suspend during playback much like linux
+        kernel counterpart  From Xiang Xiao.
+      - Power:  PM: Add pm_querystate function  From zhuguangqing.
+      - Power: PM: Don't update the power state in work thread: (1)
+        Simplify the code logic and remove the work queue dependence, (2)
+        Power calculation is too simple to delay into the work queue From
+        Xiang Xiao.
+      - Power: PM: Decrease the power state in the reverse order.  Since
+        the child driver need power off before parent driver.  From
+        zhuguangqing.
+      - Power: PM:  Make power manager service available as soon as
+        possible:  (1) Initialize g_pmglobals at the definition, (2) skip
+        hold the lock if OS isn't ready  From Xiang Xiao.
+      - Power: PM:  Add PM_RESTORE to notify driver that device exit WFI
+        so the driver could restore state.  For example, WDT may stop
+        counting before enter low power state and restore the counting
+        again in PM_RESTORE notification  From zhuguangqing.
+      - Power: PM:  Add timer to decrease PM level automatically.  From
+        ligd.
+      - PTYs:  Add support so that a PTY can poll for both IN/OUT event
+        simultaneously.  From ligd.
+      - PWM:  Move pwm.c into pwm folder  From Xiang Xiao.
+      - RTC Interface:  Extend struct rtc_time by adding.  From Xiang
+        Xiao. tm_nsec if RTC supports hiresolution time.  From Xiang Xiao.
+      - Sensors:  Add support for Telair T6713 carbon dioxide sensor.  From
+        Juha Niskanen.
+      - Sensors:  Add support for LSM303AGR and LSM6DSL sensors  From
+        DisruptiveNL.
+      - Sensors:  Add driver for DHTxx sensor.  From Ouss4.
+      - syslog:  Enable a partial, crippled version of syslog_flush();
+        Call syslog_flush() from assertion handling logic of all
+        architectures.  From Gregory Nutt.
+      - syslog:  Channel configuration.  Decouple SYSLOG_SERIAL_CONSOLE and
+        ARCH_LOWPUTC.  Since some hardware can output log to the special
+        debug channel not serial. From anchao.
+      - syslog: Support pre-pending a prefix string to log output if
+        enabled.  This very useful to identify which CPU send out the log
+        in AMP SoC. From anchao.
+      - Serial:  Add Ctrl-C/Ctrl-X support.  From ligd.
+      - Serial: Support UART direct write for non console device  From
+        xuanlin.
+      - Serial:  It is no longer necessary to restrict Ctrl-C handling to
+        the FLAT build sched/signal:  Add a new configuration option to
+        select signal default actions, separate handling of signal default
+        actions from both task startup logic and from the serial TTY
+        Ctrl-C logic.  Add a signal set in the group structure to keep
+        track of what signals have been set to the default action.  In
+        dispatching signals in PROTECTED or KERNEL mode, use this signal
+        set to determine if the default signal handler is attached and
+        dispatch the signal in kernel mode for the default actions.  From
+        Gregory Nutt.
+      - Serial:  Integrate new Ctrl-C logic with the ISIG flag in the
+        termios c_lflag. From Gregory Nutt.
+      - Serial:  Use SIGINT instead of SIGKILL when control-C is pressed.
+        From Gregory Nutt.
+      - Serial:  Add support for Ctrl-Z.  This works just like the
+        recently added Ctrl-C support except that SIGSTP is sent when the
+        Ctrl-Z characters is encountered vs. SIGINT.  From Gregory Nutt.
+      - 16550 UART:  Add a configuration, analogous to the STM32
+        configuration option, to suppress the NuttX standard re-ordering
+        for /dev/ttySN for special case of the 16550 UART.
+      - 16550 UART:  Add CONFIG_SERIAL_UART_ARCH_MMIO option so the a
+        memory mapped device doesn't need to provide uart_getreg() and
+        uart_putreg() implementations.
+      - 16550 UART: Add stub implementations of DMA-related methods in the
+        16550 UART v-table.  From ligd.
+      - 16550 UART:  Add serial termios handling  From anchao.
+      - 16550 UART:  Support 16550 auto hardware flow control
+        drivers/serial/uart_16550.c:  Add configuration option
+        CONFIG_16550_SUPRESS_INITIAL_CONFIG.  This is identical to the
+        standard configuration in arch/Kconfig
+        CONFIG_SUPPRESS_UART_CONFIG, but with scope of only the 16550
+        driver.  From Xiang Xiao.
+      - syslog: Make timestamp output same as linux kernel.  It's very
+        useful if NuttX syslog retarget to Linux syslog. From Xiang Xiao.
+      - Timers:  Add maxtimeout method to the struct timer_ops_s interface
+        From Xiang Xiao.
+      - Timers:  Add a new method to the struct oneshot_operations_s
+        interface to get the current time from a oneshot timer driver (if
+        it is available from the lower half)  From Xiang Xiao.
+      - Timers:  Implement timer arch API on top of timer driver.  From
+        Xiang Xiao.
+      - Timers:  Implement alarm arch API on top of oneshot driver
+        interface.  From Xiang Xiao.
+      - Timers:  Implement RTC arch API on top of RTC driver interface.
+        From Xiang Xiao.
+      - CDC/ECM:  Adds USB device support for CDC/ECM  From Michael Jung.
+      - USB Host:  Add support for the Maxim M3421E USB host driver.  Not
+        yet fully tested.  From Gregory Nutt.
+
+    * General Architecture-Specific:
+
+      - All architectures:  Make sure the up_irq_enable() is available on
+        all architectures.  From Gregory Nutt.
+
+    * Simulation
+
+      - Simulator Configurations:  Add dsptest configuration.  From Mateusz
+        Szafoni.
+      - Simulator:  In network driver (1) Remove up_comparemac() check for
+        matching MAC address. Let's trust that the tap device just return
+        the packet which belong to us like other real network device
+        hardware. (2) Add network device statistics support.  From Xiang Xiao.
+
+    * ARM:
+
+      - ARM (all):  Add CONFIG_DEBUG_MEMFAULT to Kconfig.  From Masayuki
+        Ishikawa.
+      - ARM:  (1) Add semihost support for syslog, (2) Add semihost support
+        for HostFS  From Gregory Nutt.
+
+    * ARMv6-M:
+
+      - ARMv6-M: Introduce CONFIG_DEBUG_HARDFAULT_INFO to up_hardfault.c
+        From Masayuki Ishikawa.
+
+    * ARMv7-M:
+
+      - ARMv7-M:  Removes support for the dedicated vector handling from the
+        many older architectures. Only common vectors are now supported.
+        From Gregory Nutt.
+      - ARMv7-M: Introduce CONFIG_DEBUG_HARDFAULT_INFO to up_hardfault.c
+        From Masayuki Ishikawa.
+      - ARMv7-M:  Implement SYSTICK timer driver  From Xiang Xiao.
+      - Simulator:  Add loadable demo for arch sim.  From anchao.
+      - ARMv7-M:  Add logic to trigger ARMv7-M interrupts and exceptions.
+        From Gregory Nutt (from sample logic by Xiang Xiao).
+      - ARMv7-M:  Add NVIC definitions needed by up_trigger_irq().  From
+        Gregory Nutt.
+
+    * ARMv7-R:
+
+      - ARMv7-R:  Add general interrupt controller.  This is based on
+        ARMv7-A gic controller code.  From EunBong Song.
+      - ARMv7-R:  Add invalidate dcache in arm_head.S.  From EunBong Song.
+
+    * Infineon XMC4xxx Drivers:
+
+      - XMC4 GPIO:  Add a specific bit encoding to GPIO driver for
+        opendrain GPIO pin.  From Alan Carvalho de Assis.
+
+    * Infineon XMC4xxx Boards:
+
+      - XMC4500-Relax:  Add support to MAX6675 on XMC4500-Relax board.
+        From Alan Carvalho de Assis.
+
+    * Microchip PIC32MX Boards;
+
+      - PIC32MX:  Update some PIC32MX configurations so that either the
+        MPLAB or Penguino toolchains may be used.  From Gregory Nutt.
+
+    * Microchip/Atmel SAMD2x/L2x:
+
+      - SAMD2x/L2x:  Rename all usage of samdl/SAMDL to samd2l2/SAMD2L2 to
+        make room in the name space for samd5e5/SAMD5E5  From Gregory Nutt.
+
+    * Microchip/Atmel SAMD5x/E5x:
+
+      - SAMD5x/E5:  Add a port to the SAMD5x/E5x MCU family.  From Gregory
+        Nutt.
+
+    * Microchip/Atmel SAMD5x/E5x Drivers:
+
+      - SAMD5x/E5x SPI/I2C:  Bring in untested SPI and I2C drivers from
+        SAMD2L2.  From Gregory Nutt.
+      - SAMD5x/E5x DMA:  Leverage the SAMD2L2 DMA controller.  From Gregory
+        Nutt.
+      - SAMD5x/E5x USB:  Bring the SAMDL2 USB driver into the SAMD5E5
+        port.  From Gregory Nutt.
+
+    * Microchip/Atmel SAMD5x/E5x Boards:
+
+      - Metro M4:  Add support for the Adafruit Metro M4 board.  From
+        Gregory Nutt.
+      - Metro M4:  Add an option to build the Metro M4 image to run out of
+        SRAM.  This ought to be a safer and quicker way to do the initial
+        bring-up (having bricked the first Metro M4 due to a bad FLASH
+        image).  From Gregory Nutt.
+      - Metro M4:  Add a configuration option to use OSCULP32K instead of
+        XOSC32K.  From Gregory Nutt.
+      - Metro M4:  After some final fixes related to the SERCOM console,
+        the basic NSH configuration appears fully functional.  From
+        Gregory Nutt.
+      - Metro M4:  Verify the CMCC and enable it by default in the NSH
+        configuration.  From Gregory Nutt.
+
+    * Microchip/Atmel SAMv7 Drivers:
+
+      - SAMv7 CAN:  Add ability for CAN BUS_OFF autorecovery according
+        ISO11898-1:2015.  With this change we added an ioctl for triggering
+        the autorecovery sequence for BUS_OFF to the CAN-driver and the
+        SAMV7 low-level driver.  According the datasheet: If the device
+        goes Bus_Off, it will set MCAN_CCCR.INIT of its own accord,
+        stopping all bus activities. Once MCAN_CCCR.INIT has been cleared
+        by the processor (application), the device will then wait for 129
+        occurrences of Bus Idle (129 * 11 consecutive recessive bits)
+        before resuming normal operation. At the end of the Bus_Off
+        recovery sequence, the Error Management Counters will be reset.
+        During the waiting time after the resetting of MCAN_CCCR.INIT, each
+        time a sequence of 11 recessive bits has been monitored, a Bit0
+        Error code is written to MCAN_PSR.LEC, enabling the processor to
+        readily check up whether the CAN bus is stuck at dominant or
+        continuously disturbed and to monitor the Bus_Off recovery
+        sequence. MCAN_ECR.REC is used to count these sequences.  From
+        Frank Benkert.
+
+    * NXP Freescale i.MX RT Drivers:
+
+      - i.MXRT RTC:  Add support for the i.MXRT RTC.  This is code complete
+        (with limited features and options) but untested. The HPRTC is
+        functional.  However, if the LPSRTC is enabled, then there is a
+        hang during LPSRTC initialization.  It appears that there is some
+        problem in providing clocking and initializing the LPSRTC domain.
+        From Gregory Nutt.
+      - i.MXRT SNVS:  Add trivial SNVS from Rev 1. of the Reference Manual.
+        From Gregory Nutt.
+      - i.MXRT LSPI:  IMXRT1050 LPSPI register and bit definitions added.
+        From Ivan Ucherdzhiev.
+      - i.MXRT Serial: IMXRT1050 LPUART TERMIOS support added.  From Ivan
+        Ucherdzhiev.
+
+    * NXP Freescale i.MX RT Boards:
+
+      - IMXRT1050-EVK:  Add knsh configuration. PROTECTED mode NSH build.
+        From Gregory Nutt.
+
+    * NXP Freescale Kinetis:
+
+      - Kinetis: Add DMA support.  From David Sidrane.
+
+    * NXP Freescale Kinetis Drivers:
+
+      - Kinetis:  Use circular DMA as an option to augment the RX FIFOs in
+        the Serial driver.  From David Sidrane.
+
+    * NXP LPC54xx:
+
+      - LPC54xx:  The LPC54608 can only run at a maximum frequency of
+        180Mhz.  This configuration requires uses the clk_in, external
+        crystal clock, to drive the PLL.  When that input was selected, the
+        board bootup failed waiting for the PLL to lock.  After referring
+        the driver from NXP, we should turn on power sources for the ext
+        clock if system pll input select clk_in.  NOTE that the LPC54628
+        did not require this step... perhaps because the system oscillator
+        power was already enabled.  From kxjiang.
+      - LC823450:  Add support for mpu and userspace LC823450-XGEVK: Add
+        kostest PROTECTED build LC823450-XGEVK: Add knsh PROTECTED build
+        From Masayuki Ishikawa.
+
+    * NXP LPC54xx Boards:
+
+      - Lpcxpresso-LPC54628:  Update lvgl board config to use the new
+        version  From Alan Carvalho de Assis.
+
+    * On Semi LPC23450 Drivers:
+
+      - LC823450 Bluetooth:  Add lc823450 Bluetooth support.  From Masayuki
+        Ishikawa.
+      - LC823450 I2S:  Add tx start threshold to lc823450_i2s.c In
+        addition, lc823450_i2s_send() now accepts byte-aligned stream.
+        From Masayuki Ishikawa.
+      - LC823450 SPI:  Add SPI flash driver for lc823450.  NOTE: Only bus
+        accelerator mode is supported.  From Masayuki Ishikawa.
+      - LC823450:  Change C-Buffer under-level control.  The under-level
+        setting was changed from 1KB to 55KB.  In previous implementation,
+        the setting can be changed by the tx threshold but it is fixed at
+        startup. Also, check write size and adjust alignment if needed.
+        From Masayuki Ishikawa.
+
+    * On Semi LPC23450 Boards:
+
+      - LC823450-XGEVK:  Add loopback test for digital MIC on lc823450 via
+        i2schar driver.  From Masayuki Ishikawa.
+      - LC823450-XGEVK:  Add lc832450 elf test.  From Masayuki Ishikawa.
+      - LC823450-XGEVK:  Add posix_spawn configuration  From Masayuki
+        Ishikawa.
+
+    * STMicro STM32:
+
+      - STM32 L4:  Add initial support to STM32L4+ chips  From Juha Niskanen.
+      - STM32 H7:  A partial port to the STMicro STM32H7 by Simon Laube was
+        brought in from the PX4 repositories.  Numerous changes were
+        make(by Mateusz Szafone).  The basic STM32 H7 NSH configuration is
+        now functional, thanks to Mateusz Szafoni.
+
+    * STMicro STM32 Drivers:
+
+      - STM32 F0, F1-F4, F7, L4, H7:  Added Single Wire Kconfig variable.
+        From David Sidrane.
+      - STM32 DAC:  Set OUTEN bit for DAC1CH2 and DAC2CH1 power/motor.
+        Direction parameter is now int8 + add overload fault.  From Mateusz
+        Szafoni.
+      - STM32 F1-F4 ADC:  Allow multiple channels without DMA on
+        STM32L15XX.  From Juha Niskanen.
+      - STM32 F1:  Add FLASH register definitions for F1 parts that have
+        dual banked FLASH.  From Dmitriy Linikov.
+      - STM32 F2:  Added progmem interface support for STM32 F2 From
+        Dmitriy Linikov.
+      - STM32 F4:  Ports STM32 LTDC and STM32 DMA2D to use the
+        framebuffer interface  From Marco Krahl.
+      - STM32 F7:  This change ports Marco Krahl's STM32F4 framebuffer
+        overlays for the LTDC and DMA2D into the STM32F7.  That driver was
+        same as the STM32 F4 driver.  From Gregory Nutt.
+      - STM32 F7:  Port input capture from stm32.  From Juha Niskanen.
+      - STM32 F7 FLASH:  Ported the STM32 F2/F4 driver to the STM32 F7
+        platform.  From Evgeniy Bobkov.
+      - STM32 F7 SDMMC:  Add SDIO card support to SDMMC driver.  From
+        Ramtin Amin.
+      - STM32 F7 Serial:  Previous logic would invalidate the data cache as
+        each byte was read from the DMA buffer.  This change adds logic to
+        invalidate the data cache less frequently by monitoring the state
+        of the Rx DMA buffer cache coherency and invalidating only regions
+        as necessary.  From Evgeniy Bobkov.
+      - STM32 F7:  Add up_stackcheck.c  From Daniel Agar.
+      - STM32 F7:  Port the low-level PM functions to STM32 F7. From Juha
+        Niskanen.
+      - STM32 L4:  STM32L4 has fetchadd and testset  From Juha Niskanen.
+      - STM32 L4: Added custom pin mapping for STM32L4X2XX processors.
+        From Daniel P. Carvalho.
+      - STM32 L4 FLASH:  stm32l4xrxx: allow board to override flash wait
+        states  From Juha Niskanen.
+      - STM32 L4:  Some updates to analog peripherals ADC, COMP and DFSDM
+        for STM32L4XR  From Juha Niskanen.
+      - STM32 L4:  Add getstatus and getperiod() method to the timer
+        driver (includes coding standard changes made prior to commit)
+        From Goden Freemans.
+      - STM32 H7:  Remove old references to RXDMA.  Add configuration
+      - STM32 H7:  Remove old references to RXDMA.  Add configuration
+        option to select the Rx FIFO threshold level.  From Gregory Nutt.
+
+    * STMicro STM32 Boards:
+
+      - STM32F103 Minimum:  Add blackpill LED support  From Russ Webber.
+      - Viewtool-STM32F107:  Add a TCP performance test using
+        apps/examples/tcpblaster.  From Gregory Nutt.
+      - Viewtool-STM32F107:  Add support for the MAX3421E to the
+        Viewtool-STM32F107 board support  From Gregory Nutt.
+      - STM32F334-DISCO:  Use a PID controller from libdsp in the BuckBoost
+        driver. From Mateusz Szafoni.
+      - STM32F4-Discovery:  Remove STM32F4BB dependence from RNDIS; add
+        RAMDISK support.  From Alan Carvalho de Assis.
+      - STM32F4-Discovery  Add board support for MAX7219 as numeric display
+        controller.  From Alan Carvalho de Assis.
+      - Olimex-STM32-P407:  Add kernel ELF (kelf) configuration. From
+        Gregory Nutt.
+      - Olimex-STM32-P407:  Add a kmodule configuration that can be used
+        for testing installation of kernel modules in the protected build.
+        From Gregory Nutt.
+      - Olimex-STM32-P407:  Add logic to support initialization of the
+        kernel module symbol table installed in the pass1/ directory during
+        the application phase of the build.  The kmodule configuration
+        appears to be fully functional.  From Gregory Nutt.
+      - Olimex-STM32-P407:  Add board support for the DHTxx sensor.  From
+        Ouss4.
+      - STM32F476G-DISCO:  Add support for STM32F746G-disco board LCD.
+        From Marcin Wyrwas.
+      - STM32F476G-DISCO:  Add a configuration to build working nxdemo
+        application  From Fanda.
+      - STM32F476G-DISCO:  Add support for STM32F746G-disco board SDRAM
+        Changed fb config to use SDRAM.  From Marcin Wyrwas.
+      - STM32F476G-DISCO:  Add touchscreen support and a LittlevGL demo for
+        STM32F746G-DISCO  From Marcin Wyrwas.
+      - Nucleo-L476RG:  Add support for an external SPI-driven SD card on
+        the Nucleo-L476RG.  From Gregory Nutt.
+      - Nucleo-L476RG:  Add support for LSM303AGR and LSM6DSL sensors  From
+        DisruptiveNL.
+      - Nucleo-H743ZI:  Use Nucleo Virtual console as default console in
+        the NSH configuration  From Mateusz Szafoni.
+      - STM32L4R9-DISCO:  Add stm32l4r9ai-disco support.  From Juha Niskanen.
+      - B-L475E-IOT01A:  Add timer driver support.  From Goden Freemans.
+
+    * Libraries/Header Files:
+
+      - libc endian:  Add support for endian.h. From Gregory Nutt.
+      - libc net:   Add inet_aton()  From Juha Niskanen.
+      - libc netdb:  Add getaddrinfo() and friends.  From Juha Niskanen.
+      - libc termios:  Add lib_cfmakeraw.c  From Masayuki Ishikawa.
+      - libc stdlib:  Add implementation of random() and srandom().  From
+        Gregory Nutt.
+      - libc unistd:  Add a crippled version of daemon().  From Gregory Nutt.
+      - libdsp:  All floats with f-sufix libdsp: (1) add precision option
+        for library, (2) add debug option for library and assertions in
+        functions, (3) add current samples correction for SVM3, (4) add
+        some motor control specific functions, (5) add basic speed
+        observer, (6) fix phase shift in SMO observe, (7) add more logic to
+        FOC.  From Mateusz Szafoni.
+      - include/nuttx/compiler.h, include/poll.h:  Add logic to determine
+        if the compiler supports anonymous structures and unions.  From
+        Gregory Nutt.
+      - include/nuttx/mutex.h:  Add inline wrapper functions to more
+        clearly support semaphores when used as mutexs.  From QianWenfa.
+      - include/nuttx/nuttx.h:  Added nuttx.h header file which is
+        analogous to the linux.h header file.  Currently, it contains on
+        the definition of the container_of() macro.  From zhuyanlin.
+      - include/queue.h:  Add dq_tail marco  From zhuguangqing.
+      - include/stdio.h:  Add prototypes for popen() and pclose().  Actual
+        implementation is in apps/system/popen()  From Gregory Nutt.
+      - include/sys/param.h:  Add a dummy sys/param.h header file.  This is
+        not a standard file but is used by other systems and having the
+        dummy file may minimize some porting efforts.  From Gregory Nutt.
+
+    * Tools:
+
+      - nuttx/tools/kconfig2html.c:  Due to new usage, tool needs to be
+        able to handle configuration files with names other than Kconfig.
+        From Gregory Nutt.
+      - nuttx/tools/kconfig2html.c:  Update tool to handle tristate types.
+        From Gregory Nutt.
+      - nuttx/tools/Config.mk:  Add function CATFILE definition.  Currently
+        only used in apps/builtin/Makefile.  From Gregory Nutt.
+      - nuttx/tools/Config.mk:  Add the recursive wildcard function,
+        RWILDCARD, to Config.mk.  From Gregory Nutt.
+      - nuttx/tools/testbuild.sh:  Add an option to specify the location of
+        nuttx directory.  From Gregory Nutt.
+      - nuttx/tools/refresh.sh:  Add a --prompt option that will let you
+        use --silent but will prompt before overwriting the original
+        defconfig. From Gregory Nutt.
+      - nuttx/tools/link.sh.  Update link.sh per suggestions by Mark so
+        that it can be used with MSYS vs copydir.sh.  From Gregory Nutt.
+      - nuttx/tools/mkexport.sh:  Save the System.map file and User.map
+        file (if it exists) in the export package so that it can be used to
+        extract addresses.  From Gregory Nutt.
+      - nuttx/tools/mkexport.sh:  Save the name of the STRIP tool too.  From
+        Gregory Nutt.
+      - nuttx/tools/nxstyle.c:  Add capability to detect multiple blank
+        lines. Single spacing required by the coding standard.  Also coding
+        standard fixes to server .c files for problems found during testing
+        nxstyle.  From Gregory Nutt.
+      - apps/tools:  Add +x to mksymtab.sh.  From Masayuki Ishikawa.
+      - apps/tools/define.sh and define.bat:  Move a copy of define.bat
+        and sh from nuttx/tools to apps/tools so that they will be
+        available for the import build.  From Gregory Nutt.
+
+    * Build System:
+
+      - Apps/ Build System.  The apps/ build system has undergone a major
+        renovation to better support building applications as ELF modules.
+        Module selections have changed from 'bool' to 'tristate' types.
+        This means that building an ELF now is as simple setting the value
+        to 'm'.  This effort required many changes, too many to summarize
+        here.  The solution was contributed by Masayuki Ishikawa, Anchao
+        An, and Xiang Xiao (and myself to a lesser extent).
+      - NuttX/ Build System:  This change extends support for the two-pass
+        build.  Its primary purpose is to incorporate source logic
+        generated by applications into the kernel phase of the build.
+        In the two pass build, the application logic is built during the
+        first phase, pass 1.  In that phase, the application may generate
+        and install source files in the pass1/directory.  The operating
+        system is built during phase 2 of the build.  At that time, those
+        source files in the pass1/ directory will be built and incorporated
+        into the kernel address space.
+        The primary purpose of the pass1/ directory is to such
+        application-generated kernel symbol tables.  For an example of the
+        use of this feature, look at
+        apps/examples/module/drivers/Makefile.  Kernel symbol tables are
+        needed to support kernel modules.  Of course, addition
+        board-specific logic in, say, configs/<board>/src would have to be
+        included to make use of the application-installed symbol tables.
+        From Gregory Nutt.
+      - Remove CONFIG_ARCH_CALIBRATION.  It is awkward to use and no longer
+        necessary now that we have apps/examples/calib_udelay.  From
+        Gregory Nutt.
+      - Build System:  With recent changes to apps/ all configurations that
+        build applications as modules must now also select
+        CONFIG_APPS_LOADABLE.  From anchao.
+      - Build System:  Add dynamic application loadable support.  From
+        anchao.
+      - Build System:  Add configuration CONFIG_ARCH_GNU_NO_WEAKFUNCTIONS
+        to suppress use of weak functions.  Some gnu derived toolchains do
+        not support weak symbols.  From Xiang Xiao.
+      - Kconfig:  Move 'option modules' from NSH_FILE_APPS to
+        BUILD_LOADABLE From anchao.
+      - apps/ Build System:  Introduce a build system for loadable apps
+        for nsh.  Add 'option modules' to NSH_FILE_APPS so that a user can
+        change an application configuration to tristate (y/n/m)
+      - apps/import:  Add Makefile.symtab which can be used to compile the
+        dynamically created symbol table C file.  Also adds
+        tools/mksymtab.sh.  From Gregory Nutt.
+
+    * NSH: apps/nshlib:
+
+      - apps/nshlib:  Add parsing support for back-slash quoted
+        characters. Currently only implemented properly if
+        CONFIG_NSH_ARGCAT is also selected.  This commit is in response to
+        Bitbucket Issue 11 opened by Maciej Wójcik  From Gregory Nutt.
+      - apps/nshlib:  Add inverted logic support in the form of 'if !
+        <cmd>'  From  Beat Küng.
+      - apps/nshlib:  Expand reboot and poweroff commands to include a
+        second, optional mode argument  From ligd.
+      - apps/nshlib:  Add a force flag (-f) to mksmartfs command.  SmartFS
+        will be formatted only if (1) the FLASH does not already hold a
+        SmartFS, or (2) the force flag is set.  From Xiang Xiao.
+      - apps/nshlib: NSH prompt string is now configurable. nsh> is
+        still the default.  From Xiang Xiao.
+      - apps/nshlib:  Add control-C support for terminating built-in and
+        exec'ed file tasks.  From ligd.
+      - apps/nshlib: Call BOARDIOC_FINALINIT after start-up script (or
+        immediately after BOARIOC_INIT is there is no start-up script).
+        From ligd.
+      - apps/nshlib:  When using waitpid() to wait for a built-in
+        application or a file application to exit.  Add the WUNTRACED
+        options to so the the waitpid() call will also be awakened if the
+        waited-for task is stopped as well.  From Gregory Nutt.
+
+    * NSH Builtins: apps/builtin:
+
+      - apps/builtin/Makefile.  This commit changes apps/builtin to search
+        the registry recursively. By supporting directories, external
+        projects can install the hooks into the registry and easily clean
+        them up and reinstall if something needs to be updated.  Based on
+        an idea from Anthony Merlino.  From Gregory Nutt.
+
+    * Examples/Tests: apps/examples:
+
+      - apps/examples/calib_udelay:  Add tool for calibrating
+        CONFIG_BOARD_LOOPSPERMSEC  From Juha Niskanen.
+      - apps/examples/dhtxx: Example for the DHTxx sensor.  From Ouss4.
+      - apps/examples/dsptest:  Add unit test for Nuttx DSP library  From
+        Mateusz Szafoni.
+      - apps/examples/elf:  CROMFS and ROMFS configuration currently only
+        usable in FLAT build.  Add configuration to use ELF objects on
+        external media like SD card or USB drive instead.  From Gregory
+        Nutt.
+      - apps/examples/elf:  If the test ELF files are on media in
+        removable media such as SD or USB FLASH, the wait until the media
+        has been installed and initialized before starting the test.  From
+        Gregory Nutt.
+      - apps/examples/fb:  Adds example to test framebuffer overlay  From
+        Marco Krahl.
+      - apps/examples/gps:  Add GPS example using MINMEA lib  From Alan
+        Carvalho de Assis.
+      - apps/examples/i2sloop:  Add i2sloop application.  This application
+        can be used to test I2S loopback like: ' nsh> i2sloop &'. From
+        Masayuki Ishikawa.
+      - apps/examples/lvgldemo:  Update LVGL to version 5.1.1  From Alan
+        Carvalho de Assis.
+      - apps/examples/module:  Add support for CROMFS and for stripping
+        symbols from ELF module binaries.  From Gregory Nutt.
+      - apps/examples/module:  Add support for automounting removable media.
+        This involves a wait for the block driver to become available
+        before performing the mount.  From Gregory Nutt.
+      - apps/examples/module:  When built in the PROTECTED or KERNEL
+        modes, the symbol table is not built by the application.  That is
+        because the build will fail since the kernel module depends on
+        internal OS symbols thar are not available to the application
+        build.  With this change the examples does not attempt to build
+        the kernel symbol table in these modes.  Instead it just copies
+        the kernel module symbol table into the nuttx/pass1 directory
+        where it can be build directly into the OS during pass2 of the
+        build.  From Gregory Nutt.
+      - apps/examples/ostest:  Add a small test for SIGSTOP, SIGCONT, and
+        SIGKILL actions.  From Gregory Nutt.
+      - apps/examples/popen:  Add a test of popen/pclose.  From Gregory
+        Nutt.
+      - apps/examples/powerled:  Add arch initialization. From Mateusz
+        Szafoni.
+      - apps/examples/tcpblaster:  Add TCP performance measurement test.
+        From Gregory Nutt.
+
+    * System Utilities: apps/system
+
+      - apps/system/cle:  Usage improvements including command line
+        history (taken from readline) and support for addition control
+        characters. From mst.
+      - apps/system/i2c:  Adapt to rename I2C_M_RESTART->i2C_M_START.
+        I2C_M_NOSTOP should be in flags of first message in every
+        write-read and write-write mesage sequence.  From Gregory Nutt.
+      - apps/system/i2c: Allow registers besides 0x00 in the dev command.
+        From Jakob Haufe.
+      - apps/system/nsh:  Add logic to automatically register an
+        application symbol table as part of NSH initialization.  From
+        Masayuki Ishikawa.
+      - apps/system/nsh:  The symbol table name and size variable names
+        can now be configured.  From Gregory Nutt.
+      - apps/system/nsh:  Move apps/examples/nsh to apps/system/nsh.  It
+        has become so entrenched that it is hardly an example these days.
+        May as well formalized it as a system task.  From Gregory Nutt.
+      - apps/system/nxplayer:  Refactor nxplayer.c.  Apply
+        netlib_parsehttpurl() and
+        remove unnecessary usleep().  From Masayuki Ishikawa.
+      - apps/system/nxplayer:  Release buffer before session and release
+        semaphore in nxplayer_setvolume system/nxplayer/nxplayer.c:
+        Remove & for apb->samp reference. It is already a pointer.  From Xiang Xiao.
+      - system/nxplayer/nxplayer.c:  Add playraw command  From ZhongAn.
+      - apps/system/nxrecorder:  Add nxrecorder application  From ZhongAn.
+      - apps/system/popen:  Add an implementation of the standard popen()
+        and pclose() OS interfaces.  These are implemented as applications
+        vs. part of the OS because they depend on NSH.  Untested on
+        initial commit.  From Gregory Nutt.
+      - apps/system/system and popen:  Adapt so that these can be used in
+        the KERNEL build mode.  In this case, simply replace task_spawn()
+        with posix_spawn().  This depends on the existence of some
+        environment where /bin/sh exists and can be used to execute one
+        NSH command.  For the case of system(), this change was more
+        complete because it previously used task_create().  Now it uses
+        either task_spawn() or posix_spawn(), depending upon the
+        configuration.  From Gregory Nutt.
+      - apps/system/taskset:  Add taskset command for SMP systems.  This
+        command can be used to retrieve or set a process's CPU affinity.
+        For example,
+
+        nsh> taskset -p 4
+        pid 4's current affinity mask: 2
+
+        nsh> taskset -p 3 4
+        pid 4's current affinity mask: 3
+
+        nsh> taskset -p 1 busyloop &
+
+        From Masayuki Ishikawa.
+      - apps/system/zmodem:  Support -p <path> for rz to change the folder
+        for the received file.  Switch debug output from printf to
+        syslog.  Send the next packet for ZME_ACK in ZMS_SENDING to avoid
+        rz on the host side stuck make send work reliable even without
+        hardware flow control.  From Xiang Xiao.
+
+    * Network Utilities: apps/netutils:
+
+      - apps/netutils/dhcpc:  Activates BINDTODEVICE if available.  From
+        Sebastien Lorquet.
+
+    * Wireless Utilities: apps/wireless:
+
+      - apps/wireless/i8sak:  i8sak daemon now gets shutdown if not in use.
+        Previously, once the i8sak daemon was started, by running any
+        command, it would stay running. This means that if you want to use
+        i8sak to setup your network, but then want exclusive access to the
+        char device, or network device, you have to manually shutdown the
+        i8sak daemon.  Now the daemon stays active as long as required to
+        finish any commands, or stays open if a new command keeps it on,
+        but when all work is finished, it shuts down.  From Anthony Merlino.
+
+    * Filesystem Utilities: apps/fsutils:
+
+      - mkfatfs:  Clean up some name BS_ and MBR_ refer to the same record
+        and should use the same naming (MBR_).  From Gregory Nutt.
+      - mkfatfs:  Add definitions for the FAT boot record (FBR).  From
+        Gregory Nutt.
+      - mksmartfs:  Add a check to see if the SmartFS is already
+        formatted.  From Xiang Xiao.
+
+    * Graphic Utilities:  apps/graphics:
+
+      - graphics/littlevg/:  Update LVGL to version 5.1.1  From Alan
+        Carvalho de Assis.
+
+    * Test Utilities:  apps/testing:
+
+    - testing/unity: add Unity - unit testing library from
+        ThrowTheSwitch.org. From Mateusz Szafoni.
+
+Bugfixes.  Only the most critical bugfixes are listed here (see the
+ChangeLog for the complete list of bugfixes and for additional, more
+detailed bugfix information):
+
+    * Core OS:
+
+      - Signals:  Signal handlers maybe run with interrupts enabled or
+        disabled, depending on how the task the received the signal was
+        blocked. (i.e.: If sem_wait() is called, then we disable
+        interrupts, then block the currently running task).  This could be
+        dangerous, because user code would be running with interrupts
+        disabled.
+        This change forces interrupts to be enabled in up_sigdeliver()
+        before executing the signal handler calling up_irq_enable()
+        explicitly.  This is safe because, when we return to normal
+        execution, interrupts will be restored to their previous state when
+        the signal handler returns.  From Gregory Nutt (Based on a
+        recommendation by Mark Shulte).
+      - Signals:  Lock the scheduler while while killing the children so
+        that we do not lose priority and let the task group continue to
+        run in an indeterminate state.  From Gregory Nutt.
+      - Groups:  Fix a deadlock when loading an ELF  From Masayuki Ishikawa.
+      - Groups:  In some circumstances, group_killchildren() could have
+        called pthread_cancel() to kill a task.  Also, the behavior would
+        not be as expected if a pthread had cancellation disabled.  From Gregory Nutt.
+      - Posix Message Queues: mq_notify() fix - only part of struct copied
+        to internal structure.  As source address the address of the struct
+        member sigev_value was used, and it is not located the start of the
+        struct. This leads to invalid data being copied to internal
+        structure.  Both source and destination should be of type struct
+        sigevent* .  From Simon Liedl.
+      - vfork():  vfork operation needs to allocate and copy the task
+        argument too.  Also correction of the address correction cannot
+        depend on the stack pointer since it is not available in all
+        architectures.  Rather calculate the offset from the stack
+        allocation pointer  From Xiang Xiao.
+      - IRQ Dispatch:  Ensure vector never points to NULL since interrupt
+        may happen before irq_initialize()  From Xiang Xiao.
+      - Work Queue:  workqueues don't need set global data to zero since
+        .bss is cleared automatically.  Removing this unnecessary
+        initialization also avoids the loss the work items queued before
+        initialization.  From ligd.
+      - Work Queue:  Remove work queue polling delay to simplify the code
+        logic and save the power.  From xuanlin.
+      - syslog: Fix syslog crash on 64bit simulation. From anchao.
+      - Pipes: Write to a pipe when there are no readers from the pipe
+        should return -EPIPE.  From ligd.
+      - System Calls:  Fix 6th parameter type of posix_spawnp in
+        syscall.csv From Masayuki Ishikawa.
+      - System Calls:  Remove unused SYS_nnetsocket from syscall.h.  Because
+        SYS_nnetsocket is not implemented so far, it should be removed so
+        that SYS_prctl can work correctly.  From Masayuki Ishikawa.
+      - Binary Loader:  Refactor binfmt_exec.c.   This change also fixes an
+        argv issue for CONFIG_SCHED_ONEXIT=n or CONFIG_SCHED_HAVE_PARENT=n
+        From Masayuki Ishikawa.
+      - Binary Loader:  Re-architect the way that loadable ELF or NXFLAT
+        modules are unloaded.  Memory resources must be recovered when the
+        task loaded into memory exits.  The original implementation used
+        the death-of-child SIGCHLD signal to perform the unload.  There are
+        several problems with this:  It is overly complex, it requires that
+        the parent task stay resident while the loaded task runs, and it
+        has fatal logic flaws in the protected and kernel model builds
+        because the user signal handler attempts to run in the kernel
+        address space. This corrects the issue using a mindlessly simply
+        BINFMT callback when the task exits.  From Gregory Nutt.
+      - ELF Binary Loader:  Set priority level to default if parent has no
+        priority.  From anchao.
+
+    * File System/Block and MTD Drivers:
+
... 7995 lines suppressed ...