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 李桂丁
    <liguiding@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.