Skip to content
ReleaseNotes 791 KiB
Newer Older
        device and local connections.  From Max Neklyudov.
      - Enhanced output to NSH ping command from Max Neklyudov.
      - The NSH mount command now recognizes the Union filesystem type when
        listing mounted file systems.

    * Applications: apps/netutils:

      - apps/netutils/thttpd/ and apps/examples/thttpd/: Add support for
        using binfs/ with the Union FS instead of NXFLAT.  NXFLAT is
        probably the better solution but recently compiler changes make it
        unusable.  binfs or ELF are fallback binary formats.  This commit
        adds an option to use binfs with the Union FS.

    * Applications: apps/examples:

      - Modify/simpify apps/examples build files.  From Roman Saveljev.
      - apps/examples/ltdc:  Add testing support for the STM32 LTDC's 2D DMA.
        From Marco Krahl.
      - apps/examples/ostest: Add a test of nested signals.  There are no
        failures to handle signals but neither am I getting any nested signal
        handling.
      - apps/examples/elf: Add configuration options to support building the
        hello++4 example that depends upon having uClibc++ available.  Also
        add hello++5 to the ELF example  From  Leo aloe3132.
      - apps/examples/unionfs: Add a test of the union file system to
        apps/examples.

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.

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:

      - boardctl():  Add missing case causing that caused failures of PWM
        test.
      - pthread_kill(): Re-implemented pthread_kill().  It was just a simple
        wrapper around kill() but since the correct dispatching of signals
        for multi-threaded task groups has been implemented, calling kill()
        does not do what pthread_kill() is supposed to do.  The corrected
        implementation of pthread_kill() will direct the signal specifically
        to the specific pthread and no other.
      - uint32_t callbacks: Update the type passed to watchdog timer
        handlers.  Using uint32_t is a problem for 64-bit machines because
        it it too small to pass a pointer.  uintptr_t is a more appropriate
        type.
      - mq_timedreceive(): move the location where the errno value is set;
        the ETIMEDOUT errno setting was being overwritten by subsequent
        actions before returning.  Noted by Freddie Chopin.
      - POSIX message queues:  Move mq_setattr() and mq_getattr() from
        nuttx/libc/mqueue to nuttx/sched/mqueue.  Also add syscall support
        for mq_setattr() and mq_getattr().  This is necessary in protected
        and kernel builds because in those cases the message queue
        structure is protected and cannot be accessed directly from user

    * File Systems/Block Drivers/MTD:

      - MTD:  Increase the size of the fields in the geometry structure
        (again) to support larger FLASH sizes.  Needed by Sebastien Lorquet.

    * Common Drivers:

      - poll(): Fix resource leak and memory corruption on poll failure.
        From Jussi Kivilinna.

    * USB Host:

      - LPC31xx and SAMA5Dx EHCI:  Fix cache related problem in LPC31 and
        SAMA5Dx EHCI drivers. All buffers are now aligned with the cache
        line size in both starting address and in length.  This cause major
        problems in unlucky builds where the USB host buffers where
        unaligned and abutting other data. The cache flush and invalidate
        operations could be subverted by accesses to adjacent data or could
        have unexpected side effects.  This bug has been in the ECHI drivers
        forever, but was only revealed due to unlucky memory allocations
        during the integration of the hub feature.

    * USB Device:

      - All USB device class drivers:  There needs to be a check to make
        sure that the size of a returned string does not exceed the size of
        the allocated request buffer.  Strings such as vendor names or
        product names will be truncated to fit in the request buffer.

    * Networking:

      - TCP:  Correct failures in long Telnet sessions by increasing th
        size of the number of bytes sent from uint16_t to uint32_t.  This
        avoids an integer overflow that causes a long Telnet session to be
        closed unexpectedly.  From Rony XLN.
      - Network locks: Correct some network lock logic:  Two error
        conditions where the network was not being unlocked and one where it
        was getting unlocked twice.  From Jussi Kivilinna.
      - Local Sockets: Local stream sockets had problem of double releasing
        pipes (both server and client attempt release), which causes wrong
        pipe pair being closed in multi-client case. Solve by adding per
        connection instance ID to pipe names.  From  Jussi Kivilinna.
      - TCP:  Fix an important TCP networking bug: 16-bit flags was being
        converted to 8-bits in a few locations, causing loss of status
        indications.
      - TCP: net_startmonitor() always returned OK.  In the race case
        where a socket has already been closed, it correctly handled the
        disconnection event but still returned OK.  Returning OK caused the
        callers of net_startmonitor() to assume that the connection was
        okay, undoing the good things that net_startmonitor() did and
        causing the socket to be incorrectly marked as connected.  This
        behavior was noted by Pelle Windestam.
      - setsockopt() failed when setting timeouts to values less tha 100
        msec.  That is because the timeout is limited to stops of 1
        decisecond and because the conversion of structure timeval was
        truncating the microsecond remainder.  The utility
        net_timeval2dsec() now accepts and option to determine how it
        handles the remainder:  truncate, discarding the remainder, use
        the remainder to round to the closed decisecond value, or use any
        non-zero remainder to the next larger whole decisecond value.  Bug
        discovered by Librae.
      - TCP: In the TCP connection operation, it was trying to setup the
        network monitor BEFORE the socket was successfully connected.  This,
        of course, has ALWAYS failed because the socket is not yet connected
        and the TCP state is not yet correct for a connected socket.  However,
        because of other changes net_startmonitor() now returns a failure
        condition that causes worse problems when trying to connect.  The fix
        is to move the logic that starts the network monitor to AFTER the
        socket has been successfully connected.

    * Atmel SAM3/4 Drivers:

      - SAM4CM and SAMA5D Free-running timer: Logic that samples the free
        running counter reads the pending interrupt status register and can
        cause interrupts to be lost.  So, if when the status register is
        read, the logic must also handle the timer overflow event. Found
        and fixed by Max Neklyudov.

    * Atmel SAMA5 Drivers:

      - SAM3/4 Serial:  When reconfigured, serial does not receive bytes
        from UART.  This happens because RX interrupt was disabled in the
        setup routine.  Fixed this I save interrupt configuration before
        UART shutdown and restore it after.  From Max Neklyudov.

    * NXP LPC17xx Drivers:

      - LPC176x GPIO:  Reorder steps when an output GPIO is configured in
        order to avoid transient bad values from being output.  From Hal
        Glenn.
      - LPC17 USB OHCI:  Correct some initialization of data structures.
        When hub support is enabled, it would overwrite the end of an array
        and clobber some OS data structures.
      - LPC17xx Ethernet:  Review, update, and modify the Ethernet driver so
        that it works better with CONFIG_NET_NOINTS=y.  Also, update all
        LPC17xx networking configurations so that they have
        CONFIG_NET_NOTINTS=y selected.

    * SiLabs EMF32 Drivers:

      - EFM32 SPI: Add missing SPI GPIO pin initialization.  From Pierre-noel
        Bouteville.

    * STMicro STM32:

      - STM32 F3:  Added missing EXTI definitions for the STM32 F3; Correct
        an error the port D base address in the STM32 F30x and F37x memory
        maps.  From Greg Meiste.

    * STMicro STM32 Drivers:

      - STM23 RTC: Fix an error introduced into stm32_pwr_enablebkp().
        That function must preserve the previous state of backup domain
        access on return.
      - STM32 RTC counter: Now need to enable backup domain write access
        when setting the time.  From Darcy Gong.
      - STM32 OTG FS and HS: Added protection in the event that out-of-bound
        endpoint numbers are received.  From David Sidrane.

    * STMicro STM32 Boards:

      - STM32F429i Disco: (1) Fix a bad return value if the LCD driver is
        already initialized. (2) The LCD driver initialization is now
        performed during the early boot sequence.  (3) Increased the size
        of the message queue from 32 to 64 in the lcd configuration.  From
        Marco Krahl.

    * TI Tiva

      - Fixes for Tiva TM4C1294NCPDT.  From Frank Sautter.

    * Atmel SAMV71 Drivers:

      - SAMV7 TWIHS: Fix SAMV TWIHS logic that performs multi-message
        transfers with and without repeated starts.

    * Atmel SAMA5D3/4 Dirvers:

      - SAMA5 CAN: Fix SAMA5 CAN frame construction.  From Max Holtzberg.

    * C Library/Header Files:

      - stdlib.h:  MAX_RAND should be RAND_MAX.
      - assert.h: Wrap definitions of assertion macros in do while so that
        they are valid C statements.  Numerous places throughout the code
        where semicolons were missing at the end of an assertion also had to
        be fixed. Suggested by orbitalfox.
      - inetntoa(): Correct errors in printing IP address when type char is
        signed and the value is >= 128.  From Max Neklyudov.

    * Tools:

      - Tools: Fix test for the existence of the apps/ directory in
        configure.c. Fix backward interpretation of options, -l was selecting
        Windows and -w was selecting Linux. This was SourceForege Ticket #39.

    * Applications: apps/nshlib:

      - apps/nshlib/nsh_timcmds.c: Check return values from time functions.
      - apps/nshlib/: Fix handling of gmtime_r return value in time commands.
        gmtime_r returns a pointer, not an int.

    * Applications: apps/netutils:

      - apps/netutils/ntp: Fix mismatched sched_lock/unlock.  Noted by Juha
        Niskanen.

    * Applications: apps/examples:

      - apps/examples/nxlines:  Fix missing right bracket that causes
        compile error when CONFIG_NX_XYINPUT=y.  From Librae.
      - apps/examples: When boardctl() fails, need to print errno not the
        returned value which will always be -1.
      - apps/examples: Correct use of the BOARDIOC_GRAPHICS_SETUP boardctl()
        call.
