Skip to content
ReleaseNotes 791 KiB
Newer Older
      - examples/udp:  Port numbers need to be configurable to work with
        6LoWPAN.  Need to bind the client socket to a port number.  This was
        not required before so is a apparently a change in the UDP packet
        dispatch logic.
      - examples/udp:  Enable testing with the broadcast address.
      - examples/nettest:  Support target boards on both ends of the test.
        Separate out network initialization so that it may be used by both a
        target server and a target client.  Fix client/server naming
        confusion; Add command line option to select the server address on the
        target.  Add support for both enpoints on target boards vs. one on a
        target and one on the host PC.
      - examples/nettest:  The send buffer size is now a configuration option.
      - examples/nettest:  Loopback option should be available in Kconfig for
        PktRadio.
      - examples/keypadtest: REMOVED and warehoused in the Obsoleted
        repository.  This was just a bad clone of apps/examples/hidkbd for a
        keypad driver that was removed years ago.  It also uses illegal
        function calls into the OS.  So it has no purpse:  It is redundant, it
        uses illegal interfaces, and is a test for non-existent code.
      - examples/ipforward: Add an IP forwarding example using only TUN
        devices.  Test extended to test forwarding of ICMPv6 multicast messages.
      - Implement powermonitor example for ltc4151 current and voltage
        monitor.  From Giorgio Groß.
      - examples/pf_ieee802154:  Add for testing PF_IEEE802154 sockets.  Add
        PANID to command line options; Cannot bind to address zero... There is
        no counterpart to INADDR_ANY for these radios (not now at least).
      - examples/dac: add DAC example.  From Juha Niskanen.

    * Network Utilities: apps/netutils:

      - netutils/telnetc:  This a port of libtelnet to NuttX.
      - netutils/telnetd and users of telnetd:  Add support for IPv6.
      - netutils/thttpd:  Remove the netstats demo.  This depends on an
        illegal function call and cannot be supported.  That example could be
        replaced with logic that uses the procfs network entries as was done
        for NSH which had the same issue.  But I am too lazy to implement that.
      - netutils/netlib:  Add support for PktRadio IOCTL commands.
      - netutils/netlib:  Add a helper to decode short addresses.

    * Wireless Utilities: apps/wireless:

      - wireless/ieee802154/i8sak:  Rewrote i8sak to be test CLI for IEEE
        802.15.4 MAC layer.  From Anthony Merlino.
      - wireless/ieee802154/i8sak:  Updates to i8sak for
        association/beacon-enabled changes to IEEE 802.15.4.  From Anthony
        Merlino.
      - wireless/ieee802154/i8sak:  Add option to make it easy to send large
        frame for testing purposes.  From Anthony Merlino.
      - wireless/ieee802154/i8sak:  Add scan command.  From Anthony Merlino.
      - wireless/ieee802154/i8sak:  Add coordinfo command allowing you to
        poll various attributes related to the coordinator.  From Anthony
        Merlino.
      - wireless/ieee802154/i8sak:  Add a option to retry on failures to the
        assoc command (usually meaning tht the coordinator is not yet up).
      - iwireless/ieee802154/8sak:  Add reset command to reset the MAC layer.
        Adds option to assoc command -t to specify how long to wait for a
        response from the Coordinator.  From Anthony Merlino.
      - ieee802154/i8sak:  Adds command to trigger regdump of radio.  From
        Anthony Merlino.

    * System Utilities (apps/system)
