Skip to content
ReleaseNotes 319 KiB
Newer Older
    * Memory Management:

      - Granule Allocator:  (1) Add a new function to reserve un-allocatable
        regions in the granule heap.  (2) Add interfaces to support
        un-initializing a granule allocator.
      - Page Allocator:  Add a simple physical page allocator based on the
        existing NuttX granule allocator.  I am not certain if the granule
        allocator is sufficiently deterministic for long range use, but it
        gets get a page allocator in place for testing very quickly.
      - Remove CONFIG_MM_MULTIHEAP.  Non-multiheap operation is no longer
        supported.
      - sbrk():  sbrk() is now supported in the kernel build to permit
        dynamically sized, per-process heaps.
      - Per-Process Heaps:  Space at the beginning of the process data space
        is now reserved for user heap management structures.  In the kernel
        build mode, these heap structures are shared between the kernel and
        use code in order to allocate user-specific data.
      - User Heap Management:  When a privileged thread exits, we have to
        use the kernel allocator to free memory; when an unprivileged thread
        exits, we don't have to do anything... heap memory will be cleaned
        up when the address environment is torn down.
      - Inter-Process Shared Memory Support:  (1) Add implementation and
        documentation for shmget(), shmctl(), shmat(), and shmdt().  (2)
        Add system system calls to support the user call gate to the shared
        memory interfaces.  (3) Add platform-specific interface definitions
        needed to support the shared memory feature.
      - Virtual Page Allocator:  Add support for a per-process virtual page
        allocator.  This is a new member of the task_group_s structure.  The
        allocator must be initialized when a new user process is started and
        uninitialize when the process group is finally destroyed.  It is
        used by shmat() and shmdt() to pick the virtual address onto which
        to map the shared physical memory.

    * File Systems/Block Drivers/MTD:

      - SMART FS and SMART FS procfs updates from Ken Pettit.
      - The MTD Read-ahead/Write buffer layer appears is now functional.

    * Binary Formats:

      - Add logic to initialize the per-process user heap when each user
        process is started.

    * Graphics:

      - Change all occurrences of NxConsole to NxTerm.

    * Networking:

      - PHY Interrupts: (1) Standardize a PHY interrupt attachment
        interface. (2) Add support for an ioctl that can be used to notify
        an application when there is a change in the network status
        signalled by a PHY interrupt.
      - Improved Send Logic:  In the past, the first packet send to a new
        network peer would fail; there would be no entry in the ARP table
