Skip to content
ReleaseNotes 791 KiB
Newer Older
      - STM32F334-DISCO:  Add powerled example configuration.  From Mateusz
        Szafoni.
      - STM32F334-DISCO:  Add lower-half driver for SMPS (buck-boost onboard
        converter).  From Mateusz Szafoni
      - Nucleo-F334R8:  Add logic for zero latency high priority interrupts
        example.  From Mateusz Szafoni.
      - Nucleo-F334R8:  Add highpri example configuration.  From Mateusz
        Szafoni.
      - STM32 F4 Discovery:  Added support for the LIS3DSH accelerometer on
        the STM32F4 Discovery rev. C boards.  From Florian Olbrich.
      - STM32 F4 Discovery: ROMFS for STM32F4 Discovery board.  From Tomasz
        Wozniak.
      - STM32 F4 Discovery:  Add a USB MSC configuration.  From Alan Carvalho
        de Assis.
      - STM32 F4 Discovery:  RNDIS support on STM32F4Discovery + DM-STF4BB.
        NOTE: MAC address for the host side starts 0xaa.  This assignment
        scheme should be fixed later.  From Masayuki Ishikawa.
      - STM32 F4 Discovery:  Add STM32F4 Discovery board support for
        Nunchuck joystick.  From Alan Carvalho de Assis.
      - STM3240G-EVAL:  Add a configuration for testing the Framebuffer
        character driver using the LCD framebuffer front.
      - STM3240G-EVAL:  Mount procfs if enabled.
      - STM3240G-EVAL:  Add support for pdcurses and the pdcurses demo
        programs in the 'fb' configuration.
      - Clicker2-STM32:  Adds SD card, automount, and syslog file
        support and fixes a few minor issues.  From Anthony Merlino.
      - Clicker2-STM32:  Adds support for USB RNDIS device.  From Anthony
        Merlino.
      - Olimex STM32-H407:  Add serial support on the on-board UEXT
        connector.  Add USART6 for UEXT connector.   Add nsh_uext
        configuration and README update.  From Jan Pobríslo.
      - Nucleo-F410RB:  Add support for the nucleo-F410RB board.  From
        Gwenhael Goavec-Merou.
      - STM32F429i-DISCO:  Add framebuffer driver initialization.  Add a
        framebuffer (fb) configuration.
      - STM32F429i-DISCO:  Add logic to auto-mount procfs.  Enable procfs in
        all configurations that use NSH.
      - STM32F429i-DISCO:  Enable support for the STMPE811 touchscreen
        controller.  Enable touchscreen and also the touchscreen testa at
        apps/examples/touchscreen in the fb configuration.
      - STM32F429i-DISCO:  Convert NxWM configuration to use LTDC
        framebuffer driver instead of SPI serial.  Also reduce number of
        layers from 4 to 1 in fb configuration.  Only one layer is used.
      - STM32L476-MDK:  Add support for the on-board LEDs.
      - Nucleo-L496ZG:  Add DFSDM initialization.  From Juha Niskanen
      - Nucleo-L496ZG:  Add support for SDMMC driver.  From Miha Vrhovnik.
      - Nucleo-L496ZG:  Enable I2C4 bus with i2ctool in NSH configuration.
        From Jussi Kivilinna.
      - Nucleo-L496ZG:  Make HSE on Nucleo-L496ZG default to enable USB.
        From Miha Vrhovnik.
      - Nucleo-F746ZG:  Use the serial console over /dev/ttyACM0 by default.
        The Nucleo-F746ZG doesn't come with Arduio RS-232 shield, then it is
        better to use the serial over the /dev/ttyACM0 that is created
        automatically when the board is plugged in the computer.  From Alan
        Carvalho de Assis.
      - Nucleo-144:  Adds support for the Nucleo-144 boards with
        STM32F722ZE.  From Bob Feretich.

    * ZiLOG Z80

      - z80/include: compiler.h, limits.h, types.h:  Update SDCC/z80 files
        to include support for long long, inline, __FILE__, and __func__.

    * C Library/Header Files:

      - include/:  Add stdnoreturn.h.  Holds definitions for the C11
        noreturn keyword.  Applies to C too.
      - include/netinet/tcp.h:  Add trivial standard tcp.h header file.
      - libc:  Add support for readv() and writev().
      - libc:  Adds tcflow().
      - libc:  Add support for sigwait().
      - libnx:  Changes to allow the font subsystem to be built without
        enabling the entire graphics system (CONFIG_NX).  Adds
        CONFIG_NXFONTS and CONFIG_NXGLIB.  Needed to duplicate some Kconfig
        setting for NXFONTs if it can be configured and built independently
        of NX.

    * Tools:

      - tools/configure.sh:  Add special support so that you can start with a
        windows native configuration and install on a different host (and
        vice versa).
      - tools/configure.c:  Duplicate new functionaity added to configure.sh.
      - tools/configure.sh:  This commit adds a -m option for macOS. For
        anyone not aware, Apple renamed OSX to macOS recently; thus the 'm'
        instead of 'o'. This does not change the other uses of *_OSX to
        macOS. From jeditekunum.
      - tools/configure.c:  Update functionality to match last change to
        tools/configure.sh.

    * NSH: apps/nshlib:

      - apps/nshlib:  mount command no long uses the non-standard OS
        interface foreach_mountpoint().  Now simply cats /proc/fs/mount
        when there are no arguments to the mount command.
      - apps/nshlib:  df command no long uses the non-standard OS interface
        foreach_mountpoint().  Now simply cats /proc/fs/blocks or
        /proc/fs/usage.
      - apps/nshlib:  The free commands no longer used mallinfo() to get
        the state of the use heap.  Two reasons:  That is not useful
        information in the kernel build.  And (2) there are other memory
        resources of interest in other configurations such as the Kernel
        heap in PROTECTED and KERNEL builds, and the prog mem uses when
        FLASH is used to hold modifiable data.  The free command has been
        extended to just dump the content of procfs entries and to include
        all of these other memory resources of the procfs entries are
        available.

    * Examples/Tests: apps/examples:

      - apps/examples/fb:  Add a simple test for the framebuffer character
        driver..
      - apps/examples/ostest: sem_open() now returns SEM_FAILED in the
        event of a failure.
      - examples/ostest:  Extend cancellation test to make sure that
        cancelable threads waiting on a message queue or on a signal can be
        canceled.
      - Added a simple reader example for the LIS3DSH acceleration sensor
        on STM32F4Discovery.  From Florian Olbrich.
      - apps/examples/apa102:  Add a Rainbow example for APA102 LED Strip.
        From Alan Carvalho de Assis.
      - apps/examples/flowc:  Add a simple test of serial hardware flow
        control.
      - Add powerled driver example.  From Mateusz Szafoni.
      - apps/examples/ina219: A simple infinite loop that polls the INA219
        sensor and displays the measurements.  From Sebastien Lorquet.
      - apps/examples/alarm:  Add options for reading alarm value and
        canceling it.  From Juha Niskanen.
      - Add -n samples to lm75 app and replace Centigrade with Celsius.
        From Alan Carvalho de Assis.
      - apps/examples/adps9960:  Add ADPS-9960 example.  From Alan Carvalho
        de Assis.
      - apps/examples/obd2:  Add OBD2 example application.  From Alan
        Carvalho de Assis.
      - apps/examples/userfs:  Add a test case for verifying UserFS.
      - apps/examples/smps: add SMPS driver example.  From Mateusz Szafoni.
      - apps/examples/pdcurses:  Bring in pdcurses demos and make them
        conform to the NuttX coding style.
      - apps/examples/pdcurses:  Add a very simple example that just shows
        the entire character set (7-bit only).  It adapts to the size of
        the framebuffer and, hence, can be used with very tiny displays.
        In fact it looks really dumb on big displays.
      - apps/examples/nunchuck:  Add Nunchuck example application.  From
    * File System Utilities: apps/fsutils:

      - apps/fsutils/mkfatfs:  Move mkfatfs from the OS to here.

    * Network Utilities: apps/netutils:

      - apps/netutils/netlib:  Add netlib_ipv6adaptor() and
        netlib_ipv4adaptor().
      - apps/netutils/netlib:  Add helpers for reading the routing table:
        netlib_read_ipv4route() and netlib_read_ipv6route().
      - apps/netutils/netlib:  Add new utilities netlib_ipv[4|6]router()
        that can be used to determine the IP address of a router that would
        be used some some destination IP address that is not locally
        accessible.
      - apps/netutils/ftpc:  Adds support for IPv6 and fixes various
        transfer issues.   From Anthony Merlino.

    * CANUtilities: apps/canutils:

      - apps/canutils/libobd2:  Add libobd2 for NuttX.  From Alan Carvalho
        de Assis.

    * Graphics: apps/graphics:

      - graphics/traveler:  Convert to use the framebuffer driver.
      - apps/graphics/pdcurs34:  This commit brings the public domain
        pdcurses library into NuttX.  NuttX graphics support based on the
        framebuffer character drivers has been integrated.  Input is
        currently limited to a discrete joystick driver.

    * Wireless Utilities: apps/wireless:

      - apps/wireless/ieee802154/i8sak:  Adds socket interface support. You
        can now use both socket or char driver to control the MAC layer.
        From Anthony Merlino.
      - apps/wireless/ieee802154/i8sak:  Adds sniffer port option and a few
        other get/set parameters.  From Anthony Merlino.
      - apps/wireless/ieee802154/i8sak: Changes 'notif' to 'primitive'
        corresponding to the changes in the Kernel.  From Anthony Merlino.
      - apps/wireless/ieee802154/i8sak: Channel setting is now saved
        locally, so when performing a startpan or assoc, the channel
        previously set is still used, even though the MAC layer gets reset.
        From Anthony Merlino.
      - apps/wireless/ieee802154/i8sak:  Adds ability to get/set rxonidle