15062 15063 15064 15065 15066 15067 15068 15069 15070 15071 15072 15073 15074 15075 15076 15077 15078 15079 15080 15081 15082 15083 15084 15085 15086 15087 15088 15089 15090 15091 15092 15093 15094 15095 15096 15097 15098 15099 15100 15101 15102 15103 15104 15105 15106 15107 15108 15109 15110 15111 15112 15113 15114 15115 15116 15117 15118 15119 15120 15121 15122 15123 15124 15125 15126 15127 15128 15129 15130 15131 15132 15133 15134 15135 15136 15137 15138 15139 15140 15141 15142 15143 15144 15145 15146 15147 15148 15149 15150 15151 15152 15153 15154 15155 15156 15157 15158 15159 15160 15161 15162 15163 15164 15165 15166 15167 15168 15169 15170 15171 15172 15173 15174 15175 15176 15177 15178 15179 15180 15181 15182 15183 15184 15185 15186 15187 15188 15189 15190 15191 15192 15193 15194 15195 15196 15197 15198 15199 15200 15201 15202 15203 15204 15205 15206 15207 15208 15209 15210 15211 15212 15213 15214 15215 15216 15217 15218 15219 15220 15221 15222 15223 15224 15225 15226 15227 15228 15229 15230 15231 15232 15233 15234 15235 15236 15237 15238 15239 15240 15241 15242 15243 15244 15245 15246 15247 15248 15249 15250 15251 15252 15253 15254 15255 15256 15257 15258 15259 15260 15261 15262 15263 15264 15265 15266 15267 15268 15269 15270 15271 15272 15273 15274 15275 15276 15277 15278 15279 15280 15281 15282 15283 15284 15285 15286 15287 15288 15289 15290 15291 15292 15293 15294 15295 15296 15297 15298 15299 15300 15301 15302 15303 15304 15305 15306 15307 15308 15309 15310 15311 15312 15313 15314 15315 15316 15317 15318 15319 15320 15321 15322 15323 15324 15325 15326 15327 15328 15329 15330 15331 15332 15333 15334 15335 15336 15337 15338 15339 15340 15341 15342 15343 15344 15345 15346 15347 15348 15349 15350 15351 15352 15353 15354 15355 15356 15357 15358 15359 15360 15361 15362 15363 15364 15365 15366 15367 15368 15369 15370 15371 15372 15373 15374 15375 15376 15377 15378 15379 15380 15381 15382 15383 15384 15385 15386 15387 15388 15389 15390 15391 15392 15393 15394 15395 15396 15397 15398 15399 15400 15401 15402 15403 15404 15405 15406 15407 15408 15409 15410 15411 15412 15413 15414 15415 15416 15417 15418 15419 15420 15421 15422 15423 15424 15425 15426 15427 15428 15429 15430 15431 15432 15433 15434 15435 15436 15437 15438 15439 15440 15441 15442 15443 15444 15445 15446 15447 15448 15449 15450 15451 15452 15453 15454 15455 15456 15457 15458 15459 15460 15461 15462 15463 15464 15465 15466 15467 15468 15469 15470 15471 15472 15473 15474 15475 15476 15477 15478 15479 15480 15481 15482 15483 15484 15485 15486 15487 15488 15489 15490 15491 15492 15493 15494 15495 15496 15497 15498 15499 15500 15501 15502 15503 15504 15505 15506 15507 15508 15509 15510 15511 15512 15513 15514 15515 15516 15517 15518 15519 15520 15521 15522 15523 15524 15525 15526 15527 15528 15529 15530 15531 15532 15533 15534 15535 15536 15537 15538 15539 15540 15541 15542 15543 15544 15545 15546 15547 15548 15549 15550 15551 15552 15553 15554 15555 15556 15557 15558 15559 15560 15561 15562 15563

      - apps/system/composite: Update to apps/system/composite assocated with
        big changes to the composite device logic.  From Frank Benkert.
      - apps/system/composite:  Remove CDC/ACM and MSC configuration logic.
        This belongs in the OS composite initialization.  Add and argument so
        that you can select the USB composite configuration to be attached.
        Restore USB tracing; remove unused field in a structure.  Remove
        configuration settings that are no longer used.  Fix configuration
        selecting.. was setting the port number, not the configure ID.  Also
        add a configuration option to select the default configuration.
      - apps/system/composite: Add a configuration option to the boardctl()
        calls to support multiple composite device configurations dynamically.
      - apps/system/composite:  Remove references to USBMSC.  There still
        dependencies on CDC/ACM in the serial USB trace output.
      - apps/system/telnet:  Add Telnet Chat deamon and and client from
        libtelent.

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

      - Fix ELF loader up_checkarch on ARM arch.  From Cristian Condurache.
      - pthread_mutex_unlock():  Missing check for the case where
        pthread_mutex_lock() is called when the mutex is not locked.  In that
        case, it would increment the underlying semaphore above 1.  This is
        the fix for a problem noted by initialkjc@yahoo.com.
      - sig_timedwait():  Pending signal structure used after it has been
        releasd.  From anonymous Bitbucket Issue 59.
      - mm_mallinfo:  do heap end debug assert check with heap semaphore held.
        From Jussi Kivilinna.
      - sched/:  Fix return value in sched_setaffinity().  From Masayuki
        Ishikawa.
      - Work Queues:  work_queue() must cancel existing work prior to queuing
        new work, otherwise the work queue list structure can become
        corrupted. Problem noted by Pascal Speck.
      - waitpid():  Corrects two problems when CONFIG_SCHED_HAVE_PARENT +
        CONFIG_SCHED_CHILD_STATUS are enabled:  (1) Was erroring out if the
        waited for task had already exited, and (2) was not freeing resources
        when a wait was completed.  From Boris Astardzhiev.

    * File System/Block and MTD Drivers:

      - VFS poll():  Fix timeout calculation.  From Jim Paris.
      - VFS poll():  Fix poll for regular files and block devices.  Open Group
        documentation says that poll (and select) support regular files and
        that 'Regular files shall always poll TRUE for reading and writing'.
        From Jussi Kivilinna.
      - VFS epoll():  Fix epoll_wait function.  From Simon Piriou.
      - Smart FS:  Fix wrong freeing of device structure and use-after-free
        issues on error paths.  From Jussi Kivilinna.
      - MTD FLASH drivers:  The byte write method of several drivers had a
        cloned error:  It was not locking the bus while performing byte write
        operations.
      - MTD M2PX: If we READ while a write/erase is pending, the command is
        ignored and the write/erase continues. If we dont catch this situation
        we will return garbage to the user because the flash will not execute
        the command.  So READ MUST wait for write completion, and before that,
        the bus must be locked since it's a precondition to calling
        waitwritecomplete().  From Sebastien Lorquet.
      - MTD FLASH drivers: Clone Sebastien Lorquet's m25px change to at25,
        is25xp, ramtron, and sst25xx.
      - MTD W25:  Add missing locking and fix SPI_SELECT usage for
        w25_unprotect.  From Jussi Kivilinna.
      - MTD W25:  Wait for BUSY flag to clear in w25_readid and
        w25_unprotect.  W25Q128 datasheet says that all instructions expect
        'Read Status Register' and 'Erase/Program Suspend' are ignored when
        BUSY flag in status register is '1'. Therefore wait for busy flag to
        clear in w25_readid() and w25_unprotect().  From Jussi Kivilinna.
      - Automounter: FS_AUTOMOUNTER should depend on SCHED_LPWORK.  From
        Nickolay Semyonov.

    * Networking/Network Drivers:

      - TCP Listen: Throw error when error happens in the tcp_listen
        function.  From Roland Takacs.
      - Nework Device Management:  Do not search net device when all-zeros
        address is used.  From Roland Takacs.
      - Network Device Management:  Fix a error in netdev_register(); it was
        not handling device names properly when TUN is the only network device.
      - Network Device Management:  Fix netdev_dev_lladdrsize().  In some
        configurations, it could return the wrong size for the address of a
        packet radio.
      - Network Device Management:  Fix typo for 802.11 devices in
        netdev_register().  Was being masked before because depended on
        CONFIG_NET_MULTLINK.
      - TUN Driver:  Use critical section instead of semaphore in
        tun_ifdown().  From Masayuki Ishikawa.
      - TUN Driver:  Do all polling on worker thread.  Otherwise, the stack
        gets very deep.
      - TUN Driver:  Currently cannot support TAP mode unless Ethenet is
        enabled.
      - netdb:  Fixed buffer size used for sending DNS queries should depend
        on the configured DNS name size.  From Ritjaina.
      - UDP networking:  The TTL (time to live) was not being set in the IPv4
        or IPv6 header unless the UDP socket was bound.
      - UDP Networking:  Fix a copy-paste error that could effect networking
        when both IPv4 and IPv6 are enabled.
      - UDP Networking:  When upd_input() cannot process a packet, it returns
        ERROR so that network drivers may try calling ipv4_input() later.  In
        this case, it must also set d_len to zero.  Otherwise, all network
        drivers will assume tht there is also an outgoing packet.  This
        results in a gratuitous ARP.
      - TCP Networking:  Correct some issues that prevent TCP from working
        correctly when both IPv4 and IPv6 are enabled.
      - TCP Networking:  TCP disconnection callbacks are not retained in a
        list.  This will support mutiple callbacks per lower-level TCP
        connection structure.  That is necessary for the cae where a socket is
        dup'ed and shares the same lower-level connection structure.  NOTE:
        There still needs to be a call to tcp_start_monitor() when the socket
        is dup'ed.
      - TCP Networking:  Start the network monitor for a socket when a TCP
        socket is dup'ed.
      - TCP Networking:  If one of the dup'ed socket's is closed, then network
        monitor resources associated with that one socket must be recovered.
        Also, in the event that socket is being used on one thread, but then
        closed on another, any threads waiting for events from the socket
        should be informed of the closure.  That latter requirement is not
        implemented because current data structures do not support it.
      - TCP Networking:   Fix a race condition.  The accept() operation is
        performed with the network locked.  However, the network is unlocked
        BEFORE the connected state is set.  Therefore, a context switch may
        occur and the socket may no longer be connected when it is marked so.
        Noted by Pascal Speck.
      - Network routing tables:  Fix a compilation error when IPv6 and
        routing are enabled.
      - Network procfs:  Fix some spacing when both IPv6 and IPv4 are enabled.
      - Network Local Sockets:  Fix accept for local stream sockets.  From
        Jussi Kivilinna.
      - Network Local Sockets:  Fix server lc_waitsem overflow.  From Jussi
        Kivilinna.
      - IPv6 Networking:  Remove comparisons to the address with all ones
        set.  IPv6 does not support broadcast addresses and certainly not in
        that form.  Replace with multicast addresses beginning with 0xff02.
      - ICMPv6 Networking:  Fix a compilation issue with
        CONFIG_NET_ICMPv6_AUTOCONF=y.  From  Masayuki Ishikawa.
      - Networking:  Fix net_lock returning ERROR when instead of real error
        code on failure.  From Jussi Kivilinna.
      - IGMPv2 Networking:  Remove special support for interrupt level
        processing (there is none) and fix some timer cancellation logic.  In
        many files, correct comments.  There is no interrupt level processing
        in the networking layer.

    * Wireless/Wireless Drivers:

      - IEEE 802.15.4 MAC:  Need counting protection on the logic that
        releases the notification resources.  Otherwise, notification handlers
        may be operating with a stale pointer.
      - IEEE 802.15.4 MAC: Improves internal timer logic to handle work
        serially.  Before, the MAC timer used a watchdog to schedule work with
        the high priority worker queue.  However, since everything in the MAC
        is supposed to be serialized through the use of the high priority work
        queue, but the timer uses a watchdog, there are some unintended
        consequences. To simplify, we now use the delayed work feature of the
        work queue.  From Anthony Merlino.
      - IEEE 802.15.4 Network Driver: Update RX statistics in network driver.
      - IEEE 802.15.4 MRF24J40 Driver:  Minor timing fix. Matches recommended
        value in datasheet.  Splits up driver into multiple files to make it
        easier to navigate.  Fixes issue with non-beacon enabled mode.  From
        Anthony Merlino.
      - IEEE 802.15.4 MRF24J40 Driver:  Fix a bug causing radio to cease
        transmitting.  From Anthony Merlino.
      - IEEE 802.15.4 MRF24J40 Driver:  Fixes issues with sleeping for beacon
        enabled networking.  From Anthony Merlino.
      - EEE 802.15.4 MRF24J40 Driver:  Fix math error for calculating sleep
        count values.  From Anthony Merlino.
      - IEEE 802.15.4: Fix timing issues for beacon enabled coordinators and
        endpoints. From Anthony Merlino.
      - iIEEE 802.15.4: Fix issue with association on beacon-enabled
        networking.  From Anthony Merlino.
      - 6LoWPAN:  Correct a few addressing issues.  Also reserve two bytes at
        the end of the frame for the FCS.
      - 6LoWPAN:  Fixes needed when extended addressing is enabled; broke short
        addressing.  Loopback driver needs to initialize the MAC meta data;
        Address decompression logic must have the MAC address to handle the
        most common compression cases.  Fix a src/dest address confusion and
        other addressing problems.
      - 6LoWPAN:  Add missing IPv6 address creation to HC1 decode logic. Fix a
        typo in an index that prevented use with HC1 and extended addresses.
      - 6LoWPAN:  TCP logic was not obeying MTU packet size limitations.
      - 6LoWPAN:  Major re-architecting of TCP logic to properly handle TCP
        stuff like ACKs and TDP windowing which were not properly covered in
        the initial design.
      - 6LoWPAN:  HC06, copy TCP header as though it were data.  TCP packet
        reassembly now seems to work OK.
      - 6LoWPAN:  Fix duplicate and bad memcpy in loopback driver.
      - 6LoWPAN:  Fix a misconception about HC06 16-bit IPv6 address
        compression.
      - 6LoWPAN:  TCP send logic was returning a failure in one case when, in
        fact, the send was successful.

    * Common Drivers:

      - USB MSC:  Use struct instead of pointer to the struct as sizeof
        argument in memset in usbmsc.c.  Otherwise it leads to error: argument
        to sizeof in memset call is the same pointer type struct usbmsc_lun_s
        * as the destination.  From Oleg Evseev.
      - USB MSC:  Add missing logic to define endpoints.  The composite
        changes broke the the non-composite, USB MSC only case because it omitted the critical setup when USB MSC was not part of the composite.
      - USB CDC/ACM.  Fix several known problems resulting from merge of USB
        composite device.  That merge now breaks some of the non-composite USB
        devices.
      - Button Driver:  Interrupts weren't enabled since nothing updates them
        after btn_poll() marks the file descriptor structure as being polling.
        From Jan Pobrislo.
      - ADC Driver:  Fix some data alignment issues in the ADC driver.
      - I2C Drivers:  Handle I2C_TRANSFER return value consistently.  Some I2C
        peripherals transfers return zero on success, others number of
        completed transfers.  Make drivers robust against this.  From Juha
        Niskanen.
      - COMP Driver:  Fix compilation errors when poll disabled.  From Mateusz
        Szafoni.

    * Simulation:

      - Simulation:  Fix mkdir issue in GNU target.  From Simon Piriou.
      - Simulation:  x86 stack needs to be aligned to 16-byte boundaries.
      - Simulation:  Fix building 32-bit simulation on 32-bit X86.  From Jussi
        Kivilinna.

    * ARM:

      - ARM: The older ARM7 and ARM9 configurations were determining CFLAGS
        based on the GCC version 4.x.x or not.  That needx to be extended for
        5.x.x and 6.x.x which also behave like 4.x.x.

    * ARMv7-M:

      - Fixed ARMv7-M Toolchain setting.  Cortex-M4 only have Single
        Precision FPU.  From Hidetaka Takano.
      - ARMv7-M syscall logic:  Clear bit 0 in PC settings.  Bit 0 is the
        thumb mode indication and should not be set in the PC.  This extra bit
        has not caused problems in the past, but seeing it set in the PC is
        unnerving.

    * Expressif ESP32:

      - Fix ESP32 gpio enable reg and default UART pin. Modify default UART
        pin for ESP-WROOM-32. Fix gpio enable reg.  From Sungki Kim.

    * Microchip/Atmel SAMD21 Drivers:

      - SAMD21:  Fix some SPI-related issues.  From Matt Thompson.
      - SAMD21 SPI: I was having issues with the bus freezing up .. slaves
        holding SDL low.. so I rewrote a good portion of the interrupt logic
        based on the application notes from Atmel.  One major improvement is
        using the RXNACK flag in the STATUS register, which indicates that no
        device responded to an address packet. Assuming that the chip will
        always give an interrupt status, I believe it's possible to eliminate
        the timer as well.  From Matt Thompson.
      - SAMD/L21:  Need to preserve errno value across syslog() call.
      - SAMD21:  Changes needed to get USB working.  From Matt Thompson.

    * Microchip/Atmel SAMv7 Drivers:

      - SAMv7 TWIHS:  TWIHS driver add reference counting. From David Sidrane.
      - SAMv7 CAN:  We discovered a problem with the samv7 mcan driver which
        results, under some circumstances, in a very high CPU load.  The
        problem occurs, and is easily reproducible, if the device is connected
        to a CAN network with a wrongly configured CAN speed (baud rate). In
        our tests we set the CAN speed of the device to 1000000 and the speed
        of the other CAN nodes to 500000. The device is restarted and sends a
        CANopen "bootup message" to the CAN network. This results in huge
        amount of errors messages on the CAN bus, probably because of the CAN
        feature for acknowledging error messages. The error messages can’t be
        read by the device because of the misconfigured CAN speed, instead the
        CAN chip reports lots of errors, which are reported to the application
        which uses the CAN driver (CONFIG_CAN_ERRORS is enabled).  The CAN
        errors are reported from the CAN chip via interrupts and thus the
        interrupt load is very high in this scenario. To fix the problem the
        driver now disables each RX error interrupt after it is occurred.  The
        RX error interrupts are turned back on if at least one CAN message is
        received successfully.  From Stefan Kolb.
      - SAMv7 CAN:  I discovered while working on the SAMV7 mcan driver that
        the implementation of the CAN error handling is suboptimal. In the
        current implementation the many errors are implemented as pending
        errors.  But those errors are not pending, the errors occurred and are
        gone directly afterwards. This commit changes the described behavior
        and simplifies the handling of CAN errors.  From Stefan Kolb.

    * Microchip/Atmel SAMv7 Boards:

      - SAMv71-XULT:  Fix MRF24J40 interrupt GPIO number.

    * NXP/Freescale Kinetis:

      - Kinetis MPU:  Disable MPU when not in protected mode.  The hardware
        reset state of the the MPU precludes any bus masters other then DMA
        access to memory. Unfortunately USB and SDHC have there own DMA and
        will not have access to memory in the default reset state.  This change
        disabled the MPU if present on system startup.  From David Sidrane.
      - Kinetis MPU:  Fixed warning for kinetis_mpudisable. Missing header
        file added.  From David Sidrane.
      - Kinetis SIM:  Ensure isolation of clock dividers for 0 value case.
        This fixes a bug were a SoC does not have a clockdivN register and
        passes a 0 for the init value.  This prevents overflow of the 0
        decremented to -1 (0xffffffff) spilling over to other clockdivN
        fields.  From David Sidrane.

    * NXP/Freescale i.MX6 Drivers:

      - i.MX6: Fix a wrong parameter passed when calling irq_attach() in
        imx_serial.c.  From Masayuki Ishikawa.
      - Based on Masayuki's change, I review all serial driver vector
        attachment.  I Found one additional error and updated all relevant
        drivers to current interrupt parameter passing.

    * STMicro STM32:

      - STM32 F410 Kconfig:  Fix peripherals available on the STM32 F410.
        This also adds a select for STM32_HAVE_DAC1 present on this STM32
        flavor.  From Gwenhael Goavec-Merou.
      - STM32 L4 DMA: Correct USART3_RX bad channel definition.  From Juha
        Niskanen.
      - STM32 L4 PWR:  Correct PWR_SR2 REGLPS and REGLPF bits, add port I
        registers.  Also remove duplicate section from Kconfig.  From Juha
        Niskanen.
      - STM32 F7: do not enable read-modify-write on DTCM.  "AN 4667 - STM32F7
        Series system architecture and performance" recommends to disable
        read-modify-write on DTCM: "If the DTCM-RAM is used as data location
        and the variables used are byte or/and halfword types, since there is
        no ECC management in this RAM on the STM32F7 Series, it is recommended
        to disable the read-modify-write of the DTCM-RAM in the DTCM interface
        (inthe DTCMCR register) to increase the performance." From Jussi
        Kivilinna.

    * STMicro STM32 Drivers:

      - STM32 TIM3/4 are always 16-bits; never 32-bits.  Noted by Eetu
        Nevalainen..
      - STM32 ADC:  Invalidate dma buffer before use.  Missing invalidation
        caused old samples being fetched from cache.  From Jussi Kivilinna.
      - STM32, STM32L4, STM32F7 ADC:  Fix channel 18 sample time.  From Juha
        Niskanen.
      - STM32 DAC:  Fix some configuration logic. When STM32_NDAC is greather
        than 1, then second channel is always DAC1OUT2.  From Mateusz Szafoni.
      - STM32 DAC:  Fix compilation when DMA disabled for channel.  From
        Mateusz Szafoni.
      - STM32 F0:  Fix some funny shifts in DAC header files.  From Juha
        Niskanen.
      - STM32 F1 RTC fixes:  (1) Compile issues because of missing RTC_MAGIC
        #defines, (2) missing functionality based on RTC_MAGIC in RTC based on
        stm32_rtcounter.c, (3) IRQ setup from up_rtc_initialize was later
        reset in up_irqinitialize, (4) write access to backup registers
        without enabling access to backup domain, (5) possible races in
        set/cancel alarm.  tested with STM32F103C8 only.  device now wakes up
        from forced STANDBY mode by alarm.  From Leif Jakob.
      - STM32/STM32 L4 PWM:  While attempting to output a 70 MHz square wave
        from the timer output of a STM32 clocked at 140 MHz, found that the
        reload calculation was off by one.  This correction does allow the
        output up to 70 MHz.  I am not sure this affects most users
        generating slow PWM but for frequencies close to the PCLK, the
        difference becomes significant.  From JM.
      - STM32 L4 I2C: Set I2C SDA and SCL pins to open drain mode.  From Pekka
        Ervasti.
      - STM32 L4 I2C: I2C4 was writing to wrong RCC registers.  From Juha
        Niskanen.
      - STM32 L4 DAC:  Report transfer as completed in DMA callback.  Without
        this even O_NONBLOCK writes block the calling task if DAC was using
        DMA.  From Juha Niskanen.
      - STM32 L4 COMP: comparators share RCC enable bit with SYSCFG.  From
        Juha Niskanen.
      - STM32 L4 ADC:  Correct EXTSEL macros.  From Juha Niskanen.
      - STM32 L4 TIM: TIM15,16,17 are always in APB2.  From Juha Niskanen.
      - STM32 F7 I2C: Set I2C4 SDA and SCL pins to open drain mode.  From Juha
        Niskanen.
      - STM32 F4 RTCC: ISR register and write protection fix.  From Eetu
        Nevalainen.
      - STM32 F7 Ethernet:  Fix typo in header; Add memory sync barrier
        between writing to DMA TX descriptor and restarting DMA TX. Avoid
        calling work_queue on pollwork if it's already queued, just skip a
        poll cycle instead.  Nucleo-144: Fix RMII TXD1 signal, connected to
        PB13 not to PG14.  From savinz.
      - STM32 F7:  Added missing config option for register value debugging.
        From Titus von Boxberg.
      - STM32 F7:  No FSMC, only FMC for STM32F7.  From Titus von Boxberg.
      - STM32 F7:  HEAP2 depends on CONFIG_ARCH_HAVE_HEAP2, not on particular
        FMC RAM type.  From Titus von Boxberg.
      - STM32 F7:  STM32_RCC_DCKCFGR2 has nothing to do with PLLI2S; PLLI2S is
        not dependent on LTDC, instead on SAICLK1/2 generated from PLLI2S.
        From Titus von Boxberg.
      - STM32F7: Some STM32F7 builds failed in build testing due to undefined
        STM32_SRAM1_BASE.  I think that is because stm32_allocateheap.c was
        not including chip/stm32_memorymap.h.
      - STM32 F7: dcache write-buffed mode is used (not write-through) buffer
        alignment is required for DMA transfers because a)
        arch_invalidate_dcache could lose buffered writes data and b)
        arch_flush_dcache could corrupt adjacent memory if the buffer and the
        bufflen, are not on ARMV7M_DCACHE_LINESIZE boundaries.  From David
        Sidrane.

    * STMicro STM32 Boards:

      - STM32F103-Minumum SPI: SPIDEV_WIRELESS used when this has
        changed to SPIDEV_CONTACTLESS. From Nicolas Estibals.
      - configs/:  a few more places where SPIDEV_WIRELELSS should be
        SPIDEV_CONTACTLESS.
      - STM32F103-Minumum:  Fix a BUG when reading from output pin.  We need
        a different read_ops to read from output pin. This patch fixes the
        issue.  From Alan Carvalho de Assis.
      - STM32F103-Minumum: Use separated read_ops for GPIO interrupt pins.
        From Alan Carvalho de Assis.
      - STM32F103-Minumum: Fix compiler error in MCP2415 logic.
      - STM32F746G-DISCO:  Fix for compilation of STM32F746G-DISCO.  From Ivan
        Ucherdzhiev.
      - STM32F746G-DISCO:  Fix for stm32f746g-disco board for button support
        with interrupt.  This change is tested with buttons app example and it
        is working with interrupts (signals). I tried the test with polling
        but at this point it doesn't work.  From Ivan Ucherdzhiev.

    * Build System

      - Fix -Werror=implicit-fallthrough on gcc7.  From Julien Lecoeur.
      - configs/Board.mk:  Remove comment form end of line. In windows native
        build, it appears to be trying to make that an extra parameter to the
        AR command.  From Jeff.
      - configs/Board.mk:  Remove quotes from CONFIG_ARCH_FAMILY.  Causes
        problems with Windows native build.  From Jeff.
      - Makefile.win would only create uboot images for ARM.  MIPS support
        also needed.  From Lwazi Dube.

    * C Library/Header Files:

      - C++:  Fix C++ __guard implementation for ARM.  The standard C++ ABI
        that most platforms follow defines __guard to be 64 bits.  The existing
        implementation of libxx_cxa_guard.cxx follows this.  However, the
        32-bit ARM C++ ABI defines it as 32 bits instead, and changes the
        meaning slightly so only the lowest bit is used. This matters because
        GCC creates guard symbols without regards to what libxx_cxa_guard.cxx
        says.  So on ARM, gcc allocates 4 bytes, but __cxa_guard_release
        writes 8 bytes, zeroing out another unlucky variable nearby. Fix it
        by special-casing 32-bit ARM in libxx_cxa_guard.  From Jim Paris.
      - C++:  In cwchar it uses CONFIG_LIBC_WCHAR to only export the wc/mb
        functions.  When a build does not want to use wide or multibyte char
        CONFIG_LIBC_WCHAR is not set. Therefore we should to only export the
        wc/mb functions when defined.  Regardless of the stat of
        CONFIG_LIBC_WCHAR the non mb/wc  definitions such as mbstate_t,
        wint_t, wctype_t need to be exported.  From David Sidrane.
      - C Library:  Fix an error in mkstemp() the could result in an infinite
        loop.  From Alan Carvalho de Assis.
      - C Library:  (1) Fix an error in mkstemp() the could result in an
        infinite loop.  (2)  Fix for wrong output in some cases.  For Example:
        (a) input: "FILEXX", output: "FILE00" and repeats same output for
        further invocations of mkstemp(). But, the ouput has to be FILE01,
        FILE02, ...., FILEZZ. (b) input: "FILEXXXXXX", output: "FILE100000",
        for next invocation "FILE200000" and so on.  But it's good, if the
        ouput goes like FILE000001, FILE000002, ..., FILE000101, ...  From
        Lokesh B V.
      - C Library:  gethostbyname_r: Fix check for space in buffer.
      - C Library:  inet_ntop() was printing negative values for fields >127.
      - Math Library:  Fix wrong ouput in modf() API.  The sign of integral
        part given by the modf() should be same as sign of input.  But for
        inputs between 0 and 1, the sign of integral part was not same as
        sign of input.  From Lokesh B V.
      - Math Library:  Fix wrong ouput in ceil() API.  Ex:for input x = 1.0,
        the output should be 1.0, but the ouput was 2.0.  From Lokesh B V.

    * Tools

      - tools/testbuild.sh: Fix missing $ before variable name.
      - tools/mkdeps.c:  Eliminate a warning. MAX_PATH may already be defined
        in included system files.  From Jeff.

    * Applications: apps/

      - All apps/ Makefiles:  Add .PRECIOUS: apps/libapps.a to every
        Makefile.  Hopefully this will end awkward problems when you Control-C
        out of a build and libapps.a is deleted.
      - platform/Makefile: More attempts to fix for Windows native build.
        Backslash as a delimiter causes problems in pattern subsitutions.

    * NSH: apps/nshlib:

      - NSH network initialization: Fix some ieee 802.15.4 initialization
        logic.  It should not set the saddr or panid; those cannot be
        hard-coded but must come from the coordinator.  Re-factor a function
        that has gotten too big and too complex.  Do not set the IP address
        for 6loWPAN.  The 6loWPAN stack uses IP address that derive from the
        ieee 802.15.4 addressing and cannot be (safely) configured by the user.
      - NSH Library: Fix copy-paste typo in nsh_usbconsole.c.  From Oleg
        Evseev.
      - NSH Library: fix size of 6LoWPAN extended address.
      - NSH Library: Fix build break in nsh_command.c with IPv4/IPv6 dual
        stack.  From Masayuki Ishikawa.
      - NSH Library: Correct parsing of ifconfig so that you can specify the
        HW address without specifying the IP address.

    * Examples/Tests: apps/examples:

      - examples/smart: Fix some compilation errors.  Obviously this test has
        not been used in a LONG time.
      - examples/udp:  Renaming some files to prevent name collision in
        libapps.a.  Fix naming of a configuration setting.
      - examples/nettest:  Renaming some files to prevent name collision in
        libapps.a
      - examples/nximage:  Remove unused global variable.
      - examples/nsh:  Remove APPNAME, PRIORITY, and STACKSIZE settings from
        Makefile to avoid showing nsh in Builtin Apps.  From Masayuki Ishikawa.

    * Network Utilities: apps/netutils:

      - netutils/tftpc:  Missing header file causes errors in some
        configurations.
      - netutils/tftpc:  TFTPC depends on CONFIG_NET_IPv4.
      - netutils/netlib:  Fixes to work when only USRSOCK is enabled.
      - netutils/netlib: Fix netlib_nodaddrconv() so that its return type is
        the same as other address conversion functions.
      - netutils/netlib: If only PF_IEEE802154 socket family is enabled, then
        must use SOCK_DGRAM.
      - netutils/ftpc:  Fix some memory leaks.  From Boris Astardzhiev.
      - netutils/thttpd: Fix a malformed if condition detected by GCC 6.x.x.
      - netutils/dhcpd: Prevent buffer overflow in dhcpd_addoption.  offset
        represents distance from start of option buffer.  So this should be
        changed current option pointer minus start of buffer.  From EunBong
        Song.

    * Wireless Utilities: apps/wireless:

      - wireless/ieee802154/i8sak:  Need to increment the next_saddr after
        each successful association.

    * System Utilities (apps/system)

      - correct copy-paste typo in comments in composite_main.c  From Oleg
        Evseev.
      - system/dhcpc:  The DHCPC renew command did not build correctly due to
        naming problems.  Noted by Masayuki Ishikawa.
      - system/dhcpc: Fix warning about renew_main.o appear twice in rule.

    * Tools (apps/tools):

      - tools/mkkconfig.bat: Use %cd% instead of %~dp0 for usage of APPSDIR
        in this batch file.
      - tools/mkkconfig.bat:  Remove quotes in echo.  These were begin
        Echo'ed and generating double quots in the output.  From Jeff.
      - Windows build fixes:  tools/mkkconfig.bat - switch APPSDIR path to
        use forward slashes for kconfig-frontends. interpreters/ficl -
        Reorder some targets that causes GNUwin32 make to behave badly.  From
        Jeff.