Gregory Nutt's avatar
Gregory Nutt committed
        for the peer and so an ARP request could replace that first packet.
        Now as an option if CONFIG_NET_ARP_SEND=y, all send logic will (1)
        check if the peer MAC address is in the ARP table and, if not, (2)
        send ARP requests periodically to get the mapping and (3) wait for
        the ARP response.  Then (4) when the ARP response is received then
        the actual send logic will be initiated.  Thus there may be a delay
        with the first packet sent to a new peer, but the packet should not
        be lost

    * Host Simulation:

      - Emulated SPI FLASH driver for the sim target from Ken Pettit.

    * Intel x86:

      - The default host is now x86_64 and the -m32 option will be
        automatically selected for simulation builds.

    * Intel 8051 Family:

      - Removed all support for the 8051 family architecture from the NuttX
        source tree.  The obsoleted code along with the removal patch can
        now be found at misc/Obsoleted/.  This code was removed because (1)
        although some functionality has been demonstrated, I am not aware of
        any really successful ports of NuttX to any 8051, and (2) the 8051,
        with its hardware stack, forces limitations and complications to the
        other architectures and make growth and development of NuttX more
        complex.

    * ZiLOG ZNeo Boards:

      - configs/16z:  Support for this board has been removed from the NuttX
        source tree (but still can be found in the misc/Obsoleted
        directory). This port is not ready for usage but may return to the
        NuttX tree at some point in the future.

    * Atmel SAM3/4 Boards:

      - SAM4E-EK: Add (1) a fully-functional ILI9341-based LCD driver and
        (2) a fully-functional NxWM configuration.

    * ARMv7-A:

      - Address Environments:  Add support for application address
        environments using the Cortex-A MMU.  Implement standardized
        platform-specific interfaces of NuttX address environment
        support.
      - Cache Operations:  Implement standardized, platform-specific cache
        operations.  These are called from the ELF loader in order to flush
        D-cache and invalidate I-cache after an ELF module has been loaded
        into memory. With this change, ELF modules work correctly on the
        SAMA5/Cortex-A platform.
      - Kernel Build: (1) Add implementations of system call gate. (2) Add
        CRT0 start-up file that can be linked with separately built user
        programs.  (3) Add support for delivery of use-mode signals in the
        kernel build.  (4) Add logic to initialize the per-process user heap
        when each user process is started.  (5) ARMv7-A exception handling
        needs to work a little differently if we support user mode
        processes.  This is because R13 and R14 are paged differently
        between user and SVC mode.
      - Shared Memory Support:  (1) Add logic necessary to handle remapping
        of shared memory on context switches.  (2) Extend virtual/physical
        address conversions to include addresses in shared memory.  (3) Add
        implementation of platform-specific shared memory support.

    * Atmel SAMA5D Drivers:

      - Implement all network ioctls, including the new ioctl to setup PHY
        event notifications.
      - In kernel build with address environment, need logic to map user
        virtual addresses to physical addresses, and vice versa.

    * Atmel SAMA5D Boards:

      - SAMA5D3 Xplained, SAMA5D3-EK, and SAMA5D4-EK:  Convert existing
        board specific PHY interrupt interfaces to use newly defined
        standard interface.
      - SAMA5D4-EK: Add a configuration for testing the kernel build
        configuration.  There are configurations to boot either from an SD
        card or from and in-memory ROMFS file system.
      - SAMA5D4-EK: Add documentation/support for Rev E. board.

    * STMicro STM32 Drivers:

      - Ethernet: Modified to support the change to the network ioctl
        signature changes.  Also add support for new ioctl to setup PHY
        event notifications.

    * STMicro STM32 Boards:

      - STM32F4Discovery with STM32F4DIS-BB: Add a network enabled NSH
        configuration for the STM32F4Discovery board with the STM32F4DIS-BB
        base board installed.  Includes support for the microSD card slot on
        the STM32F4DIS-BB base board.

    * TI Tiva Drivers:

      - Add support for the TI CC3200. From Jim Ewing.

    * TI Tiva Boards:

      - Add support for the TI CC3200 Launchpad. From Jim Ewing.

    * C Library:

      - Re-implemented poll() delay using sem_timedwait().

    * Configuration/Build System:

      - Export Target:  In the kernel or protected builds, (1) only the user
        libraries should be exported,  (2) do not copy internal header files
        or build scripts if this is a kernel or protected build, and (3)
        needs to bundle up the user C startup file (crt0), not the kernel
        head object for the kernel and protected builds.
      - Add logic that will permit us to build user libraries with different
        CFLAGS than kernel code.  This is needed because we need the
        -fno-common option when building ELF code to prevent SHN_COMMON
        relocations.

    * Applications:

      - NSH:  Extend the NSH network initialization logic.  There is now an
        option that will create a network monitor thread that will monitor
        the state of the link.  When the link goes down, the code will
        attempt to gracefully put the Ethernet driver in a down state; When
        the link comes back, the code will attempt to bring the network back
        up.
      - ELF Example:  The ELF test/example has been extended so the
        individual ELF test programs can link against the SYSCALL library
        (if it is available) or against the C library to eliminate or
        minimize the need for symbol tables.
      - Change all occurrences of NxConsole to NxTerm.
      - MTDRWB Example:  Add an example to test MTD R/W buffering.
      - OS Test Example:  Add a trivial test of sem_timedwait.

    * Application Configuration/Build System:

      - Import Target:  (1) Add logic that will allow building applications
        against a NuttX export package (vs. the nuttx/ source tree).  (2)
        Add .config file to export package.  (3) Create apps/import.  Create
        apps/import/Make.defs that does things like define CFLAGS; ELF build
        requires -fno-common in CFLAGS. Copy some base logic from
        nuttx/tools/Config.mk to apps/import/Make.defs.  (4) Add
        apps/import/scripts/gnu-elf.ld GCC linker script for ELF import
        builds.
      - All Makefiles:  (1) Add an install target to all makefiles.  For
        the import build, the top-level Makefile now does two passes: (1)
        builds libapp.a, then (2) installs the programs into apps/bin.  (2)
        Add program installation for CONFIG_BUILD_KERNEL in all Makefiles
        that build a main().  (3) For kernel build, the object file
        containing main cannot go into library because of name collisions.
        The object file must be handled as a special case in every Makefile.
      - All Built-In Programs:  With kernel build (CONFIG_BUILD_KERNEL),
        entry point to all tasks is main(), not some xyz_main().
      - NSH: Several commands must be disabled in the kernel build because
        they depend on interfaces that are not available outside of the
        kernel: dd, df, losetup, mkfatfs, mkdr, and ps.
      - apps/tools/:  (1) Add mkimport.sh to expload an NuttX import package
        and install in apps/import.  (2) Add mkromfsimg.sh  script to create
        a BOOT ROMFS filesystem image.
      - ELF and NxFLAT Examples: Do not build test cases that use
        task_create() if there is an address environment.

    * Tools:

      - refresh.sh: Add a tool to make refreshing configurations easier
        when you want to do a lot of them.
      - mksyscall.c: Build syscalls that do not need header files.
      - mkexport.sh: Add .config file to export package.
      - See above for new apps/tools scripts.