16191 16192 16193 16194 16195 16196 16197 16198 16199 16200 16201 16202 16203 16204 16205 16206 16207 16208 16209 16210 16211 16212 16213 16214 16215 16216 16217 16218 16219 16220 16221 16222 16223 16224 16225 16226 16227 16228 16229 16230 16231 16232 16233 16234 16235 16236 16237 16238 16239 16240 16241 16242 16243 16244 16245 16246 16247 16248 16249 16250 16251 16252 16253 16254 16255 16256 16257 16258 16259 16260 16261 16262 16263 16264 16265 16266 16267 16268 16269 16270 16271 16272 16273 16274 16275 16276 16277 16278 16279 16280 16281 16282 16283 16284 16285 16286 16287 16288 16289 16290 16291 16292 16293 16294 16295 16296 16297 16298 16299 16300 16301 16302 16303 16304 16305 16306 16307 16308 16309 16310 16311 16312 16313 16314 16315 16316 16317 16318 16319 16320 16321 16322 16323 16324 16325 16326 16327 16328 16329 16330 16331 16332 16333 16334 16335 16336 16337 16338 16339 16340 16341 16342 16343 16344 16345 16346 16347 16348 16349 16350 16351 16352 16353 16354 16355 16356 16357 16358 16359 16360 16361 16362 16363 16364 16365 16366 16367 16368 16369 16370 16371 16372 16373 16374 16375 16376 16377 16378 16379 16380 16381 16382 16383 16384 16385 16386 16387 16388 16389 16390 16391 16392 16393 16394 16395 16396 16397 16398 16399 16400 16401 16402 16403 16404 16405 16406 16407 16408 16409 16410 16411 16412 16413 16414 16415 16416 16417 16418 16419 16420 16421 16422 16423 16424 16425 16426 16427 16428 16429 16430 16431 16432 16433 16434 16435 16436 16437 16438 16439 16440 16441 16442 16443 16444 16445 16446 16447 16448 16449 16450 16451 16452 16453 16454 16455 16456 16457 16458 16459 16460 16461 16462 16463 16464 16465 16466 16467 16468 16469 16470 16471 16472 16473 16474 16475 16476 16477 16478 16479 16480 16481 16482 16483 16484 16485 16486 16487 16488 16489 16490 16491 16492 16493 16494 16495 16496 16497 16498 16499 16500 16501 16502 16503 16504 16505 16506 16507 16508 16509 16510 16511 16512 16513 16514 16515 16516 16517 16518 16519 16520 16521 16522 16523 16524 16525 16526 16527 16528 16529 16530 16531 16532 16533 16534 16535 16536 16537 16538 16539 16540 16541 16542 16543 16544 16545 16546 16547 16548 16549 16550 16551 16552 16553 16554 16555 16556 16557 16558 16559 16560 16561 16562 16563 16564 16565 16566 16567 16568 16569 16570 16571 16572 16573 16574 16575 16576 16577 16578 16579 16580 16581 16582 16583 16584 16585 16586 16587 16588 16589 16590 16591 16592 16593 16594 16595 16596 16597 16598 16599 16600 16601 16602 16603 16604 16605 16606 16607 16608 16609 16610 16611 16612 16613 16614 16615 16616 16617 16618 16619 16620 16621 16622 16623 16624 16625 16626 16627 16628 16629 16630 16631 16632 16633 16634 16635 16636 16637 16638 16639 16640 16641 16642 16643 16644 16645 16646 16647 16648 16649 16650 16651 16652 16653 16654 16655 16656 16657 16658 16659 16660 16661 16662 16663 16664 16665 16666 16667 16668 16669
        setting for MAC layer. From Anthony Merlino.
      - apps/wireless/ieee802154/i8shark:  Adds i8shark, a sniffer "adapter"
        that captures all 802.15.4 traffic, packages it into a Wireshark ZEP
        packet, and sends it to a host running Wireshark  From Anthony
        Merlino.

    * System Utilities (apps/system)

      - apps/system/ping and ping6:  This commit removes the ping and ping6
        commands from NSH and replaces then with the apps/system/ping and
        apps/system/ping6 built-in commands.  The NSH ping[6] commands had
        to be removed because they violated the portable POSIX OS interface.
        The apps/system/png and ping6 command uses the sem-standard
        IPPROTO_ICMP and IPPROTO_ICMP6 socket interfaces.

    * Platform-Specific Support (apps/platform)

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

    * Core OS:

      - Task Environment Creation:  Fix an error in the duplication of the
        child tasks environment in the special case where the parent's
        environment was created, but then all of the variables were unset.
        In that case, there is still an allocation in place but the size of
        the allocation is zero. This case was not being handled correctly
        when a child task attempts to create its environment and inherit the
        zero-size partent environment. Noted by Anthony Merlino.
      - timer_create():  Fix watchdog resource leak if cannot allocate a new
        timer. From Bruno Herrera.
      - OS Internal Functions: Internal OS functions should not return error
        information via the user errno variable:  This includes functions
        like file_seek(), file_read(), file_write(), etc.  The complete list
        is too long to duplicate here (please refer to the ChangeLog for
        details).
      - OS Internal Functions:  Not only should internal OS functions not
        modify the errno variable, they should never introduce cancellation
        points:  psock_connect(), psock_listen(), psock_getsockopt(), etc.
        The list is too long to duplicate here (please refer to the
        ChangeLog for details).
      - OS Internal Functions:  Create OS internal versions of many
        applications functions that were used by the OS.  The new versions
        differ from the application interfaces in that (1) they do not
        return error information via the errno variable, and (2) they never
        create cancellation points.  This includes new internal interfaces
        like nxsem_init() that is like sem_init(), etc.  There are too many
        to list here (see the ChangeLog for details).
      - Task Exit:  task_exithook.c fails to link if signals are disabled
        because was unconditionally trying to send the SIGCHLD signal to the
        parent in certain configurations.  Noted by Jeongchan Kim.
      - memalign():  Fix heap corruption caused by using unaligned chunk
        size.  Unaligned nodes generated by memalign later cause heap
        corruptions when nodes are shrink further (for example, 24 bytes ->
        8 bytes, when alignment is 16 bytes).  From Jussi Kivilinna.
      - SMP:  In sched/sched/sched_cpuselect.c, in order to find the cpu
        with the lowest priority thread, we have to remember the already
        found lowest priority.  Noted by Anonymous in Issue #75.
      - spinlocks:  Disable local interrupts in spin_setbit() and
        spin_clrbit() in order to avoid a deadlock condition.  From Masayuki
        Ishikawa.
      - atexit()/on_exit():  Clear atexit()/on_exit() function pointer
        before calling it.  On most archs, up_assert() calls exit() so
        without this change, if atexit() function triggers an assertion we
        are in endless loop.  From Juha Niskanen.

    * File System/Block and MTD Drivers:

      - tmpfs:  Fixed directory unlocking in tmpfs_opendir.   From Dmitriy
        Linikov.
      - fcntl():  fcntl() did not return success fail for F_SETFL.  Reported
        by Jussi Kivilinna.
      - tcdrain():  tcdrain() was recently added to the NuttX C library.
        But there is a problem.  The specification of tcdrain() requires
        that it be a cancellation point.  In order to do this, tcdrain was
        moved from the C library into the OS and the addition cancellation
        point hooks were added.  In non-FLAT builds, access via system calls
        is also now supported.
      - FS FAT:  Fix hard-fault when listing contents of FAT root.  From
        Jussi Kivilinna.
      - procfs: Correct a problem that was causing an apparent directory to
        be reported as a file instead of a directory by opendir.  This
        happened after adding these three new procfs entries: fs/block,
        fs/mount, and fs/usage.  Of course, there is no directory fs in this
        case, only three files that have fs/ in their relative pathnames.
        The logic was detecting that fs was the name of the enty to report,
        but it was then declaring that fs was a file (because fs/block is of
        type file).  This was fixed by adding a check for matching lenghts.
        i.e., if strlen(fs) != strlen(fs/block), then report fs as a
        directory instead of a file.
      - procfs:  Fix uptime being clse to maximum 32-bit value in certain
        config.  From Juha Niskanen.

    * Binary Loader:

      - binfmt/:  Don't schedule starthook if there are no constructors.

    * Graphics/Display Drivers:

      - LCD: ILI9341 initialize method not permitted to set errno.

    * Networking/Network Drivers:

      - Networking:  net/netdev/netdev_ifconfig.c: Was not returning all of
        the address info.
      - Networking: In some cases, packets are still not sent behind the
        router. I found that NuttX sends the ARP requests not to the router
        but to the target. Mistake in file net/route/netdev_router.c.  From
        Aleksandr Kazantsev.
      - SIOCGIFCONF and SIOCGLIFCONF IOCTL commands should only report on
        network adatpors in the UP state.
      - recvfrom():  Fix double leave_cancellation_point on error path.
        From Jussi Kivilinna.
      - send():  Verify that sock descriptor is valid.  Fixes assertion when
        using send on closed socket.  From Jussi Kivilinna.
      - sendto():  Remove assert check for null psock and buf input
        pointers.  Removes check as 'psock == NULL' altogether because that
        checked for later in psock_send and psock_sendto. Change null check
        for 'buf' so that it is handled same as in recvfrom.c (return
        -EINVAL instead of assert).  From Jussi Kivilinna.
      - sockgetname() files need to include udp/udp.h and tcp/tcp.h or
        otherwise NET_UDP_HAVE_STACK and NET_TCP_HAVE_STACK are undefined
        and the logic is never compiled.  Noted by Anthony Merlino.
      - dup()/dup2():  There was a reference counting problem in the TPC
        logic of net_clone().  net_clone() which is the common logic
        underlying dup() and dup2() for sockets.  When net_clone() calls
        net_start_monitor() and net_start_monitor() returns a failure
        (because the underlying TCP connection) then net_clone() must back
        out the reference count on the structure.  Problem noted by Pascal
        Speck and this implementation of the solution is based on his
        suggestion.
      - close():  There was a possible recursion that could eventually
        overflow the stack.  The error occurred when closing the socket with
        inet_close() while a socket callback was still queued.  When the
        socket callback was executed by devif_conn_event(), this resulted in
        a call to psock_send_eventhandler() with TCP_CLOSE flag set which
        then called tcp_lost_connection().  tcp_shutdown_monitor() then
        called tcp_callback() again, which again called
        psock_send_eventhandler(), and so on....  Noted by Pascal Speck.
        Solution is also similar to a solution proposed by Pascal Speck.
      - inet:  Add check for protocol before handing out TCP and UDP sockets.
      - IP Forwarding:  Fixes typo that caused build error when IP
        forwarding was enabled with CONFIG_NET_ICMPv6_NEIGHBOR enabled as
        well.  From Anthony Merlino.
      - IP Forwarding:  Do not add link layer header size to d_len inside
        devif_forward().  From Anthony Merlino.
      - TCP Networking:  When CONFIG_NET_TCP_WRITE_BUFF=y there is a
        situation where a NULL pointer may be dereferenced.  In this
        configuration, the TCP connection's 'semi-permanent' callback,
        s_sndcb was nullified in tcp_close_disconnect.  However, other logic
        in tcp_lost_connection() attempt to use that callback reference
        after it was nullifed.  Fixed in tcp_lost_connectino() by adding a
        NULL pointer change before the access.  This was reported by Dmitriy
        Linikov in Bitbucket Issue 72.
      - UDP Broadcat:  Fix some issues with regard to UDP broadcast
        handling.  This is Bitbucket Issue #77.
      - ICMP:  Fix an error in the poll logic.  It was assumed that the
        input parmeter pvconn was valid.  It was not.  Instead, the poll
        logic must work like the sendto() and recvfrom() logic:  It must
        keep a copy of the conn structure in the private data.
      - ICMPv6: Fixes several errors preventing icmpv6_radvertise.c from
        being compiled. Fixes conversions to network byte order (namely
        vlifetime, plifetime, mtu).  IPv6 source address is set to
        link-local IP address instead of the address in the netdev
        structure. This is in compliance to RFC 4861. RA didn't work on
        Linux before this change.  Finally, router prefix and prefix length
        are derived from the IPv6 address and netmask in the netdev
        structure. This seems to make more sense than using a predefined,
        separate prefix from the config.  From Sakari Kapanen.
      - ICMPV6:  icmpv6_input() needs to set d_len to 0 after consuming echo
        reply, otherwise, garbage will get sent out.  From Anthony Merlino.
      - ICMPV6:  Fix an error in the poll logic.  It was assumed that the
        input parmeter pvconn was valid.  It was not.  Instead, the poll
        logic must work like the sendto() and recvfrom() logic:  It must
        keep a copy of the conn structure in the private data.
      - IGMPv2 Send:  Fix incoming IGMP checksum calculation.  From Louis
        Mayencourt.
      - ARP:  Fix IGMP Ethernet address computation.  From Louis Mayencourt.

    * Wireless/Wireless Drivers:

      - CC1101:  CC1101 driver not permitted to set errno.
      - 6LoWPAN:  Correct an error in uncompressing multicast address.
      - 6LoWPAN:  Correct a bug in handling uncompressed frames (IPv6
        dispatch).  Adds a separate local variable, protosize, to keep track
        of the size of thep protocol header.
      - 6LoWPAN:  Fix an endian-ness problem in 6LoWPAN address
        decompression.  From Anthony Merlino.
      - 6LoWPAN:  The logic that extracts interface identifier from the IP
        address needs to be generalized to handle cases where the address is
        not a link local address.  From Anthony Merlino.

    * Common Drivers:

      - Serial: 16550 UART driver IOCTL method must not set errno; it must
        return a negated errno value.
      - LIS3DSH:  Added the argument parameter (FAR void *arg) to the
        interrupt handler provided by the LIS3DSH driver to fit the
        definition for ISRs in xcpt_t.  Changed the check for working queue
        availability in lis3dsh interrupt handler to use work_available()
        and not crash in case of an overrun.  From Florian Olbrich.
      - LIS2DH:  Fixes for self-test.  From Jussi Kivilinna.
      - LIS2DH:  Fix use of obsolete dbg macro.  From Jussi Kivilinna.
      - LIS331DL:  LIS331DL driver not permitted to set errno.
      - HTS221:  Power-on sensor for loading calibration data. From Jussi
        Kivilinna.
      - MCP2515:  Fix the MCP2515 Bit Rate Prescale calculation.   Fix BRP
        for SET_BITTIMING ioctl as well.  From Alan Carvalho de Assis.
      - STMPE811: Fix GPIO operation of STMPE811 driver.
        1. STMPE811_GPIO_DIR was defined for register name and later was
          redefined to be the pin direction mask for `stmpe811_gpioconfig`.
          I decided to change register name to be STMPE811_GPIO_DIR_REG, and
          keep pin direction mask STMPE811_GPIO_DIR, so that any external
          code that already use this driver will be unchanged.
        2. The STMPE811 register GPIO_DIR uses bit value 1 for output and 0
          for input, but `stmpe811_gpioconfig` set the opposite.
        3. The call to `stmpe811_gpiowrite` from inside of
          `stmpe811_gpioconfig` leaded to deadlock.
        From Dmitriy Linikov.
      - BQ2429X:  Add BATIO_OPRTN_SYSON for enabling BATFET after SYSOFF.
        From Jussi Kivilinna.

    * Simulation:

      - Simulation:  Serial and console drivers are not permitted to set
        the errno.

    * ARMv7-M:

      - ARM Stack Check:  Fix assert panic when both TLS and interrupt stack
        are enable.  From Jussi Kivilinna.

    * Infineon XMC4xxx Drivers:

      - XMC4 USIC: Kconfig was not selecting XMC4_USIC for USIC1. From Alan
        Carvalho de Assis.
      - XMC4 UART: Fix XMC4xxx USIC UART sginal to be high level when in idle.
        From Alan Carvalho de Assis.
      - XMC4 UART:xmc4_uart_configure() expects the channel# not uartbase as
        an input parameter.  From Alan Carvalho de Assis.
      - XMC4 UART:  Enable RX/TX status.  From Alan Carvalho de Assis.
      - XMC4 UART:  The Alternative Receive Interrupt was not being
        configured.

    * Infineon XMC4xxx Boards:

      - XMC4500-Relax:  Setup max. freq. 120MHz and setup pull-up to UART
        RXD pin.  From Alan Carvalho de Assis.

    * Microchip/Atmel SAMv7 Drivers:

      - SAMv7:  DAC and ADC drivers are not permitted to set the errno.
      - SAMv7:  Correct an error in RX DMA setup.  From Manish Kumar Sharma.
      - SAMv7 USB:  It is necessary to disable pre-emption and interrupts
        around a loop that copies TX data into the hardware in order to
        avoid a TX data underrun condition.  From Anthony Merlino.

    * NXP/Freescale LPC31xx Drivers:

      - LPC31xx:  Serial and console drivers are not permitted to set
        the errno.

    * NXP/Freescale LPC43xx:

      - lpc43xx:  lpc43_adc.c was being selected by the build system wehn
        DAC was selected.

    * NXP/Freescale LPC43xx Drivers:

      - LPC43xx Ethernet:  Fix some backward logic setting full-duplex and
        100mbps when autoconfiguration is disabled.  Noted by Anonymous in
        Issue #76.
      - lpc43xx: UART_RX pins should be configured with input buffers
        enabled. Otherwise it cannot be read.  From Alexander Vasiljev.

    * STMicro STM32:

      - STM32 F2:  Fixed build for STM32F20XX platforms when
        CONFIG_STM32_DMACAPABLE is enabled.  From Dmitriy Linikov.
      - STM32 F4:  Remove ltdc.h and dma2d.h. Those header files in that
        location permitted inclusion into application space logic and,
        hence, facilitated and encouraged calling into the OS and violating
        the portable POSIX OS interface.  The definitions in those header
        files were move the appropriate location in the counterpart,
        architecture specific files at arch/arm/src/stm32/dma2d.h and ltdc.h.
      - STM32 L4:  Build stm32l4_idle.c only if  CONFIG_ARCH_IDLE_CUSTOM is
        not enabled.  From Jussi Kivilinna.
      - STM32 F7:  Remove ltdc.h and dma2d.h. Those header files in that
        location permitted inclusion into application space logic and,
        hence, facilitated and encouraged calling into the OS and violating
        the portable POSIX OS interface.  The definitions in those header
        files were move the appropriate location in the counterpart,
        architecture specific files at arch/arm/src/stm32f7/dma2d.h and
        ltdc.h.

    * STMicro STM32 Drivers:

      - STM32:  DAC and ADC drivers are not permitted to set the errno.
      - STM32 ADC:  Clear pending interrupts.  From Mateusz Szafoni.
      - STM32 CAN:  Lower part of STM32 CAN driver
        arch/arm/src/stm32/stm32_can.c uses all three hw tx mailboxes and
        clears TXFP bit in the CAN_MCR register (it means transmission order
        is defined by identifier and mailbox number).
        This creates situation when order frames are put in upper part of
        CAN driver (via can_write) and order frames are sent on bus can be
        different (and I experience this in wild).  Since CAN driver API
        pretends to be "file like" I expect data to be read from fd the same
        order it is written. So I consider described behaviour to be a bug.
        Fixed by settin the TXFP bit in the CAN_MCR register (FIFO
        transmit order).  From comments by Alexey T, in Bitbucket Issue 73.
      - STM32 HRTIM:  Fix pclk calculation.  From Mateusz Szafoni.
      - STM32 HRTIM:  Fix burst mode prescaler update. From Mateusz Szafoni.
      - STM32 (alt) I2C:  Ensure proper error handling. Injecting data
        errors would cause the driver to continually reenter the isr with
        BERR an RxNE.  This fix allows the error to be cleared and
        propagated to the waiting task.  From David Sidrane.
      - STM32:  LTDC and DMA2D drivers are not permitted to set the errno.
      - STM32 RTC:  Workaround for potential subseconds race condition.  In
        all recent STM32 chips reading either RTC_SSR or RTC_TR is supposed
        to lock the values in the higher-order calendar shadow registers
        until RTC_DR is read. However many old chips have in their errata
        this silicon bug (at least F401xB/C, F42xx, F43xx, L15xxE, L15xVD
        and likely others):  "When reading the calendar registers with
        BYPSHAD=0, the RTC_TR and RTC_DR registers may not be locked after
        reading the RTC_SSR register. This happens if the read operation is
        initiated one APB clock period before the shadow registers are
        updated. This can result in a non-consistency of the three
        registers. Similarly, RTC_DR register can be updated after reading
        the RTC_TR register instead of being locked."
      - STM32 Serial:  Do not stop processing input in SW flow-control
        mode.  From Juha Niskanen.
      - STM32F33xxx ADC:  Add some publicly visable interfaces and some
        code to support injected channels.  From Mateusz Szafoni.
      - STM32F33xxx DMA:  Add public interface to handle with DMA
        interrupts.  From Mateusz Szafoni.
      - STM32F33xxx RCC:  Fix CAN clock enable.  From Mateusz Szafoni.
      - stm32 F4 I2C:  Ensure proper interrupt handling.  Injecting data
        errors that causes a STOP to be perceived by the driver, will
        continually re-enter the isr with SB not set and BTF and RxNE set.
        This changes allows the interrupts to be cleared and propagates a
        I2C_SR1_TIMEOUT to the waiting task.  From David Sidrane.
      - STM32 L4 Serial:  Do not stop processing input in SW flow-control
        mode.  From Juha Niskanen.
      - STM32 F7:  LTDC and DMA2D drivers are not permitted to set the errno.
      - STM32 L4:  DAC and ADC drivers are not permitted to set the errno.
      - STM32 L4 DAC:  Do not configure output pin if it is not used.  From
        Juha Niskanen.
      - STM32 L4 RTC, PM:  Small fixes to subseconds handling, ADC
        power-management hooks
      - STM32 F4 RTC:  Fix reading alarm value that is more than 24h in
        future.  From Juha Niskanen
      - STM32 L4 RTC:  Fix reading alarm value that is more than 24h in
        future.  From Juha Niskanen
      - STM32 L4 TIM:  Fix compilation of timers with complementary outputs
        when not PWM_MULTICHAN.  From Juha Niskanen.
      - STM32 L4 RCC:  Restore backup-registers after backup-domain reset.
        From Jussi Kivilinna.
      - STM32 L4 RTC:  Correct RTC_SSR and RTC_TR read ordering.  In all
        recent STM32 chips reading either RTC_SSR or RTC_TR is supposed to
        lock the values in the higher-order calendar shadow registers until
        RTC_DR is read. Change the register read ordering to match this and
        don't keep a workaround for a hypothetical race condition (not in
        any L4 errata, lets for once assume ST's silicon works as it is
        documented...)
      - STM32 L4 RTC:  Init mode was never exited because nested locking in
        rtc_synchwait() disabled backup domain access.  From Juha Niskanen.
      - STM32 L4 RTC:  Use backup register magic value instead of INITS
        bit.  The INITS (bit 4) of RTC_ISR register cannot be used to
        reliably detect backup domain reset. This is because we can operate
        our device without ever initializing the year field in the RTC
        calendar if our application does not care about correct date being
        set.  Hardware also clears the bit when RTC date is set back to year
        2000.  From Juha Niskanen.
      - STM32 L4 RTC:  Put back the SSR race condition workaround.  ST has
        confirmed that the issue has not been fixed, and that it applies to
        STM32 L4 too (was not in errata sheets due to documentation bug) See
        discussion: https://community.st.com/thread/43710-issue-with-rtc-maximum-time-resolution .
        From Juha Niskanen.
      - STM32 F7 BBSRAM:  Avoid assert in stm32_bbsram_savepanic. If panic
        happens before stm32_bbsram is initialized, stm32_bbsram_savepanic
        caused additional assert panic. Function has null pointer check, so
        drop DEBUGASSERT.  From Jussi Kivilinna.
      - STM32 F7 I2C: fix I2C_M_NORESTART handling.  From Jussi Kivilinna.
      - STM32 F7 I2C:  Restore bus frequency after I2C reset.  Copy
        frequency restoration fix from STM32L4 I2C driver to STM32F7 I2C
        driver.  From Jussi Kivilinna.
      - STM32 F7 RTC:  Fix reading alarm value that is more than 24h in
        future.  From Juha Niskanen

    * STMicro STM32 Boards:

      - STM32F334-DISCO:  Add missing ram_vectors configuration in linker
        script.  From Mateusz Szafoni.
      - Nucleo-F334R8:  Add missing ram_vectors configuration in linker
        script.  From Mateusz Szafoni.
      - Nucleo-F334R8:  Add Missing ADC trigger configuration tot he highpri
        configuration.  From Mateusz Szafoni.
      - STM3240G-EVAL:  The timer frequencies (BOARD_TIMx_FREQUENCY) are
        incorrectly defined in board.h.  Since the APB prescalers are set to
        divide by 4 and 2 respectively, the frequencies should be "2xAPBx"
        as said in the comment.  The correct frequencies are already defined
        but as STM32_APBx_TIMx_CLKIN.  From Mattias Edlund.
      - STM32F429i-DISCO:  The ltdc configuration has been deleted because
        it violated the portable POSIX OS interface.  It used
        apps/examples/ltdc and include ltdc.h and dma2d.h which were also
        removed for the same reason.

    * ZiLOG Z80

      - configs/z80sim and xtrs:  Serial driver lower halfs ioctl methods
        should return a negated errno value, not set the errno variable.
      - z80 Make.defs:  Fixes dependency generation with newest SDCC
        compiler.
      - configs/z80sim:  Fix a naming problem.  Also, don't try to build the
        serial driver if CONFIG_NFILE_DESCRIPTOR=0.
      - Z80:  Makefile fix for use with current SDCC.

    * Build System

      - configs/:  All defconfig filess that include
        CONFIG_NET_ICMPv6_SOCKET=y need to select CONFIG_SYSTEM_PING6=y and
        deselect CONFIG_DISABLE_POLL.
      - configs/:  All NX configuration... Because of recent changes to
        libnx/nxfonts, Supported bit per pixel must be separated specified
        for NXFONTs too and need to match the select BPP for NX.
      - Build system:  Fix CONFIG_BUILD_KERNEL logic directories that have
        ubin and kbin subdirectories.  Conditional logic was fine for
        CONFIG_BUILD_FLAT and CONFIG_BUILD_PROTECTED but generated useless
        dependencies if CONFIG_BUILD_KERNEL.

    * C Library/Header Files:

      - libc/stdio:  Build the lib_noflush() and lib_snoflush() stubs even
        if CONFIG_FILE_DESCRIPTORS=0.  They may still be needed.
      - libc and libnx:  When the libraries are built into two libraries, a
        user space library and a OS space library (as in the PROTECTED and
        KERNEL build).  Then the user space library must not use the OS
        internal interfaces; similarly, the OS must avoid using the
        userspace interfaces so that it does not muck the errno value or
        create spurious cancellation points.
      - libc/match:  Use of exp() vs expf() in logf() caused function to be
        slow.  From Alan Carvalho de Assis.
      - libnx:  Fixes a memory leak that is caused because the client message
        queue is not unlinked after the client disconnects from the NX
        server.  From Masayuki Ishikawa.
      - sscanf():  Fix sscanf() character conversion (%c): do not add '\0' at
        the end as for strings, cause, for example, parsing one character
        will fill two bytes: character itself and zero one '\0' after it, so
        will overflow one byte variable argument and corrupt memory for
        variables allocated after it.  From Oleg Evseev.

    * Tools

      - tools/:  configure.sh and configure.c should redirect stdout to
        /dev/null but should not suppress stderr output.

    * NSH: apps/nshlib:

      - apps/nshlib/:  Avoid truncating the strcmp result in the parser
        into a unsigned char variable.  nshlib/nsh_netcmds.c:  Check for
        valid hostip before using it.   From Bruno Herrera.
      - apps/nshlib/:  Fix resouce leak in 'dd' commenad when 'if=' or
        'of=' params are repeated in the command line.  For example:
          dd if=/dev/null if=/dev/zero of=/dev/null or
          dd if=/dev/zero of=/dev/zero of=/dev/null.   From Bruno Herrera.
      - apps/nshlib:  This commit eliminates the ping and ping6 commands
        from NSH and replaces them with 'built-in' commands at
        apps/system/ping and ping6.  The original NSH version of ping[6]
        commands violated the portable POSIX interface and, hence, had to
        be removed. The new system/ping and ping6 built-in commands uses
        the new IPPROTO_ICMP AF_INET and IPPROTO_ICMP6 AF_INET6 datagram
        sockets to implement ping.
      - apps/nshlib: Fix parsing of empty strings when CONFIG_NSH_CMDPARMS
        is not defined. Problem noted by Juha Niskanen.

    * Examples/Tests: apps/examples:

      - All configurations that use NXIMAGE or NXHELLO must select
        NX_MULTIUSER.  All configurations that use examples/nxterm must
        enable CONFIG_LIB_BOARDCTL.
      - All configurations that use NXLINES must select NX_MULTIUSER.  All
        configurations that use the NX server need to have larger POSIX
        messages.
      - apps/examples/adc:  Fix g_adcstate.count initialization.  From
        Masayuki Ishikawa.
      - apps/examples/elf:  Remove low-level interfaces and replace with
        call to exec().
      - apps/examples/nxflat:  Remove low-level interfaces and replace with
        call to exec().
      - examples/ostest:  Works around a bug in printf() when cancellation
        points are enabled.  printf() is a cancellation point because it
        calls write().  This is correct according to OpenGroup.org.
        However, printf holds the stdio library semaphore when it is
        canceled and this leaves the semaphore in a bad state.  No fix for
        the printf bug yet.
      - apps/examples/nx:  The NX example no longer supports single user
        mode.
      - apps/examples/nxtext:  The nxtext example no longer supports single
        user mode.
      - apps/examples/nxhello now supports only multiuser mode.
      - apps/examples/nximage now supports only multiuser mode.
      - examples/nxlines:  Now supports only multiuser mode.

    * Network Utilities: apps/netutils:

      - apps/netutils/ftpc:  Fix some crazy comparisons to determine is a
        file is an absolute path.  Noted by Anthony Merlino.

    * System Utilities (apps/system)

      - apps/system/i2ctool: Fixed i2ctool write operation in `no restart`
        mode (flag `-n`).  It seems that I2C driver has changed a bit since
        i2ctool was written, so now i2ctool sends repeated start even if
        `no restart` flag (-n) was passed to it.  From Dmitriy Linikov.

