Skip to content
ReleaseNotes 583 KiB
Newer Older
        and '}'.
      - libc/unisted:  Change brings strtol() and related functions more
        conformant with POSIX.  Corner cases like strtol(-2147483648, NULL,
        10) now pass clang -fsanitize=integer without warnings.  From Juha
        Niskanen.
      - libc/unistd: sleep() was returning remaining nanoseconds (kind of),
        instead the remaining seconds.  From Eunbong Song.
      - termios.h:  Fix CRTSCTS define to include input and output flow. From
        Lorenz Meier.

    * Build/Configuration System:

      - configs/*/defconfig: The buttons example was changed to archbuttons.
        As a result all of the button configurations are broken and need some
        renaming in the defconfig files.  Noted by Frank Berkert.
      - config/*/defconfgs: More fallout from name change of
        apps/examples/buttons to archbuttons.
      - configs:  All QE encoder files.  Last change made timer hard-coded to
        3. Make configurable.
      - configs: Remove all traces of the no-longer existent ARCHBUTTONS
        example.  Remove all button configurations that depended on the
        obsoleted ARCHBUTTON example.
      - minnsh Configurations:  Remove minnsh configurations and support
        logic:  up_getc() and lowinstream.  This was an interesting exercise
        to see just how small you could get NuttX, but otherwise it was not
        useful:  (1) the NSH code violated the OS interface layer by callup
        up_getc() and up_putc() directly, and (2) while waiting for character
        input, NSH would call up_getc() which would hog all of the CPU.  Not a
        reasonable solution other than as a proof of concept.

    * Application Build/Configuration System:

      - Make.defs:  Using wrong link script if native window tool used with
        Cygwin.

    * apps/platform:

      - ESP32 Core v2 Platform: Fix some naming that prevented building the
        C++ support.

    * apps/nshlib:

      - NSH Library:  nsh_getdirpath(), use snprint instead of sprintf to
        avoid possibility of buffer overrun.  Noted by Chung Hwan Kim.

    * apps/system:

      - Remove std_readline().  This called up_getc() and up_putc() directly,
        violating the POSIX OS interface.

    * apps/netutils:

      - FTPD: Fixed bug that didn't free ftpd ressources on exit.  From Pascal
        Speck.
      - NTP client: Fix missing left parenthesis.  From Pierre-Noel Bouteville.
      - cJSON: Import patch to fix:cJSON_PrintUnformatted() behaves unexpected
        if an empty array shall be printed to text. from Jerome Lang
        2012-04-19. From Pierre-Noel Bouteville.
      - esp8266 update cosmetic and many bug fix.  From Pierre-Noel Bouteville.
      - FTPD:  Fix bug un ftpd file or socket may be not closed.  From
        Pierre-Noel Bouteville.

    * apps/modbus:

      - Modbus Master is missing many files and doesn't compile at all. More
        details in
        https://groups.yahoo.com/neo/groups/nuttx/conversations/topics/13734.
        From Vytautas Lukenskas.

    * apps/examples:

      - The examples/qencoder app was trying to init the encoder by a direct
        call into the board, cheating in a local header to declare the
        normally unavailable function prototype.  From Sebastien Lorquet.
      - apps/examples/timer: Should detach signal handler before exiting.
      - examples/qencode: The examples/qencoder app was trying to init the
        encoder by a direct call into the board, cheating in a local header to
        declare the normally unavailable function prototype.  From Sebastien
        Lorquet.
      - apps/examples/archbuttons:  Removed becaue it violates OS interface
        principles.
      - examples/adc, pwm, can: Remove all usage of BOARDIOC_ADCTEST_SETUP,
        BIOARDIOC_PWMSETUP.  Remove BOARDIOC_CAN_INITIALIZE.  CAN
        initialization is now done in the board initialization logic just like
        every other device driver.
      - examples/ostest: Add some delays to the pthread cancellation test.
        With deferred cancellation enabled, things happen more asynchronously.

NuttX-7.20 Release Notes
------------------------