Efforts In Progress.  The following are features that are partially
Gregory Nutt's avatar
Gregory Nutt committed
implemented but present in this release.  They are not likely to be
completed soon.

    * Processes.  Much of the work in this release is focused on the
      realization of Unix-style user processes in NuttX.  There is more to
      be done, however.  The full roadmap and status is available at:
      http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes

    * XMega:  There are some fragments in place for an XMega port.  That
      port has not really started, however.

    * Galileo:  Similarly, there are fragments in place for an Intel Galileo
      port.  The port not been started in earnest either.

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:

      - Kernel build fixes: (1) IDLE TCB setup needs to indicate that the
        IDLE thread is a privileged, kernel thread.  (2) Don't build
        task_create() or task_spawn() interfaces if there is an address
        environment.  (3) posix_spawn() kernel proxy thread should be a
        kernel thread, not a user task.
Gregory Nutt's avatar
Gregory Nutt committed
      - Several pthread interfaces: Add const storage class to phthread
        parameters.  From Freddie Chopin.
      - sched/clock: Remove vestiges of g_tickbias;  need, instead, to apply
        time bias to g_basetime in order to provide the correct system time.
      - System Calls:  (1) Several typos fixed; corrected integration of
        exevc(), execvl(), posix_spawn, and posix_spawnp system calls. (2)
        If we are configured to use a kernel stack while in SYSCALL handling,
        then we need to switch back to the user stack to deliver a signal.

    * File Systems/Block Drivers/MTD:

      - procfs: Fix some procfs breakage introduced by reorganizing some
        non-reorganizable data structures.  From Ken Pettit.
      - AT45: In at45db_bwrite , the buffer is not increased when writing
        more than 1 page.  Sourceforge bug #34.

    * Binary Formats:

      - ELF relocations.  Some relocation types do not have a named symbol
        associated with them.  The design did not account for that case.
      - ELF Loader: Critical bugfix.. BSS was not being cleared.

    * Memory Management:

      - Granule allocator initialization uses wrong allocator to setting
        aside kernel memory.
      - Add a flag to group structure:  If the group is created by a kernel
        thread, then all resources in the group must be privileged.

    * Cryptogrphic Support:

      - crypto/cryptodev.c: Path segments reversed in include file path. Noted by Brennan Ashton.

    * Common Drivers:

      - Common CAN upper-half: In can_txdone, waiters on the semaphore
        should be informed regardless of the return value of can_xmit. First
        it returns -EIO if there are no new packets, and second the
        information of the waiters is about the last transferred packet.
        From  Daniel Lazlo Sitzer.

    * ARM:

      - System Calls: Fix a typo in system call when fetching parameter from
        the stack:  regs[REG_PC]+4 is the address, not regs[REG_PC+4].

    * STMicro STM32 Drivers:

      - STM32 F401 UART: Correct support for USART6 on this chip.  From
        Freddie Chopin.
      - STM32 FLASH fixes: use size_t instead of uint16_t, make interface
        more generic.  From Freddie Chopin.
      - Fix for UART7 and UART8 on STM32 clock enable from Aton.
      - CAN: At the end of the interrupt handler, the interrupts were being
        disabled, if all packets have been transferred when the interrupt
        handler was invoked. This is problematic, because the interrupt
        handler calls can_txdone of the upper half which can enqueue new
        packets to send. Removed the block altogether, because can_txdone
        calls can_xmit which disables interrupts if there are no new packets
        to send.  From  Daniel Lazlo Sitzer.
      - Additional STM32 CAN correction suggested by Max Holtzberg.

    * STMicro ST32 Boards:

      - configs/mikroe-stm32f4: Fix a few compile bugs and minor corrections
        to the mikroe-stm32f4 configuration source.  From Ken Pettit.

    * ARM9/ARMv7-A:

      - System Calls: Fix ARM7/9 and Cortex-A SYSCALLs:  For threads in SVC
        mode, the SVC instructions clobbers R14.  This must be taken account
        in the inline assembly.
      - Task Setup:  All tasks, even user mode tasks, must start in
        supervisor mode until they get past the start-up trampoline.
      - ARMv7-A:  Modify up_fullcontextrestore() for CONFIG_BUILD_KERNEL.
        It changed CPSR while in kernel.  That will crash if the new CPSR is
        user mode while executing in kernel space.  Fixed by adding a
        SYS_context_restore system call.  There is an alternative, simpler
        modification to up_fullcontextrestore() that could have been done:
        It might have been possible to use the SPSR instead of the CPRSR and
        then do an exception return from up_fullcontextrestore().  That
        would be more efficient, but I never tried it.

    * Atmel SAM3/4 Boards:

      - SAM3X/Arduino Due: Fix typo in sam3x_periphclks.h; add SCLK
        definitions to board.h header file.  From Fabien Comte.
      - SAM3 RTT: Only SAM4 family has RTTDIS bit in the MR register.
        SourceForge bug #33 from Fabien Comte.

    * C Library:

      - sscanf(): NuttX libc tried to guess how many characters to parse,
        extracted them into a buffer, then ran strtol() on that buffer.
        That guess was often wrong.  A better approach would be to call
        strtol() directly on the input data, using the endptr return value
        to determine how many characters to skip after parsing.  From Kosma
        Moczek.
      - Corrected atan2 implementations from Denis Arnst.
      - Change to lib_dtoa() to fix precision error from trailing zeroes.
        From Bob Doiron.

    * Applications:

      - Fix NSH PS command:  If there are no arguments, it could print
        garbage for argument list.

    * Configuration/Build System:

      - Null Example:  Need to include config.h it order know if this is or
        is not a kernel build.  This problem still exists in several other
        file that may need to define main().