Gregory Nutt's avatar
Gregory Nutt committed

NuttX-7.11 Release Notes
------------------------

The 111th release of NuttX, Version 7.11, was made on August 13 2015,
Gregory Nutt's avatar
Gregory Nutt committed
and is available for download from the Bitbucket.org website.  Note
that release consists of two tarballs:  nuttx-7.11.tar.gz and
apps-7.11.tar.gz.  These are available from:

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

Both may be needed (see the top-level nuttx/README.txt file for build
information).
Gregory Nutt's avatar
Gregory Nutt committed
9257 9258 9259 9260 9261 9262 9263 9264 9265 9266 9267 9268 9269 9270 9271 9272 9273 9274 9275 9276 9277 9278 9279 9280 9281 9282 9283 9284 9285 9286 9287 9288 9289 9290 9291 9292 9293 9294 9295 9296 9297 9298 9299 9300 9301 9302 9303 9304 9305 9306 9307 9308 9309 9310 9311 9312 9313 9314 9315 9316 9317 9318 9319 9320 9321 9322 9323 9324 9325 9326 9327 9328 9329 9330 9331 9332 9333 9334 9335 9336 9337 9338 9339 9340 9341 9342 9343 9344 9345 9346 9347 9348 9349 9350 9351 9352 9353 9354 9355 9356 9357 9358 9359 9360 9361 9362 9363 9364 9365 9366 9367 9368 9369 9370 9371 9372 9373 9374 9375 9376 9377 9378 9379 9380 9381 9382 9383 9384 9385 9386 9387 9388 9389 9390 9391 9392 9393 9394 9395 9396 9397 9398 9399 9400 9401 9402 9403 9404 9405 9406 9407 9408 9409 9410 9411 9412 9413 9414 9415 9416 9417 9418 9419 9420 9421 9422 9423 9424 9425 9426 9427 9428 9429 9430 9431 9432 9433 9434 9435 9436 9437 9438 9439 9440 9441 9442 9443 9444 9445 9446 9447 9448 9449 9450 9451 9452 9453 9454 9455 9456 9457 9458 9459 9460 9461 9462 9463 9464 9465 9466 9467 9468 9469 9470 9471 9472 9473 9474 9475 9476 9477 9478 9479 9480 9481 9482 9483 9484 9485 9486 9487 9488 9489 9490 9491 9492 9493 9494 9495 9496 9497 9498 9499 9500 9501 9502 9503 9504 9505 9506 9507 9508 9509 9510 9511 9512 9513 9514 9515 9516 9517 9518 9519 9520 9521 9522 9523 9524 9525 9526 9527 9528 9529 9530 9531 9532 9533 9534 9535 9536 9537 9538 9539 9540 9541 9542 9543 9544 9545 9546 9547 9548 9549 9550 9551 9552 9553 9554 9555 9556 9557 9558 9559 9560 9561 9562 9563 9564 9565 9566 9567 9568 9569 9570 9571 9572 9573 9574 9575 9576 9577 9578 9579 9580 9581 9582 9583 9584 9585 9586 9587