NuttX-7.24 Release Notes
------------------------

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

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

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

Additional new features and extended functionality:

    * Core OS:

      - SMP: Introduce spin_lock_irqsave() and spin_unlock_irqrestore().
        These APIs are simplified version of enter_critical_section()
        and leave_critical_section() to protect data (e.g. registers) in
        SMP mode.  By using these APIs inside drivers, performance will
        be improved.  From Masayuki Ishikawa.
      - System Timer:  Replace critical section APIs with spinlock APIs.
        (64bit only).  If SMP=n or SMP=y && SPINLOCK_IRQ=n, this works
        in the same way as before.  If SMP=y && SPINLOCK_IRQ=y, performance
        will be improved.  From Masayuki Ishikawa.
      - POSIX Timers: Replace critical section APIs with spin lock APIs in
        clock_gettime.c.  This change will improve performance for SMP
        systems but nothing changes for non-SMP systems.  In SMP mode,
        the running TCB is not always at the g_readytorun.head.  From
        Masayuki Ishikawa.
      - SMP: Introduce spin_lock_wo_note() and spin_unlock_wo_note().  These
        APIs are used in sched_note.c to protect instrumentation data.  The
        difference between these APIs to exsiting spin_lock() and
        spin_unlock() is that they do not perform instrumentation to avoid
        recursive call when SCHED_INSTRUMENTATION_SPINLOCKS=y.  From
        Masayuki Ishikawa.
      - Interrupts:  Add a configuration option to show interrupt
        information via a procfs file.

    * File Systems/Block and MTD Drivers

      - VFS:  Add support for truncate() and ftruncate().
      - FAT, SmartFS, UserFS, UnionFS, TmpFS, NFS: Add truncate() support.
      - FAT.  Effectively handles the situation when a new file position is
        within the current sector.  Accelerates the work of the FS with a
        multitude of operations to write small pieces of data within the
        current sector.  From Aleksandr Vyhovanec.

    * Graphics/Display Drivers:

      - HiletGo OLED:  Add configuration support for HiletGo SSD1306 OLED.
      - lcd/ft80x:  This commit adds an FTDI/BridgeTek FT80x GUI driver.  It
        is untested (I don't even have hardware yet) and, hence, it is
        marked as EXPERIMENTAL).

    * Networking/Network Drivers:

      - 6LoWPAN:  Adds configuration options for specifying preloaded
        address contexts for compression  From Anthony Merlino.
      - TCP:  Introduce tcp receive window control based on I/O buffer.
        NOTE:  The algorithm is still experimental but useful for http
        streaming.  From Masayuki Ishikawa.
      - UDP:  Add an implementation of UDP write buffering.
      - Routing Tables:  Adding ftruncate() support eliminates an issue
        in file-based routing table management system.
      - Telnet:  Add support for Telnet character mode  From Masayuki
        Ishikawa.

    * Other Common Device Drivers:

      - drivers/input/ft5x06.c:  Add a driver for the FT5x06 capacitive,
        multi-touch, touchscreen controller.
      - drivers/input/ft5x06:  Add a polled mode of operation for the FT5x06
        in attempt to work around the fact that the LPCXpresso-LPC54628
        chose a non-interrupt pin for the FT5x06 interrupt.  Driver is still
        not yet functional.
      - drivers/power/bq2429x.c:  Add trickle charging mode  From Juha
        Niskanen.
      - drivers/sensors:  Add support to MAX44009 ambient light sensor.
        From Juha Niskanen.
      - drivers/sensors:  Added support for LIS3DH accelerometer sensor.
        From Matt Thompson.
      - drivers/eeprom:  EEPROM driver for AT24xx compatible EEPROMs.
        From Sebastien Lorquet.

    * Simulation

      - sim:  Add support for a RAM MTD driver and initialization for use
        with SmartFS.
      - sim:  Add support for testing NXFFS.

    * ARM:

      - ARMv7-A, ARMv7-R, ARMv7-M:  Add atomic read-add-write and
        read-subtract-write functions.

    * Infineon XMC4xxx:

      - XMC4xxx:  Refactor PLL setup, refactored PLL/CLK config, easier,
        checks for correctness, call go_os_start if STACK_COLORIZED, smarter
        config of EXTCLK output freq.  From David Alessio.

    * Infineon XMC4xxx Boards:

      - Add FPU to xmc4 ostest.  Remove +x from makefiles, preserve
        .gdbinit across make clean, add FPU support to ostest on xmc4,
        add FPU test to ostest on xmc4  From David Alessio.

    * Microchip/Atmel SAMD/L Drivers:

      - SAMD: SAMD External Interrupt Controller (EIC) support  From Matt
        Thompson.
      - SAMD/L:  Added Analog Comparator basic initialization  From Matt
        Thompson.
      - SAMD/L:  Added FDPLL clock support.  Fixed sequence of OSC32K
        calibration setup.  From Matt Thompson.
      - SAMD/L: Added loading factory USB calibration data from NVRAM.
        From Matt Thompson.
      - SAMD/L: Added experimental DMA support to SPI driver.  spi_exchange()
        uses a pair of DMA channels for TX and RX.  From Matt Thompson.

    * Microchip/Atmel SAM3/4 Boards:

      - Flip&Click SAM3X:  Add board support for the Mikroe Flip&Click
        SAM3X.
      - Flip&Click SAM3X:  Adds basic board support for the HiletGo OLED.

    * Microchip PIC32MZ

      - PIC32MZEF:  Add architectural support for the PIC32MZEF family.

    * Microchip PIC32MZ Boards

      - Flip&Click PIC32MZ:  Adds board support for the Mikroe Flip&Click
        PIC32MZ board.
      - Flip&Click PIC32MZ:  Add board support for HiletGo OLED.
      - Flip&Click PIC32MZ:  Add an nxlines configuration for use in
        testing the custom HiletGo Click board.

    * NXP Freescale LPC43xx Drivers:

      - LPC43xx:  Adapt LPC176x RTC driver for the LPC43xx.  From Gintaras
        Drukteinis.
      - LPC43xx:  Add Windowed Watchdog Timer (WWDT) driver.  Tested on
        LPC4357 but should be compatible for all LPC43xx MCUs.
        From Gintaras Drukteinis.
      - Leverage the LPC54xx SD/MMC back to the LPC43xx (where it came from
        originally).

    * NXP Freescale LPC43xx Boards:

      - Bambino-200e:  Add LPC43 SDMMC board support to Bambino-200E.  From
        Alan Carvalho de Assis.

    * NXP Freescale LPC54xx:

      - LPC546xx:  Added basic architectural support for the LPC546xx
        family.

    * NXP Freescale LPC54xx Drivers:

      - LPC546xx:  Basic NSH configuration includes support for UARTs,
        SysTick timer, GPIOs, LEDs, and buttons
      - LPC546xx:  Additional drivers include EMC, I2C, Ethernet
      - LPC546xx:  Implement GPIO interrupt support.
      - LPC546xx:  And unverified SPI driver is included.
      - LPC546xx:  Ported LPC1788 LCD driver to use the LPC54xx pin.
      - LPC546xx:  Bring in LPC43xx SD/MMC driver from
        https://github.com/Smoothieware/smoothie-nuttx/tree/master/nuttx/arch/arm/src/lpc43xx
        and adapt for use with the LPC43xx
      - LPC546xx:  Add DMA driver ported from the LPC43xx GPDMA driver.
      - LPC546xx:  Bring in WWDT driver from LPC43.
      - LPC546xx:  Add an RTC driver and a RTC character driver lower half.
      - LPC546xx:  Add support for a random number generator.
      - LPC546xx:  Add an Ethernet driver.

    * NXP Freescale LP54xx Boards:

      - LCXpresso-LPC54628:  Added support for the LPCXpresso-LPC54628
        board.  The initial bring-up used a basic NSH port.
      - LCXpresso-LPC54628:  On-board SDRAM is also supported
      - LCXpresso-LPC54628:  Add support for I2C2 and for the I2C tool to
        the NSH configuration.
      - LCXpresso-LPC54628:  Add support for the USER button.  Enable the
        apps/examples/button test in the NSH configuration.
      - LCXpresso-LPC54628:  Add the fb configuration for testing the LCD.
      - LCXpresso-LPC54628:  Add support for the the FT5x06 touchscreen
        controller.  Enable the driver as well as the apps/examples
        touchscreen test.
      - LCXpresso-LPC54628:  Add an NxWM configuration.
      - LCXpresso-LPC54628:  Add logic to bring up SDMMC.
      - LCXpresso-LPC54628:  Add logic to register the RTC character driver
        if it is enabled.  Enable the RTC and RTC character driver in the
        NSH configuration.
      - LCXpresso-LPC54628:  Add a netnsh configuration that was be used to
        test the Ethernet driver.
      - LCXpresso-LPC54628:  Add LittlevGL graphics demo configuration.

    * On Semiconductor LC823450

      - LC823450 SMP improvements:  (1) Apply irq_spin APIs to
        modifyregXX, (2) Do not use modifyreg32() to enable Mutex, (3)
        Modify IRQ control for i2s.  Apply irq_spin APIs to
        dma/syscontrol/usbdev.  From Masayuki Ishikawa.
      - LC823450:  LC823450 http streaming improvements: (1) Use spinlock
        APIs in lc823450_gpio.c.  (3) Fix a potential race condition in
        up_enable_irq(), (3) Use spinlock APIs instead of critical section
        APIs, (4) Enable HRT_TIMER in lc823450_timerisr.c. (5) Use spinlock
        APIs instead of critical section APIs. (6) Fix race conditions in
        dma/usbdev.  From Masayuki Ishikawa.
      - LC823450: Introduce DVFS.   This version only supports manual mode
        and Vdd1 is fixed to 1.2V.  From Masayuki Ishikawa.
      - LC823450:  Refactor timer driver.  Add MTM timer APIs for DVFS.
        Introduce up_rtc_gettime() for CONFIG_RTC_HIRES.  Introduce idle
        time calculation in DVFS.  Also, DVFS autonomous mode based on CPU
        idle time is supported.  NOTE: voltage control is still disabled.
        From Masayuki Ishikawa.

    * On Semiconductor LC823450 Boards

      - LC823450-XGEVK:  I2S interrupt will be handled on CPU0 with this
        change.  Assign CPU1 to lpwork.  This change will improve load
        balancing for networking with RNDIS.  From Masayuki Ishikawa.
      - LC823450-XGEVK: Enable SPINLOCK_IRQ and NXPLAYER in rndis.  From
        Masayuki Ishikawa.
      - LC823450-XGEVK: LC823450 http streaming improvements: (1) In SMP
        mode, H/W interrupts should be handled on CPU0 to avoid deadlocks.
        (2) Call up_enable_irq() to assign CPU0 for IRQ handling.  (3)
        Enable HRT_TIMER, LC823450_MTM0_TICK, SPINLOCK_IRQ, (4) Enable
        NET_TCP_RWND_CONTROL, NXPLAYER_HTTP_STREAMING_SUPPORT (rndis only)
        From Masayuki Ishikawa.
      - LC823450-XGEVK:  Enable DVFS in lc823450_bringup.c.  Enable DVFS
        in audio and rndis. Add Telnet character mode to rndis.  From
        Masayuki Ishikawa.
      - LC823450-XGEVK:  Explicitly assign I2S IRQ handling to CPU0.  From
        Masayuki Ishikawa.
      - LC823450-XGEVK:  Enable RTC_HIRES instead of RTC_DATETIME (audio/
        rndis).  Disable TCP_WRITE_BUFFERS and change SCHED_LPWORKPRIORITY
        (rndis). Update SMP and DVFS related part.  From Masayuki Ishikawa.

    * STMicro STM32:

      - STM32 F7:  Add support for the STM32F72x/73x family. From Bob
        Feretich.

    * STMicro STM32 Drivers:

      - STM32 HRTIM:  Add interface to change outputs SET/RST configuration.
        From Mateusz Szafoni.
      - STM32 HRTIM:  Add interface to get timer clock frequency,
        calculation, add compare/capture registers significant bits
        checking.  From Mateusz Szafoni.
      - STM32 HRTIM:  Add interface to set timer frequency, fix slave timers
        reset configuration, change POWER_INFO to TIMER_INFO  From Mateusz
        Szafoni.
      - STM32 HRTIM:  Add repetition support and fix enum overflow  From
        Mateusz Szafoni.
      - STM32 HRTIM:  Add HRTIM push-pull mode configuration.  From
        raiden00pl.
      - STM32 FLASH:  Add progmem support for STM32L15XX From Juha Niskanen.

    * STMicro STM32 Boards:

      - configs/photon: Adds BOARD_TIMn_FREQUENCY macros  From Anthony
        Merlino.
      - configs/indium-f7:  Adds support for the RAF Research Indium-F7
        board.  From Bob Feretich.
      - Rename the configs/stm32f0discovery board directory to
        configs/stm32f051-discovery.  There are others stm32f0discovery
        boards with different MCUs and different peripherals on the board.
        From Alan Carvalho de Assis.
      - configs/stm32f072b-discovery:  Adds support for stm32f072b-disco
        board. This is the board. I added the LEDs of this board and tested
        the compilation.  From Alan Carvalho de Assis.
      - configs/stm32f103-minimum:  Add AT24 EEPROM support on STM32F103-
        Minimum board  From Alan Carvalho de Assis.
      - configs/stm32f103-minimum:  Add support to BMP180 on BluePill
        (stm32f103-minimum) board.  From Alan Carvalho de Assis.
      - configs/stm32f334-disco:  Add buck converter and boost converter
        logic.  From Mateusz Szafoni.
      - configs/stm32f103-minimum:  Add zerocross support to STM32F103-
        Minimum board  From Alan Carvalho de Assis.
      - configs/stm32f103-minimum:  Add OLED SSD1306 support to
        STM332F103-Minimum  From Alan Carvalho de Assis.
      - configs/stm32f103-minimum: Add board support to MAX6675 Thermocouple
        sensor  From Alan Carvalho de Assis.
      - configs/stm32f746g-disco: Add stm32f746g-disco Ethernet configuration.
        Add USART1 support (connected to the USB virtual serial port)  From
        Louis Mayencourt.