The 120th release of NuttX, Version 7.20, was made on March 8, 2017,
and is available for download from the Bitbucket.org website.  Note
that release consists of two tarballs:  nuttx-7.20.tar.gz and
apps-7.20.tar.gz.  These are available from:

    https://bitbucket.org/nuttx/nuttx/downloads
    https://bitbucket.org/nuttx/apps/downloads

Both may be needed (see the top-level nuttx/README.txt file for build
information).

Additional new features and extended functionality:

    * Core OS:

      - Kernel Modules:  Module initializer may now return a symbol table.
      - Modules:  Extend the module interface so that we can access symbols
        exported by the module.
      - Shared Libraries:  In the FLAT build mode, kernel modules may be
        used to provide minimal shared library functionality.
      - Modules/Shared Libraries:  Add support for dependencies between
        modules.
      - Module Library:  Add build a configuration logic for a shared module
        library.
      - Shared Libraries: Implement module based shared libraries for the
        PROTECTED mode build.
      - Interrupt handling:  irq_attach() now includes an argument of type
        xcpt_t that retained with the handler address.  That argument is
        then provided to the interrupt handler when the interrupt occurs.
        The common parameter passing replaces the ad hoc parmater passing
        implemented in current drivers.  From Mark Schulte.
      - Adapt many drivers to utilize the IRQ argument feature.
      - All functions that used to return an xcpt_t old handler value, now
        return an int error code.  The oldhandler value is no longer useful
        with the recent changes to the interrupt argument passing.  Some of
        the functions effected include board_button_irq(), arch_phy_irq(),
        STM32 EXTI functions (Alarm, COMP, PVD), GPIO interrupt logic like
        kinetis_pinirq(), stm32_gpiosetevent(), and others.
      - IRQ subsystem:  Add support for smaller interrupt tables as
        described at
        http://www.nuttx.org/doku.php?id=wiki:howtos:smallvectors .  This
        is partially the work of Mark Schulte.

    * File Systems/Block and MTD Drivers

      - Pseudo File System:  Add support for soft links in the top-level
        psuedo file system.
      - Soft links:  Add an implementation of readlink().
      - Add fstat() support.  Implement fstat() method in binfs, romfs,
        unionfs, tmpfs, nxffs, nfx, hostfs, procfs, and smartfs.
      - fstat:  Add fstat() support to FAT.  From Alan Carvalho de Assis.

    * Graphics/Display Drivers:

      - Fonts: Add support for Tom Thumb small mono-space font. From Alan
        Carvalho de Assis.
      - Graphics:  Separated of font cache from graphics/nxterm.  Now in
        libnx/nxfronts where it can be shared with other grapics
        applications.

    * Networking/Network Drivers:

      - Ethernet drivers:  Add framework for serialization in the case where
        multiple low-priority work queues are used.

    * Other Common Device Drivers:

      - Add capabilities() method to SDIO interface.  Remove
        CONFIG_SDIO_WIDTH_D1_ONLY.  That should not be a global propertie,
        but rather a capability/limitation of single slot when there may be
        multiple slots.
      - Removed dmasupported() method from the SDIO interface.  That is now
        a bit in the capability set.
      - drivers/sensors: Add driver for the ST L3GD20 3 axis gyro.  From
        raiden00.

    * Atmel SAM3/4:

      - SAM3/4: Add support for ATSAM4S4C.  From Wolfgang Reißnegger.

    * NXP Freescale i.MX6 Boards:

      - Sabre 6quad:  Enable examples/smp test in i.MX6 SMP/NSH
        configurations.

    * NXP Freescale Kinetis:

      - Kinetis:  Added support for CHIP_MK60FN1M0VLQ12 chip.  From Maciej