Additional new features and extended functionality:

    * Core OS:

      - clock_gettime(): Use up_timer_gettime for CLOCK_MONOTONIC in
        tickless mode.  From  Max Neklyudov.
      - waitpid(): Implement WNOHANG for waitpid() only and for the case of
        CONFIG_SCHED_HAVE_PARENT not selected.  From Max Neklyudov.
      - SCHED_SPORADIC:  Add a sporadic scheduler to NuttX.
      - Extend the processor-specific interface to include information to
        support the Sporadic Scheduler.
      - sem_tickwait():  Added this function for internal use within the OS.
        It is a non-standard but more efficient version of sem_timedwait()
        for use in higher performance device drivers.

    * Binary Loader:

    * Graphics/Graphic Drivers:

      - Graphics:  Implement anti-aliasing in order to clean the drawing of
        all edges.  Anti-aliasing is supported in the horizontal, raster
        direction only.
      - SSD1306 LCD Driver: Modify the SSD1306 LCD driver to support either
        the SPI or I2C interface.  From Alan Carvalho de Assis.

    * File Systems/Block Drivers/MTD:

      - mount: Add the ability to mount a file system on top of en existing
        node in the psuedo-file system.
      - epoll(): Add a very simple epoll layer just around poll calls. To
        satisfy build app requirements.  From Anton D. Kachalov.

    * Common Device Drivers:

      - IOCTL: Add relay IOCTL definitions. From Max Neklyudov.
      - I/O Expander Framework:  Add an I/O expander driver framework. From
        Sebastien Lorquet
      - NXP PCA9555 I/O Explander.  Add PCA9555 driver.From Sebastien
        Lorquet
      - BMP180 Barameter: Add support to Bosch BMP180 barometer.  From
        Alan Carvalho de Assis.
      - CAN IOCTLs:  Add CAN IOCTL command definitions to manage CAN message
        filtering
      - CAN Driver:  Add configuration to support DLC to byte conversions
        needed for CAN FD mode.
      - SPI Slave Interface:  Add a definition of an SPI slave interface.
      - LM92 Temperature Sensor:  Add a driver for the LM92 temperature
        sensor.  Contributed by Paul Alexander Patience.
      - AS5048B Rotary Magnetic Sensor: Add support for an AS5048B rotary
        magnetic sensor.  From Paul Alexander Patience.
      - Ramtron Driver:  Update to include supportf for newer RAMTRON parts.
        From David Sidrane.
      - MB7040 Sonar Driver: Add support for a MB7040 sonar driver.  From
        Paul Alexander Patience.
      - ms5805 Altimeter Driver: Add support for an MS5805 altimeter.  From
        Paul Alexander Patience.

    * Networking:

      - DNS Client: Implement the low-level network DNS packet protocol to
        request and receive IPv6 address mappings.
      - NetDB:  Add support for a DNS host name resolution cache.  This can
        save a lot of DNS name server lookups (but might also have the
        negative consequence of using stale IP address mappings.
      - NetDB:  Name resolution logic now supports lookups from a file like
        /etc/hosts.
      - Network Initialization: Add CONFIG_NETDEV_LATEINIT that can be
        used to suppress calls to up_netinitialize() from early in
        initialization.
      - FTMAC100 Ethernet MAC Driver. Add support for Faraday FTMCA100
        Ethernet MAC/ From Anton D. Kachalov.
      - UDP Networking:  Add support for send() for connected UDP sockets.

    * Crypto:

      - Add CFB and MAC AES modes.  From Max Neklyudov.

    * Simulation Platform:

      - Simulation: Implement board_power_off() for the simulation platform.
        This allows for a graceful exit from the simulation.

    * MoxaRT:

      - MoxaRT SoC: Add support for MoxaRT SoC found in the most Moxa serial
        converters such as NP51x0, NP66xx, UC72xx.  From Anton D. Kachalov.

    * MoxaRT Boards:

      - Moxa NP51x0: Moxa NP51x0 series of 2-port advanced RS-232/422/485
        serial device servers.  From Anton D. Kachalov.

    * ARMv6-M:

      - ARMv6-M Assertions: Port some per-process stack dumping logic from
        ARMv7-M to ARMv6-M.  From Alan Carvalho de Assis.

    * Atmel SAMD/L Boards:

      - SAML21: DMA: Add SAML21 DMA support.
      - SAMD21: Add architecture support for the SAMD21 family.
      - SAMD21-Xplained:  Board configuration for the SAMD21 Xplained board.

    * Atmel SAM3/4 Drivers:

      - SAM4E: Add default loop optimization if EEFC_FMR is available in the
        configuration (i.e., for SAM4S and 4E). From Marco Aurélio da Cruz.
      - crypto/ and SAM4CM: Add CFB and MAC AES modes.  From Max Neklyudov.
      - SAM3/4:  Add a TWI driver for the SAM4CM.  From  Max Neklyudov.

    * Freescale (NXP) Kinetis:

      - Kinetis: Add support for MK20DN--VLH5 and MK20DX---VLH5.  Needed
        for backward compatible support for Teensy-3.0.

    * Freescale (NXP) Kinetis Boards:

      - Teensy 3.x:  Add board support for the PJRC Teensy-3.0 and
        Teensy-3.1 boards.

    * Atmel SAMV7 Drivers:

      - SAMV7:  Add an MCAN driver for the SAMV7 platform.
      - SAMV7 SPI Slave Driver: Add the an SPI slave driver.

    * STMicro STM32:

      - STMicro STM32 F7:  Add architecture support for the STMicro STM32
        F7.
      - STM32 F446:  Add support for the STMicro STM32 F446.  From David
        Sidrane.

    * STMicro STM32 Drivers:

      - STM32 F7:  Add an STM32 F7 Ethernet driver.
      - STM32 F7:  Port the STM32 F4 DMA driver.
      - STM32 F4 ADC:  Add DMA support to the ADC driver for STM32 F4.  From
        Max Kriegler.

    * STMicro STM32 Boards:

      - STM32F762G-Disco:  Add support for the STMicro STM32 F7 Discovery
        board.
      - STM32F4-Disco: Add support to BMP180 driver on the STM32F4 Discovery.
        From Alan Carvalho de Assis.

    * C Library/Header Files:

      - Add asctime(), asctime_r(), ctime(), and ctime_r().
      - sethostname(): Add support for sethostname().
      - gethostbyname() and gethostbyaddr():  Add support for
        gethostbyname() and gethostbyaddr().  Also support included for the
        non-standard gethostbyname_r() and gethostbyaddr_r().  This moves
        the DNS client logic from apps/ into the NuttX libc implementation.

    * Tools:

      - testbuild.sh:  Add a script that can be used to perform building
        testing for several board configurations.

    * Build/Configuration System:

      - apps/ Build System:  No longer depends on hardcoded lists of
        directories. Instead, it does a wildcard search to find all
        appropriate directories.  This means that to install a new
        application, you simply have to copy the directory (or link it) into
        the apps/ directory.  If the new directory includes a Makefile and
        Make.defs file, then it will automatically be included in the build.
      - mkkonfig.sh: Add the tool mkkconfig.sh that dynamically builds the
        apps/Kconfig file at configuration time.  The hardcoded
        configuration file has been removed and now the top-level Makefile
        executes tools/mkkconfig.sh to auto-generate the top-level Kconfig
        file.  A new apps/ make target call preconfig: was added to support
        this operation.  Now you do not have to modify the top-level Kconfig
        file to add a new directory into the configuration; the top-level
        subdirectory simply needs to include a Kconfig file and it will
        automatically be included in the configuration.  The native Windows
        build is temporarily broken until a new apps/tools/mkconfig.bat
        script is generated.
      - mkkconfig.bat:  Add the Windows script corresponding to
        apps/tools/mkkconfig.sh.  Needed for a Windows native build.

    * Applications: apps/nshlib:

      - NSH shutdown command: NSH will now support an (optional) shutdown
        command if the board provides the option CONFIG_BOARDCTL_POWEROFF.
        The command can also be used to reset the system if
        CONFIG_BOARDCTL_RESET=y.
      - NSH uname command:  Add support for a uname command.
      - NSH nslookup command:  Add an nslookup command.

    * Applications: apps/system:

      - NetDB:  Add a system command to access the network database.
      - readline():  Add support for Unix-style tab complete to readline.
         Contributed by Nghia Ho.
      - readline():  Extended the tab-completion support to also expand NSH
        command names.
      - readline():  Add support for an in-memory command line history that
        can be retrieved using the up and down arrows.  Contributed by Nghia
        Ho.

    * Applications: apps/netutils:

      - DNS client:  Moved the DNS client logic into the NuttX C library.
        It is a necessary part for the full implementation of the netdb logic
        and provides more flexibility in that location.
      - Replace calls to the non-standard dns_gethotip() with calls to
        standard gethostbyname().
      - NetLib: Create netlib wrapper functions around dns_getserver() and
        dns_setserver() to isolate application code from changes to those
        interfaces.

    * Applications: apps/examples:

      - OS test:  Extend the OS test to include a test of
        pthread_mutex_trylock() for recursive mutexes. From Juha Niskanen.
      - OS test: Add a test for the sporadic scheduler.

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:

      - pthreads: Use -1 instead of 0 as PID for unclaimed mutexes.  From
        Juha Niskanen.
      - pthreads: Implement pthread_mutex_trylock() for recursive mutexes.
        From Juha Niskanen.
      - pthread_create():  Group binding needs to be cleared before
        sched_releasetcb(), as otherwise group_leave() will be called and
        group->tg_nmembers decremented or group being released. group_leave()
        should be called only after group_join() is called, not after
        group_bind().  From Jussi Kivilinna.
      - Protected Mode User Memory Allocator: Redesigned how the user space
        heap is accessed from the kernel code in protected mode.  It used to
        call memory management functions in user space via function pointers
        in the userspace interface.  That is inefficient because the first
        thing that those memory management functions do is to trap back into
        the kernel to get the current PID.  Worse, that operation can be
        fatal is certain fragile situations such as when a task is exiting.
        The solution is to remove all of the memory management function
        calls from the interface.  Instead, the interface exports the users
        pace heap structure and then kernel size implementations of those
        memory management functions will operate on the userspace heap
        structure. This avoids the unnecessary system calls and, more
        importantly, failures do to freeing memory when a test exits.
      - pthread_create(): Fix an (unlikely) error in fallback value in the
        event of a failure (which should never occur).

    * Common Drivers:

      - STMPE811 Driver:  In stmpe811_instanciate() when
        CONFIG_STMPE811_MULTIPLE is enabled, and the call to
        stmpe811_checkid() fails, then the linked device list is not
        restored to its previous state. From Sebastien Lorquet.
      - CAN driver:  Fix an issue in the CAN driver where the rx_sem count
        can grow beyond bounds.

    * File System/Block Drivers:

      - NFS client: Fix prototype of unbind method.  The function prototype
        was not updated for NFS after a recent change to the file system
        interface.  From Manuel St??.

    * Networking/Network Drivers:

      - netconfig.h:  Fix some backward compilation that was emitting #error
        in the wrong condition when SLIP was enabled.
      - SLIP Driver:  Fix a missed name change when many of network
        interface names changed sometime back but were apparently never
        updated for SLIP.
      - Networking:  Allow receipt of empty UDP packets.  From Max Neklyudov.

    * ARMv6-M:

      - ARMv6-M: Fix Cortex-M0 assembly error when the interrupt stack is
        enabled.  From Alan Carvalho de Assis.

    * Atmel SAMD/L Drivers:

      - SAMD20, D21, L21: In the SAML21, SERCOM5 uses a different SLOW clock
        channel (and, hence, also a different SLOW GCLK generator).  This
        means that the channel selection cannot be a global definition but
        must be a per SERCOM configuration setting.
      - SAMD/L:  Several fixes to register definitions and types. From
        Janne Rosberg.

    * Atmel SAM3/4 Drivers:

      - SAM3/4 UART: Back out an error introduced with commit
        02c33f66c5a8be774034cd40e4125e9323c7b4d8.  Causes an infinite loop in
        up_lowputc().  From Max Neklyudov.
      - SAM4CM: Fix SUPC register definitions. From Max Neklyudov.
      - SAM3/4 WDT: Correct some problems with SAM3/4 watchdog driver.
        Includes some small improvements.  From Max Neklyudov.

    * Atmel SAMV7 Drivers:

      - SAMV7 UART: Also back the bad cloned change o sam_lowputc.c for
        SAMV7 platform.

    * NXP LPC43xx Drivers:

      - LPC4350: Correct some LPC4350 GPIO pin configurations.  From
        Alessandro Temil.

    * SiLabs EMF32 Drivers:

      - EFM32 SPI: Correct write to incorrect register in EFM32 SPI driver.
        From Pierre-noel Bouteville.

    * STMicro STM32 Drivers:

      - STM32 F15x: STM322 F15x stm32_stdclockconfig() was calling
        stm32_pw_setvos() which accessed PWR_CR via an inactive APB From
        Juha Niskaneni.
      - STM32 Ethernet: Extend STM32 Ethernet operating frequency to 180MHz.
        From Sebastien Lorquet.

    * STMicro STM32 Boards:

      - SAMV7 Xplained: In clock configuration, divider was set to 25 to get
        25*12MHz=300MHz CPU clock.  The correct multiplier is 24 because the
        calculation if (24+1)*12MHz.  So the board was running at 312MHz.
        From Efim Monjak.

    * ARMv7-A:

      - Cortex-A5 vfork():  Fix a Cortex-A compilation error when system
        calls are enabled in modes other than CONFIG_BUILD_KERNEL.
Gregory Nutt's avatar
Gregory Nutt committed

    * Atmel SAMA5 Drivers:

      - SAMA5Dx EHCI:  Fix some bad conditional compilation that left a
        function undefined if CONFIG_USBHOST_ASYNCH is not selected.

    * C Library/Header Files:

      - getopt():  Uninitialized variable can cause hardfault from getopt()
        if required argument is missing. From George McWilliams.

    * Applications: apps/nshlib:

      - NSH/THHPD:  Change decoding to handle the increased size of the
        scheduling policy field in the TCB.

    * Applications: apps/netutils:

      - THTTPD:  Fix compilation problems when
        CONFIG_THTTPD_GENERATE_INDICES is defined.
      - THTTPD: Missing gci-src as a dependency path when building with
        BINFS enabled.

    * Applications: apps/examples:

      - poll() example: Fix a few bit-rot compilation errors.
      - Nx Lines example:  If CONFIG_NX_ANTIALIASING=y, then the nxlines
        example now erases a line that is 2 pixels longer and 2 pixels wider
        than the line it drew.  That eliminates edges effects due to
        applying the anti-aliasing algorithm twice.  A better solution
        would be to make anti-aliasing an option for each graphics call so
        you would rend the line with anti-aliasing ON and clear it with
        anti-aliasing OFF. but I don't have the wherewithal for that change
        today.
      - OS test: Improve synchronization in round robin tests. On very fast
Gregory Nutt's avatar
Gregory Nutt committed
        processors, there are race conditions that make the test fail.
Gregory Nutt's avatar
Gregory Nutt committed
        Need better interlocking to assure that the threads actually do start
        at the same time.
Gregory Nutt's avatar
Gregory Nutt committed

NuttX-7.12 Release Notes
------------------------

The 112th release of NuttX, Version 7.12, was made on October 1, 2015,
and is available for download from the Bitbucket.org website.  Note
that release consists of two tarballs:  nuttx-7.12.tar.gz and
apps-7.12.tar.gz.  These are available from:

    https://bitbucket.org/patacongo/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:

    * Graphics/Graphic Drivers:

      - Added SSD1351 OLED controller support.  Contributed by Paul
        Alexander Patience.

    * Common Device Drivers:

      - MS58xx: Generalize the MS5805 altimeter driver to support other
        family members. From Paul Alexander Patience.
      - CAN driver interface: Add an error indication bit to the CAN
        message report.
      - Developed a new interface for QSPI.  Most QSPI hardware (such as the
        SAMV71) used a programmed interface to access the QuadSPI FLASH.
        That programmed interface is no compatible with the simpler NuttX
        SPI data transfer interface.
      - Added a driver for ST25L1*K QuadSPI parts.
      - Renamed the battery driver interface to battery_gauge since it
        really only implements a battery fuel gauge.  From Alan Carvalho de
        Assis.
      - Added a new framework to support a batter charger interface.  From
         Alan Carvalho de Assis.
      - Added a BQ24250 battery charger driver. From Alan Carvalho de Assis.

    * Networking:

      - Added support for the local loopback device (dev lo, hostname localhost).
      - Added NetDB support for the local loopback device.
      - Network initialization:  Automatically initialize all the TUN and
        loopback devices if they arein the configuration.

    * Simulation Platform:

      - The simulation now runs under Cygwin64.  Modern Cygwin X86_64
        machines follow the Microsoft ABI for parameter passing.  The Linux
        System 5 ABI would not work on X86_64-based Cygwin machines.  Newer
        Cygwin tool chains do nor pre-pend symbol names with the underscore
        character.

    * Atmel SAMA5Dx:

      - Added architectural support for the Atmel SAMA5D2 parts.  Not fully
        verified in this NuttX release.

    * Atmel SAMA5Dx Boards:

      - Added support for the Atmel SAMA45D2 Xplained Ultra board.  Not
        fully verified in this NuttX release.

    * Atmel SAMV7 Drivers:

      - SAMV7 USBHS DCD: The device controller driver is (finally)
        functional.

    * NXP LPC17xx:

      - Implement options to use external SDRAM and or SRAM for the heap.
        From Pavel Pisa.

    * NXP LPC43x:

      - Added architectural support for the LPC4370.  From Lok Tep.

    * NXP LPC43xx Drivers:

      - Added Ethernet support.  From Ilya Averyanov.
      - Added LPC43xx EHCI driver from Ilya Averyanov.

    * NXP LPC43xx Drivers:

      - Added support for the NXP LPC4370-Link2 development board from Lok
        Tep.

    * STMicro STM32:

      - Added architectural for STM32F303K6, STM32F303K8, STM32F303C6,
        STM32F303C8, STM32F303RD, and STM32F303RE devices.  From Paul
        Alexander Patience.

    * STMicro STM32 Drivers:

      - Added OTG support for STM32F44x.  From David Sidrane.

    * STMicro STM32 Boards:

      - Added support for the STMicro Nucleo F303ERE board from Paul
        Alexander Patience.

    * C Library/Header Files:

      - stdlib: Add support for div() to the C library.  From OrbitalFox.
        Also added ldiv() and lldiv() which are equivalent to div() with
        long and long long types, respectively, instead of int.
      - Added an implementation of the standard shutdown function.

    * Tools:

      - tools/mksymtab: declare g_symtab array as const to occupy RO section
        (Flash).  From Pavel Pisa.

    * Build/Configuration System:

      - Simplify configs/ Makefiles by combining common logic into a new
        Board.mk Makefile fragment.  From Paul Alexander Patience.

    * Applications: apps/system:

      - apps/system/symtab: Optional canned symtab inclusion to the build.
        When option CONFIG_SYSTEM_SYMTAB is selected and symbol table file
        libc/symtab/canned_symtab.inc is prepared then application can use
        system provided complete symbol table. The option has substantial
        effect on system image size. Mainly code/text. If loading of
        applications at runtime is not planned do not select this.  From
        Pavel Pisa.

    * Applications: apps/canutils:

      - apps/canutils/uavcan: Add support for libuavcan.  From  Paul Alexander Patience.

    * Applications: apps/examples:

      - apps/examples/can:  Extend the CAN loopback test by adding more
        command line options.
      - apps/examples/usbserial: Can now be run as an NSH builtin-function.
        Now uses a configurable IO buffer size.
      - apps/examples/nettest: Add option to suppress network initialization.
        This is necessary if the nettest is run from NSH which has already
        initialized the network.
      - apps/examples/nettest: Extend test so that can be performed using
        the local loopback device.
      - apps/examples/netloop:  Add a test of the local loopback device.
      - apps/examples/udpblaster: Add a test to stress the network by
        sending UDP packets at a very high rate. .
      - apps/examples/uavcan: libuavcan example from Paul Alexander Patience.

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:

      - wd_create():  Correct a counting error in the number of available
        watchdog timers.  When the number of free timers is low, the counter
        could be incremented below zero.
      - mq_open(): When message queue is opened, inode_reserve() leaves the
        reference count at zero.  mq_open() logic must assure that the
        reference count of the newly created inode is one.
      - work_queue(): Logic that sets the queued indication and the logic
        that does the actual queuing must be atomic.

    * Binary Loader:

      - Fix a memory leak in the built-in application logic: File was not
        being closed. From Bruno Herrera.

    * File System/Block Drivers:

      - poll():  If we fail to setup the poll for any file descriptor, for
        any reason, set the POLLERR bit.
      - rwbuffer: Fix some logic errors.  From Dmitry Nikolaev via Juha
        Niskanen.
      - ROMFS: One allocation was not being freed if there was a subsequent
        failure to allocation I/O buffers resulting in a memory leak on
        certain error conditions.  From Bruno Herrera.

    * Networking/Network Drivers:

      - Fix a bug in tun interface driver.  From Max Neklyudov.
      - recvfrom(): Correct wait for new data when NET_UDP_READAHEAD is
        enabled.  Fix size accounting when recvfrom_udpreadahead() sets
        state.rf_recvlen == -1.  I have not checked if data are accumulated
        to the right position in the buffer however. From Pavel Pisa.
      - networking:  Correct return value from psock_tcp_accept().  From
        SaeHie Park.
      - TCP: Fix a problem in when there are multiple network devices.
        Polls were being sent to all TCP sockets before. This is not good
        because it means that packets may sometimes be sent out on the wrong
        device.  That is inefficient because it will cause retransmissions
        and bad performance.  But, worse, when one of the devices is not
        Ethernet, it will have a different MSS and, as a result, incorrect
        data transfers can cause crashes. The fix is to lock into a single
        device once the MSS is locked locked down.
      - net/tcp:  The logic that binds a specific network device to a
        connection was faulty for the case of multiple network devices.  On
        bind(), the local address should be used to associate a device with
        the connection (if the local address is not INADDR_ANY); On connect(),
        the remote address should be used (in case the local address is
        INADDR_ANY).  On accept(), it does not matter but the remote address
        is the one guaranteed to be available.
      - net/tcp: Fix unbuffered send compilation error when Ethernet is not
        enabled.  From Alan Cavalho de Assis.

    * ARMv7-M:

      - All ARMV7-M IRQ setup:  Always set the NVIC vector table address
        unconditionally.  This is needed in cases where the code is running
        with a bootload and when the code is running from RAM.  It is also
        needed by the logic of up_ramvec_initialize() which gets the vector
        base address from the NVIC.  Suggested by Pavel Pisa.
      - Fix some H/W floating point logic: In the original implementation,
        !defined(CONFIG_ARMV7M_CMNVECTOR) was a sufficient test to determine
        if lazy floating point register saving was being used.  But recents
        changes added common lazy register as well so now that test must be
        (!defined(CONFIG_ARMV7M_CMNVECTOR) || defined(CONFIG_ARMV7M_LAZYFPU)).
      - ARMv7-M, all "lazy" interrupt stack logic.  Assembly instruction
        that fetches the saved value is incorrect; replace with more
        traditional push and pop.  This is an important fix.  Noted by
        Stefan Kolb.
      - All ARMV7-M: Force 8-byte stack alignment when calling from assembly
        to C to interrupt handling.
      - up_schedulesigaction(): Fix logic that determines if there is a
        pending signal action before scheduling the next signal action.
        Both the test and the scheduling action need to be atomic.  This
        problem was fixed on the ARMv7-M but also ported to other
        architectures that had the same issue.

    * NXP LPC43xx:

      - LPC43xx: Fix NVIC_SYSH_PRIORITY_STEP define.  From Ilya Averyanov.
      - LPC43xx: Fix missing #define in eeprom.  From Ilya Averyanov.

    * NXP LPC43xx Drivers:

      - Fixed the SPI driver.  From Ilya Averyanov.

    * Atmel SAMA5 Drivers:

      - LPC31 and SAMA5D EHCI: Fix qh_ioccheck to move bp to next QH.  From
        Ilya Averyanov.
      - LPC31 and SAMA5D EHCI:  Performance improvement:  Do not disable the
        asynchronous queue when adding a new QH structure.  From  Ilya
        Averyanov.

    * C Library/Header Files:

      - gethostbyname(): correct returned address format when DNS is used.
        The hostent.h_addr_list should point to raw in_addr or in6_addr
        as defined in the standard. Original implementation used that for
        numeric addresses but for DNS lookup returned pointer to whole
        sockaddr_in or sockaddr_in6.  From Pavel Pisa .
      - asin(): The function did not convert for some input values.  asing()
        did not convert for values which do not belong to the domain of the
        function. But aside of that the function also did not converge for
        allowed values.  I achieved a conversion of the function by
        reducing the DBL_EPSION and by checking if the input value is in
        the domain of the function. This is a fix for the problem but the
        function should always terminate after a given number of iterations.
        From Stefan Kolb.
      - Change all references from avsprintf to vasprintf.  From Sebastien
        Lorquet.

    * Applications: apps/nshlib:

      - Fix error handling in 'cat' command.  On a failure to allocate
        memory, a file was not being closed.  From Bruno Herrera.
      - Fix error handling in 'mv' command.  On a failure to expand the
        second path, the memory allocated for the expansion of the first
        path was not being freed.  From Bruno Herrera.

    * Applications: apps/system:

      - apps/system/netdb:  Failed to build if CONFIG_NET_HOSTFILE was not
        defined because gethostbyaddr() was not available.  Noted by
        OrbitalFox.

    * Applications: apps/netutils:

      - Various Kconfig files in netutils:  Fix some changes from from
        NETUTILS_DNSCLIENT to NETDB_DNSCLIENT.  From Pavel Pisa.

    * Applications: apps/modbus:

      - Macros PR_BEGIN_EXTERN_C and PR_END_EXTERN_C were not defined in
        all contexts.  Replace with explicit expansion in all cases. From Stefan Kolb.
Gregory Nutt's avatar
Gregory Nutt committed

NuttX-7.13 Release Notes
------------------------

The 113th release of NuttX, Version 7.13, was made on December 5, 2015,
and is available for download from the Bitbucket.org website.  Note
that release consists of two tarballs:  nuttx-7.13.tar.gz and
apps-7.13.tar.gz.  These are available from:

    https://bitbucket.org/patacongo/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:

      - External RTC:  Added OS support for external RTC chips.
      - boardctl():  Add a command to the boardctl() interface to obtain a
        board unique ID.

    * File Systems:

      - TMPFS:  Add support for a new TMPFS, RAM file system.  The TMPFS
        file system does not require any significant amount of memory
        itself.  It will grow dynamically as files are added and shrink back
        when files are deleted.  A very low overhead way to retain temporary
        files.
      - VFS:  The VFS was extended to support standard file operations on
        block drivers (open, close, read, write, etc.).  The open() interface
        accomplishes this by creating a temporary characer driver to mediate
        the character oriented accesses to tje block driver.
      - HOSTFS:  Added a HOSTFS file system for use with the simulator.  The
        HOSTFS file system mounts in the simulated Nuttx context by provides
        proxied access to the file system on the host PC.  This is useful for
        providing file system content and nonvolatile storage of files in the
        simulation environment.  From Ken Pettit.
      - MTD/PROCFS:  Add an interface to un-register an MTD procfs entry.
        From Ken Pettit.
      - filemtd:  A new MTD conversion layer that will convert a regular file
        (or driver file) to an MTD device.  This is useful for testing on the
        simulation using the HOSTFS.  From Ken Pettit.
      - PROCFS:  Extended to include networking entries in the procfs. Device
        status, device statistics, and network statistics are now available
        from the PROCFS.
      - PROCFS:  The PROCFS file system can now be configured so that it
        supports runtime registration of PROCFS entries with
        CONFIG_FS_PROCFS_REGISTER=y.

    * Graphics/Graphic Drivers:

      - ST7565 Driver:  Extend to include support for the ERC12864-3. From
        Pierre-noel Bouteville.

    * Common Device Drivers:

      - User buttons: Added a character driver to support application access
        to board buttons.  Supports notification of button activity via
        signals.
      - User LEDs:  Added a character driver to support application access
        to on-board LEDs.
      - Zero Cross: Added a Zero Cross device driver support.  From Alan
        Carvalho de Assis.
      - MAX6675:  Added support to Thermocouple-to-Digital converter MAX6675.
        From Alan Carvalho de Assis.
      - BCH:  Block-to-character (BCH) driver should forward ioctl() calls
        to the contained block driver.
      - S25FL1xx:  Added a S25FL1xx QuadSPI FLASH driver.
      - On-Chip FLASH: Added an upper half MTD device that can use the
        interfaces defined in included/nuttx/progmem.h to provide a
        standard MTD driver.
      - Serial: Implemented high level DMA infrastructure for serial
        devices.  From Max Neklyudov.
      - AT24XX:  Add support for multiple AT24xx EEPROM parts, each with
        unique I2C addresses, but otherwise identical.
      - External RTC:  Added drivers for external I2C RTC chips: DS3102,
        DS1307, DS3231, DS3232, and NXP PCF85263.
      - W25: Added support for byte write mode to the W25 FLASH driver. From
        Ken Pettit.
      - dev/loop:  Added a loop character device.  losetup() and loteardown()
        should not be called directory from applications. Rather, these
        functions are now available as IOCTL commands to the loop driver.