15604 15605 15606 15607 15608 15609 15610 15611 15612 15613 15614 15615 15616 15617 15618 15619 15620 15621 15622 15623 15624 15625 15626 15627 15628 15629 15630 15631 15632 15633 15634 15635 15636 15637 15638 15639 15640 15641 15642 15643 15644 15645 15646 15647 15648 15649 15650 15651 15652 15653 15654 15655 15656 15657 15658 15659 15660 15661 15662 15663 15664 15665 15666 15667 15668 15669 15670 15671 15672 15673 15674 15675 15676 15677 15678 15679 15680 15681 15682 15683 15684 15685 15686 15687 15688 15689 15690 15691 15692 15693 15694 15695 15696 15697 15698 15699 15700 15701 15702 15703 15704 15705 15706 15707 15708 15709 15710 15711 15712 15713 15714 15715 15716 15717 15718 15719 15720 15721 15722 15723 15724 15725 15726 15727 15728 15729 15730 15731 15732 15733 15734 15735 15736 15737 15738 15739 15740 15741 15742 15743 15744 15745 15746 15747 15748 15749 15750 15751 15752 15753 15754 15755 15756 15757 15758 15759 15760 15761 15762 15763 15764 15765 15766 15767 15768 15769 15770 15771 15772 15773 15774 15775 15776 15777 15778 15779 15780 15781 15782 15783 15784 15785 15786 15787 15788 15789 15790 15791 15792 15793 15794 15795 15796 15797 15798 15799 15800 15801 15802 15803 15804 15805 15806 15807 15808 15809 15810 15811 15812 15813 15814 15815 15816 15817 15818 15819 15820 15821 15822 15823 15824 15825 15826 15827 15828 15829 15830 15831 15832 15833 15834 15835 15836 15837 15838 15839 15840 15841 15842 15843 15844 15845 15846 15847 15848 15849 15850 15851 15852 15853 15854 15855 15856 15857 15858 15859 15860 15861 15862 15863 15864 15865 15866 15867 15868 15869 15870 15871 15872 15873 15874 15875 15876 15877 15878 15879 15880 15881 15882 15883