NuttX-7.6
---------

The 106th release of NuttX, Version 7.6, was made on November 26, 2014,
and is available for download from the SourceForge website.  Note
that release consists of two tarballs:  nuttx-7.6.tar.gz and
apps-7.6.tar.gz.  Both may be needed (see the top-level nuttx/README.txt
file for build information).

Additional new features and extended functionality:

    * Core OS:

      - Moved name semaphore and message queue support out of the OS and
        into the VFS.  These improves the architecture by unifying the
        management of named resources, removes redundant resource management
        logic, and makes named semaphores and message queues  visible in the
        file system.  By default, these are visible at /var/lock and
        /var/mqueue.
      - Add SIGPOLL for use as part of the AIO implementation.
      - Remove CONFIG_MAX_TASK_ARGS configuration.  There is now no
        predetermined limit on the number of arguments that may be passed
        to a new task on start-up.

    * Work queues:

      - Add support for priority inheritance on the low priority worker
        queue.  That is, if a higher priority thread has scheduled work, the
        priority of the low priority worker thread(s) will be boost to the
        priority of the queuing thread.  At work is performed at at least
        thread priority of the scheduling thread.  If there are multiple
        worker threads, then all threads get reprioritized.  Currently
        only implemented for AIO.
      - Add support for multiple low-priority work queue threads.  This
        allows individual worker threads to block indefinitely for I/O as
        necessary without halting the entire work queue.

    * VFS/General Drivers:

      - Implement create() (as a macro).
      - Add pread() and pwrite().   Also added pread() and pwrite()
        system calls.
      - AIO: Add aio_read(), aio_write(), aio_return(), aio_error(),
        aio_suspend(), aio_canel(), lio_listio(), and aio_fsync().  This
        logic minimizes the creation of new threads by using the new
        features also added to the low priority work queue with this
        release.  It uses the new low priority worker thread interface
        to adjust the priority of the worker thread according to the 
        priority of the AIO client thread
      - Implement standard syslogmask() to control logging (also removing
        the non-standard syslog_enable()).

    * File Systems/Block Drivers/MTD:

      - Extend MTD support to the M25P16. From Sébastien Lorquet.

    * Drivers:

      - BCH (Block-to-Character): Add support for seeking in BCH.  From
        Sébastien Lorquet.

    * Graphics Support/Graphics-Related Drivers:

      - Add support for a generic ILI9341 LCD driver.  From Marco Krahl.
      - Add ANSI/VT100 foreground and background color commands.
      - Add driver for ST7565 LCD that works with NHD-C12864KGZ display.  From Pierre-noel Bouteville.

    * Networking:

      - Verify that multiple networks can be supported.
      - Add support for the case where there are multiple networks:  One
        being Ethernet and the other not (SLIP, PPP, ...).  The primary
        difference from the standpoint of the stack is that (1) ARP may or
        may not be necessary, (2) the size of the link layer header will
        vary, and (3) different MTUs and TCP receive windows may be used
        with each link.  Suggested by Brennan Ashton.
      - Extensions to UDP and TCP connection structures for the case of
        multiple networks.  In this case, assigned port numbers only have to
        be unique with respect to the IP address.  So, for example, you
        could have multiple port 80's, one on each network.

    * Host Simulation:

      - Removed the old, strange up_stdio.c and implemented a simulated UART
        driver to provide the console input.  The new logic starts a
        separate, Linux domain pthread to read the console input in raw mode
        and provides the incoming data to NuttX via standard NuttX domain
        IPCs.
      - Add support for 64-bit longjmp/setjmp in simulator platform.  This
        will permit operation of the simulation natively on a 64-bit
        platform.

    * ARMv7-M:

      - Add ARMv7-M CMSIS ITM header file and library.  From Pierre-noel
        Bouteville.
      - Add ARMv7-M CMSIS DWT and TPI header files. From Pierre-noel
        Bouteville.
      - Add ARMv7-M support to use ITM for SYSLOG debug output. Includes
        logic from Pierre-noel Bouteville.

    * Atmel SAM3/4 Drivers:

      - Add support for SAM3/4 basic serial TERMIOS and flow control.
        There are issues with IFLOW control: PDC or DMAC support is
        required.

    * Atmel SAM3/4 Boards:

      - SAM4E-EK: Add support for PHY interrupt.

    * Atmel SAMA5D Boards:

      - SAMA5D3-Xplained:  Add a configuration that provides a simple test
        for the EMAC and GMAC on the SAMA5D3 working together.
      - SAMA5D4-EK:  Add a configuration that provides a simple test for the
        EMAC0 and EMAC1 on the SAMA5D4 working together.

    * Freescale KL:

      - Add an I2C header file for the Freescale KL family.  From Alan
        Carvalho de Assis.

    * NXP LPC32xx:

      - Add support for tickless operation using the NXP LPC43xx.  From
        Brandon Warhurst.

    * SiLabs EFM32:

      - Add a basic port for the SiLabs EFM32 family.  Includes many files
        contributed by Pierre-noel Bouteville .

    * SiLabs EFM32 Boards:

      - Add board support for the EFM32 Gecko Starter Kit.
      - Add board support for the Olimex EFM32G8809128 STK.  NOTE: I am
        unable to test this configuration due to tool-related issues.
      - Add board support for the SiLbas EFM32GG Giant Gecko Starter kit.

    * STMicro STM32:

      - Add support for the STM32 F411RE from Serg Podtynnyi.
      - Add support for the STM32F103RG.  From Murilo Ponte.

    * STMicro STM32 Drivers:

      - STM32 F4:  Add logic that implement true high speed support for the
        STM32 OTGHS peripheral and concurrent support for both LS and HS
        OTG.  New OTGHS drivers provided for both device and host. From
        Brennan Ashton.

    * STMicro STM32 Boards:

      - STM32 Nucleo-F411RE: Extend this board configuration to also support
        the Nucleo-F411RE.  From Serg Podtynnyi.
      - Add support for the STM32F429i Discovery's LCD (SPI based).  From
        Marco Krahl.
      - configs/stm32f100rc_generic:  Removed this generic board configuration.
        I have decided to stop support of generic board configurations.  Generic
        board configurations do not provide support for any specific hardware
        but can be useful only if there are not other examples for the setup
        for a particular architecture. Not the case here.

    * C Library:

      - Add a mostly bogus wchar.h header file.  This file is mostly bogus
        because none of the wide character operations are currently
        supported in the Nuttx C library.  The file does provide the wchar_t
        types needed by some software, however.
      - Add isatty() function. From  Alan Carvalho de Assis.
      - Add mktemp(), mkstemp(), tmpnam() and tempnam().

    * Configuration/Build System:

      - Add a PRELINK macro to Config.mk.  From Kriegleder.
      - compiler.h:  Defines inline functions as not instrumented - this is
        relevant for anyone using instrumentation.  From Lorenz Meier.

    * Applications:

      - apps/interpreter/bas:  Added in the Michael Haardt's BAS 2.4 adapted
        for use by NuttX by Alan Carvalho de Assis.   Includes support for
        VT100 terminals and color commands.
      - Examples:  Added bastest/ which holds a special version of Michael
        Haardt's BAS 2.4 test files adapted for use by NuttX on a ROMFS file
        system.
      - Examples:  Add a simple UDP relay bridge for testing configurations
        with multiple networks.  Includes a host-side test driver for
        testing the bridge.
      - Netutils: Add implementation of timeouts for the netutils webclient.
        From Brennan Ashton
      - NSH: Add support for a custom NSH ROMFS startup image header file
        location.  From Martin Lederhilger.
      - OS test:  Add a simple test of named semaphores.
      - OS test:  Add AIO test case in OS test.