13180 13181 13182 13183 13184 13185 13186 13187 13188 13189 13190 13191 13192 13193 13194 13195 13196 13197 13198 13199 13200 13201 13202 13203 13204 13205 13206 13207 13208 13209 13210 13211 13212 13213 13214 13215 13216 13217 13218 13219 13220 13221 13222 13223 13224 13225 13226 13227 13228 13229 13230 13231 13232 13233 13234 13235 13236 13237 13238 13239 13240 13241 13242 13243 13244 13245 13246 13247 13248 13249 13250 13251 13252 13253 13254 13255 13256 13257 13258 13259 13260 13261 13262 13263 13264 13265 13266 13267 13268 13269 13270 13271 13272 13273 13274 13275 13276 13277 13278 13279 13280 13281 13282 13283 13284 13285 13286 13287 13288 13289 13290 13291 13292 13293 13294 13295 13296 13297 13298 13299 13300 13301 13302 13303 13304 13305 13306 13307 13308 13309 13310 13311 13312 13313 13314 13315 13316 13317 13318 13319 13320 13321 13322 13323 13324 13325 13326 13327 13328 13329 13330 13331 13332 13333 13334 13335 13336 13337 13338 13339 13340 13341 13342 13343 13344 13345 13346 13347 13348 13349 13350 13351 13352 13353 13354 13355 13356 13357 13358 13359 13360 13361 13362 13363 13364 13365 13366 13367 13368 13369 13370 13371 13372 13373 13374 13375 13376 13377 13378 13379 13380 13381 13382 13383 13384 13385 13386 13387 13388 13389 13390 13391 13392 13393 13394 13395 13396 13397 13398 13399 13400 13401 13402 13403 13404 13405 13406 13407 13408 13409 13410 13411 13412 13413 13414 13415 13416 13417 13418 13419 13420 13421 13422 13423 13424 13425 13426 13427 13428 13429 13430 13431 13432 13433 13434 13435 13436 13437 13438 13439 13440 13441 13442 13443 13444 13445 13446 13447 13448 13449 13450 13451 13452 13453 13454 13455 13456 13457 13458 13459 13460 13461 13462 13463 13464 13465 13466 13467 13468 13469 13470 13471 13472 13473 13474 13475 13476 13477 13478 13479 13480 13481 13482 13483 13484 13485 13486 13487 13488 13489 13490 13491 13492 13493 13494 13495 13496 13497 13498 13499 13500 13501 13502 13503 13504 13505 13506 13507 13508 13509 13510 13511 13512 13513 13514 13515 13516 13517 13518 13519 13520 13521 13522 13523 13524 13525 13526 13527 13528 13529 13530 13531 13532 13533 13534 13535 13536 13537 13538 13539 13540 13541 13542 13543 13544 13545 13546 13547 13548
        Skrzypek.
      - Kinetis:  Add support for K64/K66 RTC lower half driver. From Neil
        Hancock.
      - Kinetis:  Extensive modification of MCG support based feature
        configuration.  From David Sidrane.
      - Kinetis:  Add support for K66 family.  From David Sidrane.
      - Kinetis:  Created a kinetis SIM versioning scheme pulled in by
        Kinetis chip.h.  From David Sidrane.
      - Created a kinetis PMC versioning scheme pulled in by Kinetis
        chip.h.  From David Sidrane.
      - Kinetis: Extend clock configuration logic.  Refactor
        implementation.  From David Sidrane.

    * NXP Freescale Kinetis Drivers:

      - Kinetis Ethernet:  Kinetis Support RMII clock source select.  This
        defined the RMII clock source select bits and allows the selection
        to be made via Kconfig. From David Sidrane.  Freedom-K66F uses
        ENET_1588_CLKIN as RMII clock
      - Kinetis Serial:  Added configurable 1|2 stop bits.
        HAVE_SERIAL_CONSOLE -> HAVE_UART_CONSOLE to be consistent with
        HAVE_LPUART_CONSOLE naming. From David Sidrane.
      - Kinetis LPserial:  Add LPUART serial driver and Clock
        configuartaion to freedom-k66f board.  From David Sidrane.
      - Kinetis USB device:  Refactor clocking in kinetis_usbdev.  From
        David Sidrane.

    * NXP Freescale Kinetis Boards:

      - Add support for NXP Freedom-k66f development board.  From David
        Sidrane.
      - Kinetis Freedom K66F:  Add Ethernet support.  From David Sidrane.
      - Add twr-k64f120m config.  From Marc Rechté.

    * NXP Freescale LPC43xx Boards:

      - Bamboo-200E: Add netnsh configuration.  From Alan Carvalho de Assis.
      - Add usbnsh config to Bambino 200E board.  From Alan Carvalho de
        Assis.

    * STMicro STM32:

      - STM32 F7: Allow board to configure HSE clock in bypass-mode. This
        is needed to enable HSE with Nucleo-F746ZG board.  From Jussi
        Kivilinna.
      - STM32 F7: stm32_allocateheap: allow use DTCM memory for heap.
        STM32F7 has up to 128KiB of DTCM memory that is currently left
        unused.  This change adds DTCM to main heap if
        CONFIG_STM32F7_DTCMEXCLUDE is not enabled.  From Jussi Kivilinna.
      - Add basic support for the STM32F334.  From Mateusz Szafoni.
      - STM32F33XX DAC, OPAMP, COMP, ADC, HRTIM headers.   From Mateusz
        Szafoni.

    * STMicro STM32 Drivers:

      - STM32 F7 SDMMC:  Add support for single bit operation on SDMMC2.
      - STM32 L4:  Port STM32L4 SAI driver from MDK.
      - STM32 L4:  Bring power management logic from Motrola MDK into NuttX.
      - STM32 L4:  Bring LPTIM driver in from the Motorola MDK.
      - STM32 L4 COMP: Port from Motorola MDK.

    * STMicro STM32 Boards:

      - STM32F429i Discovery: Add support for NxWM on STM32F429i-Disco
        board. From Alan Carvalho de Assis.
      - STM32F103 Minimum: Add support for nRF24 on STM32F103-Minimum
        board. From Alan Carvalho de Assis.
      - Olimex STM32 P407: Add a NSH protected build configuration; Enable
        procfs/ in all configurations.
      - Olimex STM32 P407: Add support for on-board microSD slot.
      - STM32F429i Discovery: add support for the L3GD20 driver.  From
        raiden00.
      - STM32F103 Minimum: Add support to QEncoder on STM32F103 Minimum
        board.   From Alan Carvalho de Assis.
      - Olimex STM32 P407:  Add external SRAM support.
      - Add basic support for the Nucleo F334R8 board.  From Mateusz
        Szafoni.
      - STM32F103 Minimum: Add SDCard support over SPI on STM32F103-Minimum
        board.  From Alan Carvalho de Assis.
      - STM32F103 Minimum: Add support to USB Device on STM32F103-Minimum
        board.  From Alan Carvalho de Assis.

    * C Library/Header Files:

      - compiler.h: packed_struct replaced by begin_packed_struct and
        end_packed_struct. Now support IAR style packed structures.  From
        Aleksandr Vyhovanec.
      - Math library: Leverage optimized ARMv8-M functions from BSD license
        ARM file.
      - Shared libraries:  Add a non-standard dllfnc.h function to set the
        symbol table.
      - C Library: Add a support for setvbuf(). This is a collaborative
        effort.  Alan Carvalho de Assis did the initial prototype.
      - C Library: Add setbuf() which is a trivial wrapper around setvbuf().
      - C library:  Add swab().
      - C library: Add strtoimax and strtoumax.
      - C library:  Add ffs(), rindex(), an index().  Add strings.h.  Move
        strcasecmp, strncasecmp, bzero, bcmp, and bcopy to where they
        belong in strings.h.h, not string.h.  bzero, bcmp, and bcopy are
        legacy functions; the contemporary counterparts should be used
        instead.
      - C library: Add fstatfs().
      - Update cwchar.  Add cwctype.

    * Build/Configuration System:

      - Add configuration support for builds with Ubuntu under Windows 10.

    * Tools:

      - tools/noteinfo.c: A hack tool that I use to analyze some sched_note
        output.  Needs a home and may be useful to others.
      - tools/mkconfig.c: Add logic to keep all of the buffering options in
        sync.

    * NSH: apps/nshlib:

      - NSH: Add support for the 'ln' command.
      - NSH ls command: if node is a symobolic link, use readlink() to get
        and the display the target of the symblic link.
      - NSH: Add readlink command.

    * Applications: apps/examples:

      - apps/examples/nxtext: Make line spacing configurable.
      - apps/system/zmodem/host/nuttx/compiler.h synchronized with
        nuttx/nuttx/include/nuttx/compiler.h.  From Aleksandr Vyhovanec.
      - apps/examples/sotest:  Add a test for shared libraries.
      - apps/examples/ostest:  Add a test of setvbuf().
      - apps/examples/stat:  Add a simple test for stat(), fstat(),
        statfs(), and fstatfs().

