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 website. Note that release consists of two tarballs: nuttx-7.22.tar.gz and apps-7.22.tar.gz. These are available from:

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
  - 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
  - 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
  - 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
  - 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
  - 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
  - LC823450: eMMC/SD and USB support for LC823450.  From Masayuki Ishikawa.

* On Semiconductor LC823450 Boards

  - LC823450-XGEVK:  LC823450-XGEVK board support.  From Masayuki
  - 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
  - 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
  - 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
  - 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
  - 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
  - STM32 F7 RTC: Port Boris Astardzhiev's RTC change for STM32L4 to

* 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
  - 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
  - STM32F334-DISCO:  Add STM32F334-DISCO basic support.  From Mateusz
  - 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

* 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 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
  - Networking: Move INET socket interface out of net/sockets to its own
    directory net/inet.

* Tools:

  -  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 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  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/ will now copy Eclipse project files if they are
    present in the board directory file.
  - Update, 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/  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/  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
  - 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
  - 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
  - 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

* 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
  - 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
  - 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
  - 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
  - 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
  - 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
  - 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
  - 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
  - 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
  - COMP Driver:  Fix compilation errors when poll disabled.  From Mateusz

* 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

* 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

* 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
  - STM32 L4 PWR:  Correct PWR_SR2 REGLPS and REGLPF bits, add port I
    registers.  Also remove duplicate section from Kconfig.  From Juha
  - 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

* STMicro STM32 Drivers:

  - STM32 TIM3/4 are always 16-bits; never 32-bits.  Noted by Eetu
  - 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
  - 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
  - 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
  - STM32 L4 I2C: I2C4 was writing to wrong RCC registers.  From Juha
  - 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
  - STM32 F4 RTCC: ISR register and write protection fix.  From Eetu
  - 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

* 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
  - 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
  - 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/  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/  Remove quotes from CONFIG_ARCH_FAMILY.  Causes
    problems with Windows native build.  From Jeff.
  - 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/ 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
  - 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
  - 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
  - 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

* 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
  - 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