NuttX-7.23 Release Notes
------------------------

The 123rd release of NuttX, Version 7.23, was made on December 4, 2017,
and is available for download from the Bitbucket.org website.  Note
that release consists of two tarballs:  nuttx-7.23.tar.gz and
apps-7.23.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:

      - sem_open() should return SEM_FAILED on any failures.  This is change
        in the POSIX specification since the original sem_open() was written
        so many years ago.
      - exec():  The non-standard interface exec() is now enshrined as a
        official NuttX API.  I really dislike doing this but I think that
        this is probably the only want to load programs in the protected
        mode.  It is currently used by some example code under apps/ that
        generate their own symbol tables for linking.  Other file execution
        APIs relay on a symbol table provided by the OS.  In the protected
        mode, the OS cannot provide any meaning symbol table for execution
        of code in the user-space blob so that is they exec() is really
        needed in that build case.  And, finally, the interface is
        completely useless and will not be supported in the KERNEL build
        mode where the contrary is true:  An application process cannot
        provide any meaning symbolic information for use in linking a
        different process.
      - OS Internal Functions:  Rename many OS internal functions so it is
        clear that they are not part of the application interface.  All
        internal functions with the sem_* prefix became nxsem_*, sig* become
        nxsig_*, mq_* become nxmq_*, etc.
      - Cancellation Points:  Add new cancellation point interface,
        check_cancellation_point().
      - Signals:  Add logic to wake up a thread that is waiting on a signal
        if it is canceled.
      - sigtimedwait():  Add logic to suppress the wait if there is a
        pending cancellation.
      - clock_nanosleep():  Implement clock_nanosleep().  nanosleep() is now
        reduced to a libc wrapper around clock_nanosleep().
      - task_delete():  Do not permit user applications to delete kernel
        threads.
      - kthread_create():  Rename kernel_thread() to kthread_create() for
        better naming consistency with task_create() and kthread_delete().
      - boardctl():  Remove the BOARDIOC_GRAPHICS_SETUP command.
      - TCB:  Move POSIX thread specific data from pthread TCB to common TCB
        structure.  This change allows using pthread_getspecific and
        pthread_setspecific from main thread. Patch also enables using
        pthread data with config option CONFIG_DISABLE_PTHREAD=y. From Jussi
        Kivilinna.
      - mm:  Remove the CONFIG_GRAN_SINGLE configuration option.  It adds no
        technical benefit (other than some minor reduction in the number of
        interface arguments) but adds a lot of code complexity.  Better
        without it.
      - mm:  Add a function to get information about the state of the
        granule allocator.  This is the moral equivalent of mallinfo().

    * File Systems/Block and MTD Drivers

      - MT25Q Serial FLASH:  Add support for Micron MT25Q series MT25Q128.
        From Sebastien Lorquet.
      - MX35LFxGE4AB:  Add an MTD driver for Macronix MX35LFxGE4AB serial
        NAND flash.  From Ekaterina Kovylova.
      - FileMTD:  Add block device MTD interface.  Block MTD interface
        allows using block device directly as MTD instead of having to use
        file-system in between.  NOTE that this provides the opposite
        capability of FTL which will let you use an MTD interface directly
        as a block device.  From Jussi Kivilinna.
      - BCH:  The character driver to block device access now supports an
        IOCTL to get the geomtry of the underlying block device.
      - mkfatfs:  Remove mkfatfs from the OS.  This is a user-space
        application and belongs in apps, not in the OS.
      - procfs:  Implements procfs /proc/fs/blocks and /proc/fs/usage files,
        replacing the NSH df command.  Also implements procfs /proc/fs/mount
        file, replacing the NSH mount command when there are no arguments.
      - procfs:  Add /proc/meminfo.  This is an alternative way to get the
        information that was previoulsy available in apps/system/free.
        apps/system/free was removed beause it made illegal calls into the
        OS violating the portable interface.  This new procfs entry provides
        the same information with no such violation.  it also provides
        information about the kernel heap (formerly /proc/kmm), about the
        use of program memory(formerly /proc/progmem).  And also information
        for the page table usage in the KERNEL build.
      - UserFS:  Adds the UserFS client and of the UserFS feature in
        general.  Initially used Unix domain local sockets instead of
        message queues.  Easier to transfer big data in local sockets than
        message queues.  However, that lead to certain inescapable deadlock
        conditions So the IPC was converted to UDP LocalHost loopback
        sockets.  The problem with the local sockets is that they do require
        operations on the top level psuedo-file system inode tree.  That
        tree must be locked during certain traversals such as enumerate
        mountpoints or enumerating directory entries.  This conversion is
        unfortunate in the sense that Unix local domain sockets are
        relatively lightweight.  LocalHost UDP sockets are much heavier
        weight since they rely on the full UDP stack.

    * Graphics/Display Drivers:

      - Framebufer character driver:  Add framebuffer character device driver.
      - LCD Framebuffer:  Add support for a generic front-end that will
        convert any LCD driver into a framebuffer driver.
      - Framebufer character driver:  Include support for LCD drivers that
        use a simulated framebuffer and must receive explicit notification
        when there is an update to a region in the framebuffer.
      - LCD:  Make LCD driver configuration indepently selected from NX
        graphics configuration.  This makes things awkward and loses some
        error checking but is a necessary step in order to make LCD drivers
        usable when the NX graphics system is disabled.

    * Networking/Network Drivers:

      - Networking:   Add implementation of logic for SIOCGIFCONF and
        SIOCGLIFCOF IOCTL commnds.
      - Network IOCTLs:  Add support for the SIOCGIFBRDADDR ioctl() command.
      - Routing Tables:  Permit IPv4 and IPv6 routing tables to be of
        different sizes.
      - Routing Tables:  Adds support for read-only routing tables.  Prior
        to this change, routing tables were only support in RAM and had to
        be initialized with explicit logic to add the necessary routes to
        the routing table.  With this change, routes may be defined in the
        pre-initialized, read-only routing table provided by the
        board-specific logic.
        This would be particularly useful, for example, in the case where
        there is only a single network adaptor and you want all output
        packets to go to the single adaptor in all cases.  So for that
        behavior you could add a read-only routing table to the
        board-specific long that contains a single entry, the default route:
        0.0.0.0/0.
      - Routing Tables.  Added support for routing tables in files in a file
        system.  This might be useful for customized, per-unit routing
        tables. There are two issues with it however:
         1. Reading from file system on a per packet basis could be slow.  I
            think it probably should have a small, in-memory cache of most
            frequently used routes for good problem.
         2. Currently the delroute logic is disabled due to a problem with
            the design.  NuttX does not currently support truncate().
            Therefore, it is not possible to delete entries from the routing
            table file. In this current implementation, that leaves the last
            entry intact at the end of the file.  An alternative design
            might include a tag on each record to indicate if the record is
            valid or not.  That would work but would add complexity to the
            other routing table functions.
      - Routing Tables:  Add support for an in-memory routing table cache in
        order to improve performance when the routing table is retained in a
        file. The cache holds the most recently used routing table entries
        and so can eliminate some file access.  Flush the in-memory cache
        when any entry is deleted from the routing table.  When a router
        matching an IP address is found, add the routing table entry to the
        cache.
      - Routing Tables:  Add logic to mark a route as most-recently-used in
        the route cache.
      - ICMP:  This change adds support for semi-standard IPPROTO_ICMP
        AF_INET datagram sockets.  This replaces the old ad hoc, nonstandard
        way of implementing ping with a more standard, socket interface.
      - ICMPV6: This commit adds support for semi-standard IPPROTO_ICMP6
        sockets.  This is a replacement for the non-standard ICMPv6 ping
        support that violated the portable POSIX OS interface.
      - ICMPv6:  Add option to manually specify router prefix in router
        advertisement message.  From Sakari Kapanen.
      - Local Sockets:  This commit modifies the Unix domain local socket
        design. Local sockets are built on top of pipes.  The Local socket
        implementation maintained file descriptors to interrupt with the
        pipes. File descriptors have the bad property that they are valid
        only while running on the thread within the task that created the
        local socket.
        As a policy, all internal OS implementations must use "detached"
        files which are valid in any context and do not depend on the
        validity of a file descriptor at any point in time.  This commit
        converts the usage of file descriptors to detached files throughout
        the local socket implementation.

    * Wireless Networking/Wireless Drivers:

      - IEEE-802154:  Adds support for receiving MAC events via IOCTL through
        socket interface.  From Anthony Merlino.
      - IEEE-802154:  Simplifies notify() and rxframe() calls to a single
        notify() call. dataind's and all other "notifs" are now "primitives"
        which aligns with standard terminology  From Anthony Merlino.
      - MAC802154:  Add support for getting promiscuous mode state From
        Anthony Merlino.
      - MAC802154 Character Driver: When in promiscuous mode, the char
        driver sends the entire frame, including the MAC header.  This
        change adds an offset field indicating the header-payload boundary.
        It is set to 0 when not in promiscuous mode as the header is not
        passed to the application
      - 6LoWPAN: Remove CONFIG_NET_6LOWPAN_FRAMELEN.  In this case where
        multiple radios are supported, this may not be a constant.  6LoWPAN
        now always queries the driver to get the maximum frame length.
      - 6LoWPAN:  Support sending to a router that is on-link and may be
        able to forward the packet for us if the destination is not
        reachable directly.  From Anthony Merlino.
      - XBee:  Adds XBee S2C (802.15.4 firmware) support. XBee driver
        emulates mac802154 interface.  From Anthony Merlino.

    * Other Common Device Drivers:

      - PowerLED:  Add upper-half driver for high power LED driver (powerled)
        From Mateusz Szafoni.
      - RTC Driver:  Add periodic alarms to upper and lower halves.  From
        Juha Niskanen.
      - Pipes:  Fix writing large buffers not triggering POLLIN for reader
        poll.  From Jussi Kivilinna.
      - USB CDC/ACM Device:  Add support for RX flow control to the CDC/ACM
        driver.
      - USB CDC/ACM Device:  Add support for flow control TERMIOs in CDC/ACM
        driver.
      - USB RNDIS Device:  Add RNDIS-over-USB driver.  From Sakari Kapanen
        with added Hi-Speed support from Masayuki Ishikawa.
      - Loop Driver:  Don't use file descriptors... Use the internal file
        system interfaces so that the loop device can be shared across
        threads.
      - APA102 LED controller:  Add driver for APA102 LED controller.  These
        LEDs are used on LED Strips and are controlled over SPI.
      - INA219.  Add INA219 Driver.  The INA219 is a combined voltage and
        current sensor that can measure up to 26 volts and a current that
        depends on an external shunt resistor.  Connection happens via
        i2c/smbus and the chip features a power supply rail that is
        independent from the measured voltage, so it can measure low
        voltages.  Right now it measures bus voltage and current, and does
        not use the internal calibrated current reading, nor the available
        power measurement.  From Sebastien Lorquet.
      - PCA9555:  The IRQ subsystem now supports passing a void * parameter
        to IRQ handlers.  Use that method to support multiple PCA9555
        devices, by passing a pointer to the device to the board defined irq
        handler.  Now the CONFIG_ for multiple PCA devices just allocates
        device structures dynamically instead of statically when not enabled.
        The same interrupt handler is entered with the device structure
        parameter in all situations, multiple or single PCA. One should
        still be careful if multiple PCA devices share the same IRQ.  From
        Sebastien Lorquet.
      - APDS-9960: Add driver for the APDS-9960 gesture sensor.  From Alan
        Carvalho de Assis.
      - MAX7219:  Add support to MAX7219 LED Matrix as LCD interface.  From
        Alan Carvalho de Assis.
      - WM8774:  Add WM8774 audio DAC support.  From Masayuki Ishikawa.
      - Nunchuck: Add Nintendo Wii Nunchuck driver.  From Alan Carvalho de
        Assis.

    * Simulation

      - Simulation:  Add a configuration for non-graphical testing of the
        frambuffer character driver using apps/example/fb.
      - Simulation:  Add a configuration for testing the UserFS using
        apps/examples/userfs.

    * Broadcom BCM2708:

      - BCM2708:  Add enough infrastructrue (more stubs) to get a clean
        compilation of the Pi Zero configuration (with many undefined things
        at link time).   This includes several register definition header
        files (some from Alan Carvalho de Assis), basic interrupt handling
        logic, boot-up files, GPIO support, tickless timer, build and
        configuration logic

    * Broadcom BCM2708 Boards:

      - Raspberry Pi Zero.  Basic board support at configs/pizero.  Untested
        in this release and still some remaining issues.

    * Infineon XMC4xxx Boards:

      - XMC4500-Relax:  Add config for UART3 on RXD P0.0 and TXD P0.1 pins.
        From Alan Carvalho de Assis.

    * NXP Freescale LPC17xx Boards:

      - Open1788:  Add initialization of Framebuffer driver.  Add
        configuration for testing the framebuffer driver.

    * NXP Freescale LPC43xx Drivers:

      - LPC43xx:  Add LPC43xx CAN driver.  From Alexander Vasiljev.

    * NXP Freescale LPC43xx Boards:

      - MCB1700:  Add support for Keil MCB1700 board.  From Alan Carvalho de
        Assis.
      - Open1788:  Add support for the discrete joystick driver.
      - Open1788:  Add a configuration for testing pdcurses with discrete
        joystick.

    * On Semiconductor LC823450

      - LC823450:  Add ADC driver and watchdog drivers.  From Masayuki
        Ishikawa.
      - LC823450:  Add IPL2 support.  From Masayuki Ishikawa.
      - LC823450:  Add I2S support. From Masayuki Ishikawa.
      - LC823450:  Add auto LED for CPU activity.  From Masayuki Ishikawa.

    * On Semiconductor LC823450 Boards

      - LC823450-XGEVK:  Enable ADC and watchdog driver.  From Masayuki
        Ishikawa.
      - LC823450-XGEVK:  Add IPL2 support.  From Masayuki Ishikawa.
      - LC823450-XGEVK:  Add WM8774 support. From Masayuki Ishikawa.
      - LC823450-XGEVK:  Add auto LED support.  From Masayuki Ishikawa.
      - LC823450-XGEVK:  Enable CONFIG_SMP for audio. From Masayuki Ishikawa.
      - LC823450-XGEVK:  Add rndis configuration.  From Masayuki Ishikawa.

    * STMicro STM32:

      - ARM Kconfig:  Add support for classic ARM11 architecture selections.
      - STM32 Tickless:  Removes the restriction to 16-bit counts when a
        32-bit timer is used for tickless operation on the stm32.  As it
        was, the restriction is very limiting, especially if one wants high
        granularity and large achievable intervals and has the hardware
        (namely the 32bit timers) available.  From Rajan Gill.
      - STM32 L4 Kconfig:  Add some L486 and L496 chips.  From Juha Niskanen
      - STM32 F7:  Adds architecture support for the STM32 F72x and F73x
        families.  From Bob Feretich.
      - STM32 F7:  Allow changing voltage output scaling setting and
        prevents enabling over-drive mode for low frequencies (STM32 F74xx,
        75xx, 76xx, 77xx). From Jussi Kivilinna.  Changes replicated for
        the 72xx and 73xx families.

    * STMicro STM32 Drivers:

      - STM32 ADC:  Added support for ADC's IO_ENABLE_TEMPER_VOLT_CH ioctl
        on STM32F10XX and STM32F20XX.  From Dmitriy Linikov.
      - STM32 Wakeup: Add logic for enabling wakeup pins.  From Oleg Evseev.
      - STM32 PWR:  Adds stm32_pwr_getsbf and stm32_pwr_getwuf functions
        that return the standby flag and the wakeup flag PWR power
        control/status register.  From Oleg Evseev.
      - STM32 HRTIM:  Sdd support for capture, chopper, deadtime and dump
        registers.  From Mateusz Szafoni.
      - STM32 RTC:  Canceling an alarm marks it as inactive.  From Juha
        Niskanen
      - STM32 Serial:  Add interface to get uart_dev_t by USART number,
        stm32_serial_get_uart().  From Juha Niskanen.
      - STM32 F33xx ADC:  Initial ADC support for the STM32F33XX.  From
        Mateusz Szafoni.
      - STM32 F33xx ADC:  Add ADC DMA support to STM32F33 configuration.  From
        Mateusz Szafoni.
      - STM32 L4 ADC:  Port analog watchdog ioctl commands from the Motorola
        MDK.  From Juha Niskanen
      - STM32 L4 ADC:  Add option for routing ADC data to DFSDM, fix DFSDM
        DMA. From Juha Niskanen
      - STM32 L4 ADC:  Add PM hooks from Motorola MDK
      - STM32 L4 FLASH:  Add function for modifying device option bytes,
        From Juha Niskanen.
      - STM32 L4 DFSDM:  Add peripheral support for digital filters for
        sigma-delta ADCs.  Initial version.  Timer trigger support is not
        completed and there is some issue with DMA.  From Juha Niskanen.
      - STM32 L4 I2C:  Port then STM32 F7 I2C driver to STM32 L4.  STM32L4 I2C
        driver is in work-in-progress state (plentiful of TODOs and
        #warnings) and lags many features found in more up-to-date STM32 I2C
        drivers.  The peripheral on STM32F7 and STM32L4 are identical except
        for L4's 'wakeup from stop mode' flag and STM32F7's I2C driver is in
        more 'ready to use' state.  The I2C clock configuration is kept the
        same as before (I2CCLK = PCLK1 80 Mhz) instead of switching to
        STM32F7 arch default that is I2CCLK=HSI. Further work would be to
        add configuration option for choosing I2C clock source instead of
        current hard-coded default.  From Jussi Kivilinna.
      - STM32 L4 RTC:  Add up_rtc_getdatetime_with_subseconds
      - STM32 L4 RTC:  Change maximum alarm time from 24h to one month.  From
        Juha Niskanen.
      - STM32 L4 RTC:  Add support for periodic interrupts with
        (experimental) CONFIG_RTC_PERIODIC.   From Juha Niskanen.
      - STM32 L4 SDMMC:  Add support for an SDMMC driver.  From Miha Vrhovnik.
      - STM32 L4 Serial:  Suspend serial for Stop mode.  From Juha Niskanen.
      - STM32 L4 Serial/PM:  STM32L4 serial PM interface improvements:
        Check rx/tx buffers for pending data in pmprepare.  Remove adhoc PM
        interfaces and move serial suspend functionality behind CONFIG_PM.
        From Jussi Kivilinna.

    * STMicro STM32 Boards:

      - STM32F103-Minimum:  Add board support for APA102 driver.  From Alan
        Carvalho de Assis.
      - STM32F103-Minimum:  Add ADC support on stm32f103-minimum board.
        From Alan Carvalho de Assis.
      - STM32F103-Minimum:  Add support for LM75 in the stm32f103-minimum
        board.  From Alan Carvalho de Assis.
      - STM32F103-Minimum:  Add an ADPS-9960 example configuration.  From
        Alan Carvalho de Assis.
      - STM32F103-Minimum:  Add board support for MAX7219 LED Matrix
        controller.  From Alan Carvalho de Assis.
      - STM32F103-Minimum:  Add USB MSC device initialzation to
        stm32f103-minimum.  From Alan Carvalho de Assis.
      - STM32F103-Minimum:  Add framebuffer driver initialization for
        stm32f103-minimum board.  From Alan Carvalho de Assis.
      - STM32F103-Minimum:  Add Nunchuck board support for
        stm32f103-minimum board.  From Alan Carvalho de Assis.
      - STM32F4 Discovery:  Add support for JLX12864G display on STM32F4
        Discovery board.  From Alan Carvalho de Assis.
      - Viewtool-STM32F107:  Add support to auto-mount the procfs file system.
      - Photon:  Support SPI1 and SPI3.  From Anthony Merlino.
      - STM32F334-DISCO:  Add lower half driver for high power LED
        (powerled).  From Mateusz Szafoni.
      - STM32F334-DISCO:  Add flash mode support for powerled driver. From