Works-In-Progress:

    * IEEE802.14.5/6LowPAN.  Hooks and framework for this effort were
      introduced in NuttX-7.15.  Work has continued on this effort on
      forks from the main repositories, albeit with many interruptions.
      The completion of this wireless feature will postponed until at
      least NuttX-7.21.

Bugfixes.  Only the most critical bugfixes are listed here (see the
ChangeLog for the complete list of bugfixes and for additional, more
detailed bugfix information):

    * Core OS:

      - SMP: There were certain conditions that we must avoid by preventing
        the release of the pending tasks while withn a critical section.
        But this logic was incomplete; there was no logic to prevent other
        CPUs from adding new, running tasks while on CPU is in a critical
        section.  This commit corrects this.  This is matching logic in
        sched_addreadytorun to avoid starting new tasks within the critical
        section (unless the CPU is the holder of the lock).  The holder of
        the IRQ lock must be permitted to do whatever it needs to do.
      - SMP: Make checks for CPU lock set more robust.  There are certain
        conditions early in initialization on during interrupt handling
        where things need to be done a little differently.
      - sched_cpulocked:  Avoid use of spinlock.  That has been reported to
        cause a deadlock (2016-12-28).
      - SMP: Fix a gap where we may try to make modifications to the task
        lists without being in a critical sections.  That permits
        concurrent access to the tasks lists and many subtle problems.
        This fix just remains in the critical section throughout the
        operation (and possible until the task is restore in the event of a
        context switch).  Makes a big difference in stability.
      - SMP: Fix an error in critical section logic when performing a
        context switch from an interrupt handler.  The g_cpu_irqset bit was
        not being set for the CPU so other CPUs did not know about the
        critical section.
      - SMP Signals: Fix some SMP signal delivery logic. Was not handling
        some critical sections correctly and was missing logic to signal
        tasks running on other CPUs.
      - SMP:  Fix timer related issues:  Round robin and sporadic
        scheduling were only being performed for tasks running on the CPU
        that processes the system timer interrupt.  Similary, CPU load
        measurements were only be processed for running on the CPU that
        receives the sampling interrupt.
      - sched_note: Fix spinlock instrumentation.  From Masayuki Ishikawa.
      - In all implementations of _exit(), use enter_critical_section() vs.
        disabling local interrupts.
      - sigtimedwait:  When timer expires, up_unblock_task() is called.
        This is okay in the single CPU case because interrupts are disable
        in the timer interrupt handler.  But it is insufficient in the SMP
        case.  enter_ and leave_critical_section() must be called in order
        to manage spinlocks correctly.
      - Fix a compile error: in sched_cpuload.c:Line136, the variables ts
        and secs are not defined if CONFIG_CPULOAD_ONESHOT_ENTROPY = 0.
        However, these variables are used regardless of
        CONFIG_CPULOAD_ONESHOT_ENTROPY at lines~180:onwards.  From rg.
      - CPU load: Correct computation of the nominal period to use when the
        source is a oneshot timer.
      - Cancellation points:  Fix some backward logic in conditional
        compilation.
      - Remove an unused variable when calling sigwaitinfo() and
        sigtimedwait().  From Masayuki Ishikawa.

    * File System/Block and MTD Drivers:

      - procfs:  Correct to snprintf-related errors in fs_procfsproc.c.
        Resolves issue #24.
      - Add logic to VFS rename:  If target of rename exists and is a
        directory, then the source file should be moved 'under' the target
        directory. POSIX also requires that if the target is a file, then
        that old file must be deleted.
      - Fix open() a block device with
        CONFIG_DISABLE_PSEUDOFS_OPERATIONS=y. From Masayuki Ishikawa.
      - File System: Don't build block driver proxy if PSEUDOFS_OPERATIONS
        are disabled.
      - sendfile():  Fix error introduced with commit
        ff73be870e38959b0aaee5961dc47b4b58dc2d86.  Noted by Maciej Wójcik.

    * Graphics/Graphic Drivers:

      - NxWM configurations.  If using a 7-bit character set, then the
        cursor character cannot be 137 (graphic block).  Use 95
        (underscore) instead.
      - NX server: Correct message queue names.  Should not be at /dev,
        but rather relative to /var/mqueue.

    * Common Drivers:

      - MMCSD_SDIO: Only wait for card ejected if card detection is
        supported. From Alan Carvalho de Assis.
      - Typos withim mtd/ with Macronix MX25L.  In
        NuttX/drivers/mtd/Make.defs letters X between M and 25 are
        missing.  Noted by Oleg Evseev.
      - USBMSC: Always set LUN readonly flag.  From Wolfgang Reißnegger.
      - drivers/lcd:  ssd1306_configspi() must have global scope.
      - MMC/SD SDIO:  Some drivers need to start DMA before sending CMD24
        and some AFTER.  From Alan Carvalho de Assis.
      - drivers/tone.c:  Handle configuration with multiple PWM channels.
        This resolves issue #30: Audio Tone Generator and PWM Multiple
        Output Channel options.
      - drivers/tone.c:  50% duty needs to be expressed a a fixed precision
        number.
      - drivers/spi/Kconfig:  There is too much SPI in the configuration
        menu; SPI Driver Support menu is empty.  From Maciej Wójcik.
      - option to enable Memory Card debug output was hidden with SD cards
        connected through SPI.   From Maciej Wójcik.
      - usbhost_cdcacm: fix tx outbuffer overflow and remove now invalid
        assert.  From Janne Rosberg.

    * Networking/Network Drivers:

      - Networking: Fixed some issues that prevented IPv6 from working with
        IPv4 enabled.  From Pascal Speck.
      - Networking: fixed a nullptr-dereference on iob_clone.  From Pascal
        Speck.
      - Ethernet: Need two work structures (minimum) in all Ethernet
        drivers so that pending poll work is not lost when an interrupt
        occurs.

    * ARMv7-R:

      - I found an issue inside the cp15_coherent_dcache function:  The
        "mcr CP15_BPIALLIS(r0)" should only be used with SMP
        configurationa. In non-SMP configuration this instruction could
        become undefined.  From Manohara HK.

    * Atmel SAM3/4 Drivers:

      - SAM3/4: GPIO bit numbering typo fixes.  From Wolfgang Reißnegger.

    * Atmel SAM3/4 Boards:

      - Add missing sched_note_*() calls in sam4cm SMP functions.

    * NXP/Freescale Kinetis:

      - Kinetis: Fixed wrong MCG VDIV calculation on new NXP K60.  From
        Maciej Skrzypek.
      - Kinetis: Need to set HAVE_UART_DEVICE when UART4 is selected.  From
        Maciej Skrzypek.
      - Kinetis MCG: Wrong FRDIV set in MCG_C1.  From Maciej Skrzypek.

    * NXP/Freescale Kinetis Drivers:

      - Kinetis Serial: Fixed compile error when UART5 is selected.  From
        Maciej Skrzypek.
      - Kinetis SDHC - Enable clock after selected.  From David Sidrane.
      - Kinetis:  Correct some SPI and I2C configuration issues.  From
        David Sidrane.
      - Kinetis Ethernet:  Add #define for number of loops for auto
        negotiation to complete.  From Marc Rechté.
      - Kinetis Werial:  Fixed up_rxint - did not disable the RX
        interuppts. There was an OR where and AND NOT was needed.  From
        David Sidrane.

    * NXP/Freescale LPC43xx:

      - LPC43 pinset definitions:  Add more 1 bit to pinset to reach
        SFSCLK0-SFSCLK3. Remove PINCONFIG_DIGITAL.  From Alan Carvalho de
        Assis.

    * NXP/Freescale LPC43xx Drivers:

      - LPC43 serial:  Correct conditional logic that selects /dev/ttySN.
        Problem noted by Alan Carvalho de Assis.

    * NXP/Freescale i.MX6:

      - i.MX6: Fix clearing GPT status register.  From Masayuki Ishikawa.

    * STMicro STM32:

      - STM32, STM32L4 Oneshot: Fix logic so that it can support multiple
        oneshot timers.
      - STM32 F7: Added missing ARCH_HAVE_RESET for F7.  From David Sidrane.
      - STM32:  Add missing STM32_BKP_BASE.  From David Sidrane.
      - STM32 and STM32F7: Fixes the BKP reference counter issue.  From
        David Sidrane.

    * STMicro STM32 Drivers:

      - Fix for SAMv7 SPI: DLYBS value was calculated, but never written to
        any registers. This led to incorrect timings on the bus.  From
        Michael Spahlinger.
      - STM32 QEncoder: Fix QEncoder driver, based on STM32L4 driver.  From
        Alan Carvalho de Assis.
      - STM32 QEncoder:  Enable clocking to the timer on QE setup; disable
        clock on QE teardown.
      - STM32 Ethernet: Need two work structures so that pending poll work
        is not lost when an interrupt occurs.  This change has also been
        ported to all all other effected Ethernet drivers.
      - STM32 OTGHS host:  stm32_in_transfer() fails and returns NAK if a
        short transfer is received.  This causes problems from class
        drivers like CDC/ACM where short packets are expected.  In those
        protocols, any transfer may be terminated by sending short or NUL
        packet.  From Janne Rosberg.  Adapted Janne Rosberg's patch to
        STM32 OTGHS host to OTGFS host, and to similar USB host
        implementations for STM32 L4 and F7.

    * STMicro STM32 Boards:

      - STM32F4 Discovery: Fix issues with QEncoder support.  From Alan
        Carvalho de Assis.

    * C Library/Header Files:

      - Add debug assertion in libdtoa to catch attempts to use floating
        point output formats from within an interrupt handler.  That will
        cause assertions or crashes downstream because __dtoa will attempt
        to allocate memory.  From Pierre-noel Bouteville.
      - libc: Fix ARMv7-A/R memcpy assembly.
      - Fix return value if x is NaN.  From Aleksandr Vyhovanec.

    * apps/nshlib:

      - NSH: Eliminate a warning when all memory inspection commands are disabled.

    * apps/graphics:

      - apps/graphics/traveler/tools: Fix linkage issue. The -lm should
        come after -o binname.  From Alan Carvalho de Assis.

    * apps/netutils:

      - The CONFIG_NETUTILS_HTTPD_PATH constant is used by httpd_mmap.c and
        httpd_sendfile.c but It was not present in Kconfig menu.  From
        Maciej Wójcik.

    * apps/examples:

      - Configurations that enable OSTEST must not disable signals.
      - apps/examples/ostest:  Was ignoring
        CONFIG_EXAMPLES_OSTEST_FPUTESTDISABLE.
      - In apps/examples/mtdpart/mtdpart_main.c where
        CONFIG_EXAMPLES_MTDPART_NPARTITIONS defining is checked should be
        #ifndef instead of #ifdef.  Noted by Oleg Evseev.