Efforts In Progress.  The following are features that are partially
implemented but present in this release.  They are not likely to be
completed soon.

    * Processes.  Much of the work in this release is focused on the
      realization of Unix-style user processes in NuttX.  There is more to
      be done, however.  The full roadmap and status is available at:
      http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes

    * XMega:  There are some fragments in place for an XMega port.  That
      port has not really started, however.

    * Galileo:  Similarly, there are fragments in place for an Intel Galileo
      port.  The port not been started in earnest either.

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):

I ran cppcheck against the entire code base and correct many latent bugs
including things as serious as memory leaks,  two locations where interrupts
were be disabled but never re-enabled, and errors in the Tickless mode of
operation.  My thanks to the developers of cppcheck!  I am impressed!

    * Core OS:

      - vfork():  Now that arguments are kept on the stack, the way that
        arguments are passed from parent to child in vfork() must change.
        This bug has always been present, but was not visible with the
        old strdup() way of passing arguments.
      - vfork() problem: If we get to vfork() via system call, then we 
        need to clone some system call information so that the return form
        the cloned system call works correctly.
      - Fixes to tickless operation code, especially in alarm mode.  From
        Brandon Warhurst.
      - Fix an important bug in the watchdog timer creation logic.
      - Calling mq_timedreceived() with immediate timeout was getting stuck
        and not timing out. Immediate timeout is achieved by setting absolute
        timeout value to past time, for example abstime={ .tv_sec=0,
        .tv_nsec=0 }. However absolute time was converted to relative time
        using unsigned integer arithmetic and resulted large ticks count by
        clock_abstime2ticks, instead of expected negative ticks value.
        Change corrects clock_abstime2ticks() to return negative ticks, if
        absolute time is in the past.  From Jussi Kivilinna.

    * Memory Management:

      - Fix a place in the memory manager where it explicitly assumed that
        the size of a pointer is 4 bytes.  That assumption was OK if the
        actual size is smaller but made the heap unstable when used with
        the x86_64 host simulation.
      - Granule Allocator:  If the INTR granule allocator mode is enabled,
        there is no semaphore to destroy.  From Lorenz Meier.

    * Networking:

      - Network routing:  I don't think that the net_route() function has
        ever worked correctly.  The source IP was updated in the match
        struct instead of the route IP.  From Brennan Ashton.
      - Move and rename IP header flag definitions.  The problem fixed here
        is that there IP header flag definitions were not available when TCP
        was disabled.  The IP flags are used in ICMP and IGMP.
      - Network routing:  Refuse to perform routing table lookups for the
        Broadcast IP address.  From Brennan Ashton.
      - Network routing:  Add logic to netdev_findbyaddr() to return the
        correct network device for the case where a broadcast
        address is used.  This change caused trivial ripples through other
        files because additional parameters are required for
        netdev_findbyaddr() when CONFIG_NET_MULTINIC.

    * File Systems/Block Drivers/MTD:

      - NXFFS Dump: Fix problems with redefinitions of fdbg macro.  With the
        fix to the syslog prototype, a LOG priority must now be the first
        parameter.  Fixed by replacing all occurrences of fdbg with
        syslog(LOG_DEBUG, and eliminating the macro redefinitions.  Noted
        by Sebastien Lorquet.
      - poll() was not waking up from signals (for example mq_notify()
        events).  From Jussi Kivilinna.
      - poll():  Add proper handling for sem_timedwait errnos.  From Jussi
        Kivilinna.
      - include/nuttx/fs/fs.h: Fix typo in conditional compilation.  From
        Alan Carvalho de Assis.

    * Graphics/Graphic-Related Drivers:

      - Remove warnings when CONFIG_NXTK_BORDERWIDTH is set to zero.  From
        Pierre-Noel Bouteville.

    * Common Drivers:

      - Make standard syslog and vsyslog POSIX compliant (also modify
        non-standard syslog functions for compatibility).
      - R/W buffering: Fix typo that can cause compilation error.

    * Atmel SAM3/4:

      - SAM4S: Add missing SPI0 clock configuration macro for the SAM4S.  From spasbyspas.

    * Atmel SAM3/4 Drivers:

      - SAM4E-EK: Fix an error in a USART1 pin number.

    * Atmel SAMA5D3/4 Drivers:

      - SAMA5DF4: Fix several typos that will prevented EMAC1 from
        initializing properly.

    * NXP LPC43xx:

      - Fixes to allow compile of lpc43_gpioint.c.  From Brandon Warhurst.

    * STMicro STM32:

      - Add missing ADC pinmap definitions for the STM32 F103R from Martin
        Lederhilger.

    * STMicro STM32 Drivers:

      - STM32 EXTI: Correct STM32 RTC EXTI bit definition.  From Lazlo.
      - STM32 IWDG, WWDG, DBGMCU: Fix watchdog stop bit usage.  From Lazlo.
      - STM32 OTGFS: Correct a typo in the STM32 OTGFS register bit definitions.

    * ARM:

      - ARM up_internal.h: Add protection from C++ name mangling in the
        ARM up_internal.h.  From Lorenz Meier.

    * MicroChip PIC32MX:

      - PIC32MX7: DEVCFG0 bit 2 must be set.  Writing bit 2 as zero can
        brick the CPU on some versions.  From Cris Kvist.

    * C Library:

      - The implementation of access() as vararg macro has the issue that
        any function call with the same name (even in a C++ class) will
        match with it and result in a compile error.  Replaced with a small
        function. This resolves the compile issue, and shouldn’t have
        negative side effects for users of the function. From Lorenz Meier.
      - The definition of strncpy() is that empty space should be zero-
        filled, the change adds the zero filling (See the POSIX spec here:
        http://pubs.opengroup.org/onlinepubs/7908799/xsh/strncpy.html). From
        Lorenz Meier.
      - limits.h:  Remove the definition of INT_FAST32_MIN which is already
        defined in stdint.h (the correct location).  From Lorenz Meier.

    * Applications:

      - apps/: Correct everything under apps to use the corrected syslog
        interfaces.  Remove any non-portable uses of syslog.
      - NSH: Fix ls -l output for regular files.
      - NSH: Fix reversed in/out file closing in DD command when an error
        occurs.  From Ken Pettit.
      - NSH:  Add logic to restart the console wait if an error occurs
        while reading from the console.  In USB console startup, the logic
        must be able to open the USB serial and receive 3 newlines.
        However, it the USB driver is disconnected or otherwise fails before
        the 3 newlines are received, the receive loop becomes a killer,
        infinite loop, CPU hog.  Noted by spasbyspas.
      - Netutils: Fix memcpy of host address in netlib_gethostaddr().  From
        Brennan Ashton.
      - Netutils:  If you make a DNS request before the DNS address it would
        cause an assertion. The state of the IP setting is not something the
        application should be aware of, it should only be concerned with
        whether or not the name was resolved.  From Brennan Ashton.
      - Netutils: Fix md5 hashing when digest[$i] islower that 16. From
        Sergey.
      - Stack Monitor: Fix compile problems introduced when the syslog()
        prototype changed; Also update Makefile for kernel build From
        Radoslaw Adamczyk.
      - Examples: Update NxTerm makefile for kernel-build issues. From
        Radoslaw Adamczyk.
      - Examples: Fixes to keypadtest from Pierre-Noel Bouteville.
      - Examples: These examples all set the IP address of eth1 but the
        netmask and gateway of eth0 if DHCP is enabled:  discover, tcpecho,
        webserver, xmlrpc. That can't be right.