NuttX-7.30 Release Notes

The 130th release of NuttX, Version 7.30, was made on May 19, 2019, and is available for download from the Bitbucket.org website. Note that release consists of two tarballs: nuttx-7.30.tar.gz and apps-7.30.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:  Added non-standard pthread_get_stackaddr_np() and
    pthread_get_stacksize_np().  From Joao Matos.
  - boardctl():  Add a command to start the VNC server.  From Gregory
    Nutt.
  - Signals:  Remove references to CONFIG_DISABLE_SIGNALS in many
    files.  Signals can no longer be disabled.  From Gregory Nutt.

* Wireless/Wireless Drivers:

  - NRF24L01:  Add support for "multicast" TX mode - no waiting for ACK
    (needs to be enabled with fcntl SETTXPAYLOADNOACK)  From Leif Jakob.

* Graphics/Display Drivers:

  - NX Graphics:  Add new server->client callback to notify the window
    client of server events. Remove the old 'blocked' callback and just
    make it one case of an 'event' callback.  From Gregory Nutt.
  - NX Graphics:  Implement new interfaces nx_synch() and nxtk_synch().
    This are used to synchronize the NX server with the window client.
    Currently most of the logic is equivalent to nx_block() and
    nxtk_block(), but with slightly different semantics.  They are
    separate now because they are likely to diverge in the future.
    From Gregory Nutt.
  - NX Graphics:  Add support for modal windows.  From Gregory Nutt.
  - NX Graphics:  Implement a software cursor.  The cursor behaves
    like a "sprite", always at the top of the display with a
    transparent background.  Includes new NX interfaces to show/hide
    the cursor, set the cursor image, and to move the cursor position.
    From Gregory Nutt.
  - NX Graphics:  Added support for hiding windows. This features is
    needed by Twm4Nx:  When a window is iconified, the icon should
    appear on the background and the window should disappear (i.e., be
    hidden).  The windows needs to remain healthy and to be updated in
    all ways, but it cannot affect the display content.  Conversely,
    when the icon is clicked, the icon needs to be hidden on the
    background and the window needs to be restored in its current
    state (which may be different than the state of the window at the
    time it was iconified.  From Gregory Nutt.
  - NX Graphics:  Windows can now be created in the hidden state.
    This can be used to clean up initial window presentation which may
    involve several steps.  This makes those steps all invisible until
    nx[tk]_setvisibility() is called to make the windows visible.
    From Gregory Nutt.
  - NX Graphics:  Add new NX interfaces to query if a window is hidden
    or not.  From Gregory Nutt.
  - NxTerm IOCTLs:  Replace specific interfaces between boardctl and
    nxterm with a generalized IOCTL interface.  From Gregory Nutt.
  - NxTerm:  Add a new IOCTL that can be used to inform NxTerm that
    the size of a window has changed.  From Gregory Nutt.

* Other Common Device Drivers:

  - CAN Upper Half:  Support multiple readers of the same port  From
    Valmantas Paliksa.
  - MAX7456:  Adds a read-only (for now) /dev/osd0/CM interface for
    obtaining the chip's onboard NVM character map data.  Use seek()
    to position the cursor over a desired subset of bytes, or request
    a large read to obtain the entire EEPROM memory contents.  Values
    are returned in binary form. Use hexdump, etc. to format them for
    viewing.  From Bill Gatliff.
  - Serial Upper Half:  The upper half serial driver configuration
    CONFIG_SERIAL_DMA used to enable DMA on both RX and TX streams.
    This was replaced with CONFIG_SERIAL_RXDMA and CONFIG_SERIAKL_TXDMA
    which will permit supporting DMA on only one or both streams.
    From Gregory Nutt.
  - FUSB303:  Add FUSB303 driver  From Juha Niskanen.

* Microchip PIC32MZ Drivers:

  - PIC32MZ GPIO:  Adds support for edge detect mode.  Slew Rate was
    also added for completeness.  From Abdelatif Guettouche.

* Microchip/Atmel SAMv7 Boards

  - SAME70-xplained:  Add a configuration for testing Twm4Nx using VNC.
    From Gregory Nutt.

* Microchip LPCxx Drivers:

  - LPC17xx Ethernet:  Added support for KSZ8081RNA PHY to LPC17xx
    Ethernet driver.  From jjlange.
  - LPC17xx Ethernet:  Added support for Ethernet PHY ioctl() on
    LPC17xx.  From jjlange.

* NXP i.MX RT:

  - .i.MXRT1020:  Gets imx1020 family support started. It is pretty
    similar, but subtly different, to 1050/60 (less PLLs, less GPIO
    banks, differently numbered ports etc. etc.).

    Moved each of the imxrt family-specific files into its own
    subdirectory to tidy things up a bit, and remove the vast majority
    of ifdefs from the mainline code.

    From Dave Marples.

* NXP LPC54xx Drivers

  - LPC54xx USB FS Host:  Bring in the USB FS OHCI driver from LPC17.
    This is a quick'n'dirty port from LPC17 that I hope finish
    sometime later.  Currently, it is missing hardware clocking setup
    and is not even hooked into the build system yet.  From Gregory
    Nutt.

* NXP LPC54xx Boards

  - LPCXpresso-LPC54628:  Add a Twm4Nx configuration.  From Gregory Nutt.

* Sony CXD56xx

  - CXD56xx:  Add initial CXD56xx chip driver sources.  From Nobuto
    Kobayashi.

* Sony CXD56xx Spresense Board

  - Spresense:  Add Spresense board support.  This is not the full
    Spresense BSP from Sony, only the barebones logic to present an
    NSH console.  From Nobuto Kobayashi.

* STMicro STM32:

  - STM32F7 Clocking: Add support for using the HSE in bypass mode,
    configured by board.h  From Anthony Merlino.
  - STM32F7 Clocking:  Added support for TICKLESS mode.  From Valmantas
    Paliksa.
  - STM32H7 Backup Domain:  Add backup domain control registers.  From
    Jukka Laitinen.
  - STM32H7 Clocking:  Set the STM32H7 default HSI pre-divider to 4.
    The I2C driver currently assumes HSI clock to be 16MHz.  From Jukka
    Laitinen.
  - STM32H7 Memorymap.:  Add the STM32H7 SYSTEM_UID and DEBUGMCU_BASE
    register definitions.  From Jukka Laitinen.
  - STM32L071x:  Add support for STM32L071x.  From Mateusz Szafoni.

* STMicro STM32 Drivers:

  - STM32 OTGHS Host:  Allow VBUS monitoring for the OTG_HS host
    driver.  From Jason Harris.
  - STM32F0/L0 ADC:  Initial ADC support for the STM32 M0  From Mateusz
    Szafoni.
  - STM32F0/LO I2C: Port STM32F7 I2C to STM32F0/L0,  From Mateusz Szafoni.
  - STM32F1 FLASH:  As noted by Matias N, the FLASH base address used
    was incorrect.  It was using the address of the FLASH data, not
    the address of the FLASH registers.  From Gregory Nutt.
  - STM32F3 I2C: Port STM32F7 I2C to STM32F3.  From Mateusz Szafoni.
  - STM32F7 Ethernet.c:  Auto-generate Ethernet MAC address from
    device unique ID.  From Valmantas Paliksa.
  - STM32F7 FLASH:  Add flash block mapping support for progmem.  From 
    Valmantas Paliksa.
  - STM32F7 FMC:  Updated stm32_fmc.h with more FMC definitions.  From
    Joao Matos.
  - STM32F7 GPIO:  Adds additional pin alternate function for SPI2.
    From Anthony Merlino.
  - STM32F7 PWM:  Ported the PWM from F4 to F7.  From Eduard Niesner.
  - STM32F7 SDMMC: Support bypassing the input clock divider on the
    SDMMC interface. This enables using the full clock speed provided
    to the SDMMC interface with no dividing.  From Anthony Merlino.
  - STM32F7 SPI:  Add SPI DMA threshold configuration.  From Valmantas
    Paliksa.
  - STM32F7 UID:  Add UID access.  From Valmantas Paliksa.
  - STM32F7 USB:  USB High speed for STM32F7 series  From Ramtin Amin.
  - STM32H7 Ethernet:  Add stm32h7 Ethernet driver.  This is the
    initial push for the Ethernet driver.  The driver has been tested
    to be working on a nucleo board.  This is still WIP, it doesn't
    for example do MAC filtering on HW level, but just receives all
    Ethernet packets.  From Jukka Laitinen.
  - STM32H7 GPIO:  Add the GPIO_ETH_RMII_RXD1 pinmap definition for
    STM32H7.  From Jukka Laitinen.
  - STM32H7 SDMMC:  Add STM32H7 SDMMC driver.  It is mostly copied
    from STM32F7, with modified register addresses and bits, and IDMA 
    dded.  This is still WIP; it only works with IDMA.  From Jukka
    Laitinen.
  - STM32H7 Timers:  Add timer devices driver for STM32H7.  This i
    mostly a forklift from stm32f7 with some h7 specific
    modifications.  From Jukka Laitinen.
  - STM32L0 AES:  Add support for AES for L0.  From Mateusz Szafoni.
  - STM32L0 RND:  Add support for RND.  From Mateusz Szafoni.
  - STM32L0 HSI48:  Add support for HS148 for L0. Move HSI48 enable
    from stm32_usbdev.c to stm32xx_rcc.c  From Mateusz Szafoni.
  - STM32L4 USB FS Device:  Add USB FS device support.  From Juha
    Niskanen.
  - STM32L4 HSI48:  Port HSI48 from STM32F0/L0  From Juha Niskanen.
  - STM32L4 CRS:  Port CRS from STM32F0/L0  From Juha Niskanen.

* STMicro STM32 Boards:

  - B-L072Z-LRWAN1:  Add ADC example.  From Mateusz Szafoni.
  - B-L072Z-LRWAN1:  Add nxlines_oled example (ssd1306).  Add support
    for the I2C tool  From Mateusz Szafoni.
  - Nucleo-144:  Added STM32_RCC_DCKCFGR2_DSISRC definition to board.h.
    From Joao Matos.
  - Nucleo-144:  Mount sysfs for ifconfig for f767-netnsh/defconfig.
    Even if ifconfig is working to set IP, it will not work to display
    NICs (without args)  From Phil Coval.
  - Nucleo-144:  Add basic PWM support to nucleo-144 board.  More PWMs
    and multi channels support may be investigated and added later.
    Tested on Nucleo-F767ZI.  From Phil Coval.
  - Nucleo-F303ZE:  Add nxlines_oled example (ssd1306)  From Mateusz
    Szafoni.
  - Nucleo-H743ZI:  Enable the FPU.  From Jason Harris.
  - Nucleo-H743ZI:  Add support for I2C devices: ssd1306, pca9635,
    i2ctools  From Mateusz Szafoni.
  - Nucleo-H743ZI:  Add default clock configuration for SDMMC for
    Nucleo-H743ZI's board.h.  From Jukka Laitinen.
  - Nucleo-H743ZI:  Add the input clock frequency definitions in
    board.h for all the drivers. Assumes internal clock source for
    all the timers.  From Jukka Laitinen.
  - STM32F4 Discovery:  Keep c++ global constructor symbols  From
    Masayuki Ishikawa.
  - Nucleo-L073RZ:  Add MFRC522 support  From Mateusz Szafoni.
  - OmnibusF4:  Add boardctl() reset logic.  From Bill Gatliff.
  - OmnibusF4:  Add board_ioctl() which is needed only if
    CONFIG_BOARDCTL_IOCTL=y is selected;  Update NSH configuration
    to enable board IOCTLs and DFU mode reset.  From Bill Gatliff.
  - STM32L Discovery:  Add support for board_late_initialize(), Move
    common initialization logic out of board_app_initialize() into new
    file stm32_bringup.c  From Gregory Nutt.
  - STM32F103-Minimum:  Add PROCFS automount support  From Alan
    Carvalho de Assis.

* Libraries/Header Files:

  - include/alloca.h:  Add alloca.h.  Included limited implementation
    of alloc() that is only available for GCC versions 3 and above.
    From Joao Matos.
  - include/cxx/cstdlib:  Add std::random()  From Gregory Nutt.

* apps/ General:

  - Many locations:  Remove references to CONFIG_DISABLE_SIGNALS.
    Signals can no longer be disabled.  From Gregory Nutt.

* Examples/Tests: apps/examples:

  - apps/examples/fb:  Add some awareness of overlays to
    apps/examples/fb  From Matthew Koch.
  - apps/examples/lvgldemo.  Update to Littlevgl 5.3.  From Matthew
    Koch.
  - apps/examples/pwfb:  Extend example to verify software cursors.
    From Gregory Nutt.
  - apps/examples/pwfb:  Add options to reduce the number of windows.
    This is helpful during debug to reduce the complexity.  From
    Gregory Nutt.

* Network Utilities: apps/netutils:

  - apps/netutils/cjson:  Support for the current version of cJSON.
    From Mateusz Szafoni.
  - apps/netutils/libcurl4nx:  This is an initial commit libcurl4nx.
    It is not complete yet, but I still wish to commit the unfinished
    bits to describe the roadmap, and because it is already usable.  It
    will be updated and fixed in the future weeks and months, certainly
    including POST support and later, SSL.  From Sebastien Lorquet.
  - apps/netutils/netinit.  This commit removes the private network
    initialization logic from NSH and puts in a common location at
    apps/netutils/netinit.  Now that netork initialization logic can be
    used by applications that do not include NSH.  From Gregory Nutt.
  - apps/netutils/netlib:  Add a  more flexible version of
    netlib_parsehttpurl().  This one can parse any URL, and is
    extensible so future improvements keep the same API.  From Sebastien
    Lorquet.

* System Utilities: apps/system

 - apps/system/spi:  I needed a small test tool for spi in the style of
   the I2C tool, but I didn't see one so I've hacked one out of the I2C
   tool source.  From Dave Marples.

* Graphics:  apps/graphics:

  - apps/graphics/twm4nx.  This release introduces Twm4Nx.  Twm4Nx is a
    "port" of TWM, Tab Window Manager (or Tom's Window Manager) version
    1.0.10 to NuttX NX windows server.  No, a port is not the right
    word.  It is are-design of TWM from the inside out to work with the
    NuttX NX server and NXWidgets.  The name Twm4Nx reflects this
    legacy.  But Twm4Nx is more a homage to TWM than a port of TWM.

    The original TWM was based on X11 which provides a rich set of
    features.  TWM provided titlebars, shaped windows, several forms of
    icon management, user-defined macro functions, click-to-type and
    pointer-driven keyboard focus, graphic contexts, and user-specified
    key and pointer button bindings, etc.

    Twm4Nx, on the other hand is based on the NuttX NX server which
    provides comparatively minimal support.  Additional drawing support
    comes from the NuttX NxWidgets library (which necessitated a
    conversion to C++).

    Twm4Nx is greatly stripped down and targeted on small embedded systems
    with minimal resources.  For example, no assumption is made about the
    availability of a file system; no .twmrc file is used.

    The state of the "port" is available in
    apps/graphics/twm4mx/README.txt.  To summarize:  The port is fully
    functional but probably only at an alpha release level.  The only
    missing critical feature is built-in touchscreen calibration.

  - apps/graphics/littlevgl.  Update to Littlevgl 5.3.  From Matthew
    Koch.
  - apps/graphics/nxglyphs:  Put all NxWidgets and NxWM glyphs into a
    common directory where they can eventually be shared. Decouple
    from nxwidgets and nxwm so that they can be used elsewhere.
    Creates include/graphics/nxglyphs.h  From Gregory Nutt.
  - apps/graphics/nxglyphs:  Add some new cursor bitmap images.  From
    Gregory Nutt.
  - apps/graphics/nxglyphs:  Add mkcursor.c.  Will auto-generate
    cursor image header file from Gimp C output.  From Gregory Nutt.
  - apps/graphics/nxglyphs:  Add 16x16 cursor images.  30x30 are kind
    of large on small displays.  From Gregory Nutt.
  - apps/graphics/nxglyphs:  Add a new resize cursor image. From
    Gregory Nutt.
  - apps/graphics/nxwm:  Separate NxWidgets and NxWM into separate
    directories.  Remove old, common NxWidgets directory.  From
    Gregory Nutt.
  - apps/graphics/nxwm:  Move the NxWM unit test main() to apps/nxwm.
    It is no longer a unit test, but the main startup entry point for
    NxWM.  From Gregory Nutt.
  - apps/graphics/nxwidgets:  Update NX window clients so that they
    use the new 'event' callback (vs. the obsoleted 'blocked' callback).
    From Gregory Nutt.
  - apps/graphics/nxwidgets:  Add a synchronize method to every window.
    This is a wrapper arounc nx[tk]_sync and permits C++ applications
    to synchronize with the NX server.  From Gregory Nutt.
  - apps/graphics/nxwidgets:  Add support for modal windows.  From
    Gregory Nutt.
  - apps/graphics/nxwidgets:  Add cursor control methods to the
    CNxServer class.  From Gregory Nutt.
  - apps/graphics/nxwidgets:  Add a method to CButtonArray that will
    allow us to dynamically resize the array (at the cost of losing all
    button labels).  From Gregory Nutt.
  - apps/graphics/nxwidgets:  Fix a possible deadlock condition when
    waiting for window geometry data that will never come.  Fixed by
    re-requesting geometry data if we don't already have it.  From
    Gregory Nutt.
  - apps/graphics/nxwidgets:  Add handshake to
    CWidgetControl::getWindowHandle() to avoid returning a NULL
    handle.  From Gregory Nutt.
  - apps/graphics/nxwidgets:  CNxTkWindow, CNxWindow, CNxServer:  Add
    support to create RAM backed windows.  From Gregory Nutt.
  - apps/graphics/nxwidgets:  Add methods to all windows to query if a
    window is visible or hidden.  From Gregory Nutt.

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:

  - Clock Initialization:  A recent change broke Tickless mode for all
    architectures.    The original change was intended to handle the
    case where up_timer_gettime may not start from zero case.  The
    side effect is that this changed to order of initialization of
    clocking, breaking Tickless mode::  After this change the tickless
    timer structures are used before they are initialized in
    clock_inittime().  The commit has been reverted.
  - pthread Stack Attribute:  Fixed pthread_attr_get/setstacksize
    param type to size_t.  From Joao Matos.
  - Signals:  The abnormal termination signal handler was just calling
    exit() conditionally when, for example, Ctrl-C is sent to a task.
    The abnormal termination handler must obey the rules of cancellation
    points:  If cancelation is disabled, then the abnormal termination
    logic must wait for cancelation to be re-enabled; If cancellation
    is deferred then the abnormal termination logic may have to wait
    for the victim task to enter or exit a cancellation point.  From
    Gregory Nutt.
  - Syscall: Added support for munmap() syscall.  From Joao Matos.
  - Syscall: Fix a warning due to inconsistencies in return type in
    syscall.csv.  From Gregory Nutt.
  - Syscall:  Correct an error syscall.csv. Error occurred when
    creating the munmap() proxy if CONFIG_FS_RAMMAP is not defined.
    From Gregory Nutt.

* File System/Block and MTD Drivers:

  - fs/littlefs/lfs.c:  Fix lfs_format bug.  In superblock disk root-
    block assignment, the second must be root[1].  From YanLin Zhu.

* Networking/Network Drivers:

  - getsockname():  Fix addrlen check in socket debug features.
    Getsockname() checked erroneously a pointer agains 0, where the
    intention was to dereference the pointer and to check the length.
    This causes also a compilation failure if the code is compiled
    with CONFIG_DEBUG_FEATURES and with -Werror flag set.  From Jukka
    Laitinen.
  - Network Locking:  net_lock() and net_restorelock() now return a
    value.  That values is the standard zero on success; negated errn
    value on failure.  This return value is only needed for
    -ECANCELED.  That cancellation indication needs to ripple all the
    way back to the highest levels where the cancellation can be acted
    on.  This commit only adds the return value; it does not add
    checking for the return values of net_lock() and net_restorelock()
    at higher levels.  That is required too.  From Gregory Nutt.
  - PHY Notification Driver:  Change sprintf to strncpy in phy_notify.
    On some platforms, the sprintf doesn't accept a const char* as a
    format argument.  From Jukka Laitinen.
  - 6LoWPAN HC06:  Correct an endian-ness problem in HC06 decompression.
    From Ivan Ucherdzhiev.

* Wireless/Wireless Drivers:

  - NRF24L01:  Don't block in read if file descriptor is O_NONBLOCK.
    From Leif Jakob.

* Graphics/Display Drivers:

  - NX Graphics:  Fix an error in coordinate system usage.  Expected
    rectangle in device coordinate frame, but was passing the
    rectangle in window-relative coordinate frame.  From Gregory Nutt.
  - NX Graphics:  Fix an oversight in the implementation of per-window
    framebuffers.  It is true that redraw callbacks can be suppressed
    for all cases ... EXCEPT ONE:  When the window is resized to a
    larger size, then the newly exposed territory must be drawn for
    the first time.  From Gregory Nutt.
  - NxTK:  Fix an error in handling mouse events for framed windows.
    When drawing, NX may report mouse positions outside of the Window.
    The is only for NX windows, but the outside-the-side positions were
    being discarded by nxtk_events().  From Gregory Nutt.
  - NxTK:  Refuse to open a toolbar of height zero or less.  From
    Gregory Nutt.
  - Nxglib:  Correct bogus logic in nxgl_interesting().  From Gregory
    Nutt.
  - VNC Server:  Fix an error in color conversion.  From Gregory Nutt.
 
* Common Drivers:

  - APDS9960:  Initial state of allocated structure was not being set.
    Noted by Leif Jacob.  From Gregory Nutt.
  - MFRC522:  In mfrc522_read uid.sak must be different from 0x04 not
    as before from 0x00. SAK == 0x00 is a valid PICC type.  Add
    interface to read MIFARE Ultralight data  From Mateusz Szafoni.
  - Power:  Fix build for battery gauge  From Tom Kopriva.
  - Syslog:  In syslog buffered mode, avoid IOB alloc lock-up with
    heavy network activity.  This change alters the buffered syslog
    logic to use 'iob_tryalloc' instead of blocking 'iob_alloc' to
    avoid syslog printing from getting stuck when all IOBs are
    depleted by network activity.  An issue was seen when large
    incoming TCP transfer uses free IOB buffers and processing
    threads try to use syslog which then block at iob_alloc.  From
    Jussi Kivilinna.
  - USB CDC/ACM Device:  This fixes a problem where the host sent a
    "get descriptor" message of type "standard" with a recipient of
    type "interface". Since the composite driver would only pass
    messages to the child interfaces when a message was not
    "standard", this message was not handled. I changed the condition
    so that the composite driver checks not only if this is a
    "standard" message but if it is also directed to the device.
    Otherwise, the handling is delegated to the children of the
    composite device.  From Matias N.
  - USB HID:  The usbhid_descriptor_s struct defined in hid.h included
    some optional fields that should not be hard-defined as part of
    that structure.  An arbitrary number of optional entries could be
    included in the descriptor, but that is not properly represented.
    No code on NuttX currently depends on the structure definition
    with an optional descriptor so it is safe to remove.  From Matias N.
  - USB MSC Device:  Correct typo "const const" to "const".
    arch/arm/src/stm32/stm32_i2s.c:  In debug assertions, it on a
    sample rate of 0, but based on other code comments this value
    implies disabling the i2s master clock.  From Jason Harris.
  - Zerocross Driver:  Fix some errors when debug assertions are
    enabled.  From Matous Pokorny.
  - User Leds:  Fix ledset validity check in ULEDIOC_SETALL ioctl.
    From Jussi Kivilinna.

* Architecture Common:

  - All board interfaces (those starting with board_) must be defined
    in board-specific logic.  Otherwise, they cannot be customized for
    specialized usage by different boards.  The board_reset()
    interface was defined in architecture-specific logic that only
    called up_systemreset().  That is useless!  This change removes
    the board_reset() implementation from the architecture-specific
    code and re-implements it in the src/ directory of each board that
    has CONFIG_BOARDCTL_RESET enabled.  That is the correct functional
    partitioning.  From Gregory Nutt.
  - Start-up:  Remove dependency on CONFIG_ARCH_FPU for inclusion of
    nvic.h in all other *_start.c files.  From Gregory Nutt.
  - Architecture initialization:  up_initialize() needs to know about
    ramlog_consoleinit()  From Jason Harris.

* Microchip PIC32MZ Drivers:

  - PIC32MZ GPIO:  Corrects the gpioirq when mismatch mode is
    selected.  From Abdelatif Guettouche.

* ARMv7-A:

  - ARMv7-A Build:  Fix 'cc1: warning: switch -mcpu=cortex-a7 conflicts
    with -march=armv7-a switch'  From Xiang Xiao.

* Nordic NRFxx

  - NRF52:  Fix compiler error in nrf52832_errdata.c when following
    C89.  From Erik Englund.

* STMicro STM32:

  - STM32 Configuration:  It seems one option in the timer configuration
    was lost at some point.  From Matias N.
  - STM32 start-up:  Inclusion of nvic.h should not be conditioned on
    CONFIG_ARCH_FPU.  From Mateusz Szafoni.
  - STM32H7 Clocking:  Fixes for STM32H7 RCC definitions.  From Jukka
    Laitinen.

* STMicro STM32 Drivers:

  - STM32F0/L USART:  A few fixes for USART.  From Mateusz Szafoni.
  - STM32F1/F30 FLASH:  RCC register access should not be offset by
    FLASH register base.  From Matias N.
  - STM32F7 CAN:  CAN fixes.  From Valmantas Paliksa.
  - STM32F7 I2C:  I2C Interrupt storm fix.  I2C track bad state.  Now
    we track bad state and so the SW reset only when it occurs.  From
    David Sidrane.
  - STM32F7 OTG: Fixes some macros related to OTGFS/OTGHS preventing
    OTGHS from working.  From Anthony Merlino.
  - STM32F7 OTG Device:  Correct hard-coded FIFO size that is wrong
    for OTG FS.  From Ramtin Amin.
  - STM32F7 QSPI:  Fix QuadSPI interrupts.  This commit essentially
    replaces wrongly named configuration variable STM32F7_QSPI_INTERRUPTS
    into CONFIG_STM32F7_QSPI_INTERRUPTS.  Also fixes some getreg/
    putreg where register addresses were used instead of register
    offsets  From Pierre-Olivier Vauboin.
  - STM32H7 I2C: Fix I2C4 compilation for STM32H7.  From Jukka
    Laitinen.
  - STM32H7 UART: Fix compilation for UART7, UART8 and I2C4s.  From
    Jukka Laitinen.
  - STM32L4 USB Device:  Add missing PWR USBV enable, correct two USB
    register bits  From Juha Niskanen.

* STMicro STM32 Boards:

  - STM32F103-Minimum:  USB reset was not working appropriately since
    the pin connected to D+ was incorrectly defined and the pullup/down
    logic was reversed.  From Matias N.
  - Nucleo-l476RG:  Fix some errors in GPIO logic when debug assertions
    are enabled.  From Matous Pokorny.
  - Nucleo-L476RG:  Add missing files of BMP180 example for Nucleo-L476RG.
    From Fabian Justi.
  - STM32F103-Minimum GPIO:  Fix some errors when debug assertions are
    enabled.  From Matous Pokorny.
  - STM32L4 PWM:  Fix register addr, en_bit and resetbit for pwm timers.
    From Fabian Justi.
  - STM32F746G-DISCO: I2C1 config on stm32f746g-disco. Typo in
    stm32f7/stm32_i2c.c  From Matthew Koch.

* C Library/Header Files:

  - include/limits.h:  Remove the duplicate TMP_MAX definitions.  The 
    standard requires that TMP_MAX defines be in stdio.h.  From
    Xiang Xiao.
  - include/sys/select.h:  Fix compiler error when
    CONFIG_NSOCKET_DESCRIPTORS is undefined.  From Xiang Xiao.
  - include/signal.h:  Add commented out definition of the si_addr
    field.  From Joao Matos.
  - include/unistd.h:  Fixed R_OK/X_OK definitions to match POSIX.
    From Joao Matos.

  - libs/libc/locale: Improved error handling in setlocale().  From Joao
    Matos.
  - libs/libc: Fixed return code in uname().  From Joao Matos.
  - libs/libc/stdio:  Restore support for printing NULL string as
    "(null)".  Legacy printf supported printing "(null)" in place for
    NULL string:  printf("null: %s\n", NULL); => null: (null).  This
    commit restores this functionality for new printf library.  From
    Jussi Kivilinna.

* Examples: apps/examples:

  - apps/examples/pca9635/pca9635_main.c: fix compilation error. From
    Mateusz Szafoni.

* Graphics Utilities: apps/graphics:

  - Various graphics apps (and apps/examples):  If CONFIG_VNCSERVER=y,
    don't call vnc_default_fbinitialize() directly.  That is a violation
    of the portable POSIX interface.  Instead, call
    boardctl(BOARDIOC_VNC_START);.  From Gregory Nutt.
  - apps/graphics/nxwidgets:  CWidgetControl::handleLeftClick now
    returns a value to indicate if the click was actually processed or
    not. CWidgetControl::pollMouseEvents:  Correct return value.  From
    Gregory Nutt.
  - apps/graphics/nxwidgets/:  NXWidgets::CNxWidgets:  Fix some issues
    with returned values.  On setting the widget size or position, it was
    returning false if there was no change in size or position.  Many
    places in the code were treating the false return value as an error.
    From Gregory Nutt.

* System Utilities: apps/system:

  - apps/system/nxplayer:  Fix some logical errors from recent commits.
    They broke the build of the nxplayer as a library vs. a task.