Skip to content
ReleaseNotes 303 KiB
Newer Older
Gregory Nutt's avatar
Gregory Nutt committed
      - Enhanced the FAT32 filesystem code to understand DMA preflight
        failures, and to use the file sector buffer as a bounce buffer when
        a user-supplied buffer is not suitable for DMA. From Mike Smith.

    * Atmel AT91 SAMA5D3x

      - Add support so that subsets of the total DRAM (and other external
        memory) can be added to the heap, leaving other memory reserved for
        other purposes (like the LCDC framebuffers).

    * Atmel AT91 SAMA5D3x Drivers:

      - Use more descriptive task names when starting the EHCI and OHCI
        monitor tasks.
      - Added a 10/100Base-T Ethernet (EMAC) driver.
      - Added a 1000Base-T Ethernet (GMAC) driver.
      - Added a Real Time Clock (RTC) driver and integrated with the NuttX
        system time logic.
      - Added support for /dev/random using the SAMA5D3x True Random Number
        Generator (TRNG).
      - Added a Watchdog Timer (WDT) driver.
      - Added a Timer/Counter (TC) library with interface that make be used
        by other drivers that need timer support.
      - Added an ADC driver that can collect multiple samples using the
        sequencer, can be trigger by a timer/counter, and supports DMA data
        transfers.
      - Added a touchscreen driver based on the special features of the
        SAMA5D3 ADC peripheral.
      - Added an LCD controller (LCDC) frame buffer driver.
      - Added a CAN driver.  However, testing has been delayed because of
        cabling issues.
      - Basic header file support is available for the Image Sensor
        Interface (ISI) camera interface.  Work on the camera driver is
        underway and is expected in the next release.

    * Atmel AT91 SAMA5D3x-EK Development Boards

      - Add OS test support for the FPU test.
      - Enable the task name feature board configuration sto provide
        prettier ps command output.
      - Added NX and NxWM configurations to verify the LCD and touchscreen.
        There are still some outstanding issues with the NxWM configuration
        as of this release.
      - The TRNG and /dev/random are now enabled by default in the demo
        configuration.

    * Atmel AT91 SAM3/4 Boards:

      - Add configuration to select revision 3 of the Arduino Due which has
        some small but important differences.  Suggested by gdi@embedders.org.

    * STMicro STM32:

      - Add support for the STM32F207ZE chip. From Martin Lederhilger.

    * STMicro STM32 Boards:

      - Add configuration for the Spark Core.  The initial check-in is
        basically the Maple Mini board and subsequent development by David
        Sidrane is his special Spark emulation hardware.  The configuration
        should be very mature when actual Spark hardware is available.
      - Support for the Olimex STM32 P207 board added by Martin Lederhilger.
      - Configuration for the Mikroe STM32F4 board configuration updated for
        audio support by Ken Pettit.

    * NXP LPC17xx Boards:

      - zkit-arm-1769:  LED1 is now user controllable after booting. From
        Rashid Fatah.

    * Kinetis KL Drivers:

      - PIT and TPM register definitions header files for the from Alan
        Carvalho de Assis.
      - Added low-level getc() function for operation with no file system.
        The KL25Z can now support NSH in a very minimal system that does
        not even have a file system.

    * Kinetis KL Boards

      - A new configuration called minnsh was added is an experiement to
        see how small we can get the NuttX footprint and still support NSH.
        From Alan Carvalho de Assis..

    * TI Calypso Phones:

      - Basic board support for the Motorola C139 (Compal E86) phone.  From
        Craig Comstock.

    * Applications:

      - Moved several useful examples from apps/examples to apps/system.
        This includes USB MSC, USB CDC/ACM, and USB Composite.
      - New addroute and delroute commands added to NSH in order to manage
        the network routing table.
      - Numerous enhancements and updates to the CC3000 example from David
        Sidrane.
      - Add a new stack monitor daemon that can be used to constantly
        monitor stack usage by all threads.
      - Numerous changes to get NSH working with no file system.  Basically
        this suppresses I/O redirection and replaces file I/O with calls to
        low-level console read/write functions.  Suggested by Alan Carvalho
        de Assis.
      - apps/system/nxplayer: A new, command-line media player called
        'nxplayer' from Ken Pettit.
      - apps/examples/random:  Add a simple test that dumps values from
        /dev/random.
      - apps/examples/adc:  Add support so that a ADC driven by software
        triggering can be tested.

    * Build System:

      - The MKDEP tools now support a new argument that identifies the
        object file path.

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

    * kconfig-fronted Configuration:

      - Conversion of old configurations to use the kconfig-frontends
        tool is an ongoing effort that will continue for some time.
        At this time, only 48% of the configurations have been converted
        to use the kconfig-frontends tools.

Bugfixes (see the ChangeLog for details).  Some of these are very important:

    * Initialzation and Scheduling:

      - IDLE thread initialization logic should not call group_setupidlefiles()
        if there are no file descriptors (and, hence, no file system).
      - Fix some cornercase error handling logic:  If sched_releasetcb() is
        called as part of a failed pthread startup before the flags field in
        the TCB has been initialized, then a crash occurs. Pointed out by
        David Sidrane.

    * Networking / Network Drivers:

      - Look up of a device using subnet will fail if the packet is being
        sent out of our subnet (via a router). The fallback here is just to
        use the only device ("eth0") if the subnet lookup fails (this logic
        was extended to handle multiple Ethernet devices by adding a simple
        routing table).
      - Fix some backward conditional logic in send() that enabled the
        check if the ARP address is in the ARP table.  From Max Holtzberg.
      - Notify the socket layer from the network monitor if a connection is
        lost before the monitoring callback has been registered.  From Max
        Holtzberg.
      - send():  Reset the send timeout when the data is ACKed, not when the
        data is sent.  Remove conditions on checking for timeout.  From Max
        Holtzberg.
      - Correct how the TCP/IP initial minimum MSS is calculated. Max
        Holtzberg.
      - TCP state machine: Move tcp connection into SYN_RCVD state after
        aception instead of bypassing and moving directly into ESTABLISHED.
        From Max Holtzberg.
      - Numerous fixes to the ENCX24J600 driver from Max Holtberg.

    * USB Drivers:

      - Change naming of SELFPOWERED and REMOTEWAKEUP to avoid name
        collisions.  Prepend the name of the driver (for example
        CDCACM_SELFPOWERED).
      - CDC/ACM class driver:  Change the interval for the interrupt
        endpoint from 0xff (invalid) to 10.  This is not a critical
        change but will avoid a complaint from the Linux driver when
        it overrides the 0xff value.

    * ARM Cortex-A5:

      - Fix an error in data cache clean and invalidate functions: Fix of
        addresses to cache line boundaries.

    * Atmel AT91 SAMA5D3x Drivers:

      - Correct some inconsistencies in the way that USB configuration
        settings are used.  This caused compilation errors in SAMA5 OHCI
        when USB debug was ON but USB host tracing was off.
      - When 480MHz UPLL is used to drive OHCI, it should have a divider
        of 10.  However, that does not work.  A divider of 5 does.  Why?.
      - OHCI HCD: Fix a place where DMA-related data needed to be flushed
        to data cache; Fix another where a virtual address was being used
        in a register where a physical address was required.
      - HSMCI Driver: TX DMA disabled.  It is just not reliable. No idea
        why.  RX DMA is still used.
      - STM32F103C pinmapping corrections from David Sidrane.

    * Atmel SAMA5D3x-EK Board

      - Increase the number of pre-allocated watchdog timers.  The default
        number of 4 was easily being exhausted in the more complex
        configurations.

    * STMicro STM32:

      - STM32 F4 DMA definitions: Typo fixes for UART7 and UART8 DMA
        configs.  From Mike Smith.
      - DMA priority configuration corrections from Mike Smith.
      - Changes to the stm32_dmacapable API. In order to correctly
        verify that a buffer can be transferred, the transfer count and
        the CCR value are required.  Implemented stm32_dmacapable for
        stm32f1xx devices. Enhanced stm32_dmacapable for stm32f2xx and
        stm32f4xx devices to check for additional conditions that will cause
        DMA to fail or lose data.
      - STM32 F1 DMA fix from David Sidrane: The DMA_CNDTRx register
        cannot be modified if the DMA channel is disabled.

    * STMicro STM32 Drivers:

      - Fix compilation errors from bad bit definitions in ADC and PWM
        register.  From Martin Lederhilger.
      - DMA-related fixes to the SPI driver from Ken Pettit.

    * NXP LPC17xx Drivers:

      - Remove undefined spi_select() prototype.  This was causing compile
        time warnings.

    * NXP LPC17xx Boards:

      - zkit-arm-1768:  MMC/SD is on SPI, not SSP0.  From Rashid Fatah.

    * C Library

      - scanf() fixes from kfrolov: 1) sscanf() function hangs in the
        following example: sscanf("2", "%u,%u,%u,%u", ...), 2) sscanf()
        returns incorrect number of parsed numbers if some arguments
        can't be parsed: sscanf("=2", "%u,%u,%u,%u",...)==1 instead of
        0, and 3) using of char* instead of const char* in vsscanf
        function leads to warnings from GCC.

    * Build System

      - Dependency generation generation was broken for directories that
        keep objects in a sub-directory.  The MKDEP tools now support a new
        argument that identifies the object file path.
      - tools/define.sh:  'cut' no longer works as it once did.  Script
        adapted to observed behavior.

    * Applications:

      - Remove a warning from the NSH library when DHCP is not enabled.
      - Default NSH IP address should be 0x0a000001 (10.0.0.1), not
        0xa0000001 (160.0.0.1).  Ditto for the gateway.
      - Add some missing options to the OS test Kconfig file
      - Fix some bad conditional compilation in the USB monitor.
      - Fix default I2C frequency used by the I2C tool:  400KHz instead
        of 4MHz.  Suggested by Max Kriegleder.
      - Increase stack size for the system/info command. Ken Petit
        reports that this simple command can exceed its 768 stack size
        under certain conditions.  The size is marginal and has been
        increased to 1024 by default but is also now configurable.
      - apps/Makefile:  Needs to include external/Make.defs if we want
        allow external applications to participate in the NuttX
        configuration.  Suggested by gdi@embedders.org.
      - apps/netutils/telnetd:  Missing argument to debug statement
        can cause crashes in certain error conditions. From David
        Sidrane.
      - apps/examples/can:  Correct an error in a debug statement.  From
        Martin Lederhilger.

NuttX-6.32
----------

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

Additional new features and extended functionality:

    * General:

      - Extension and standardization of stack debug logic.  Now includes
        coloration of the IDLE and interrupt stacks as well as the heap.
        Suggested by David Sidrane.

    * Audio Subsystem and Audio Drivers:

      - I2S interface definition.  Integrates with audio sub-system.
      - VS1053 worker thread stack size is now configurable and assigned a
        name via pthread_setname_np(). From Ken Pettit.

    * Networking / Network Drivers

      - Updates and adaptations to support for TI CC3000 wireless module
        from David Sidrane.  These updates include multi-threading support
        and interface and header file changes to integrate more seamlessly
        with NuttX applications.

    * File Systems:

      - procfs:  Add support for a tiny procfs file system.  The initial
        offering is little more that a proof of concept but may be developed
        further in subsequent releases.
      - NXFFS:  An initial attempt was made to integrate NXFFS with the NAND
        MTD driver.  Changes were made to handle bad blocks.  However, I
        later realized that NXFFS cannot handle NAND because the way that
        is re-writes blocks is incompatible with the NAND ECC handling.
        These changes were backed-out so as not to introduce turmoil, but
        can be re-enabled if needed via configuration option.
      - NXFFS: Make the start up scan of the media a configuration option.
        It just takes to long and is not really necessary!  Those rare cases
        where the scan was helpful can be fixed using flash_eraseall().

    * General Drivers:

      - I2S:  A simple character driver was added to support I2S accesses.
        This driver in its current state is intended only to support I2C
        testing and would not be appropriate to used for any real driver
        application.

    * MTD Drivers

      - Add a container for an MTD device that can be used to provide a
        simple, lightweight interface to configuration data storage that
        resides on some storage media that is wrapped as an MTD device.
        From Ken Pettit.
      - New interface definition for lower half NAND drivers.
      - MTD Nand:  Add MTD NAND driver that will support ONFI devices,
        non-ONFI devices (via table lookup), bad block checking, software
        ECC (Hamming), and will interact with the lower-half, hardware-
        specific, NAND driver.  Based on BSD-compatible Atmel sample code.
      - MTD geometry structure is now packed so that it can support larger
        erase block sizes needed by NAND without increasing the size of
        the geometry structure.
      - SST25:  Add another SST25 SerialFlash driver, sst25xx.c.  This one
        differs from sst25.c in that it supports larger SST25 parts:  In
        the larger parts support page write instead of byte/word writes
        like the smaller parts.  From Ken Pettit.

    * USB Drivers

      - STM32 F1 USB Device: Add support for decoded USB trace strings.
        From David Sidrane.

    * ARM

      - Add more ARM9 cache management functions to flush and invalidate
        D-Cache for DMA support.

    * Atmel AT91 SAMA5D3x Drivers:

      - Many new drivers including CAN, PWM, SSC/I2S
      - PCK:  Add support for programmable clock outputs.
      - NAND: Driver with hardware ECC and DMA support
    * Atmel AT91 SAMA5D3x Boards:

      - SAMA5D3x-EK: Add support for the apps/examples/i2schar test.
      - SAMA5D3x-EK: Provides board-specific memory controller initialize
        for NAND flash.
      - SAMA5D3x-EK: Add support for "auto-mounting" NAND MTD block driver
        or NXFFS file system.

    * Atmel AT91 SAM3/4 Boards:

      - Basic support for the Atmel SAM4E family.  From Mitko.

    * STMicro STM32:

      - Added support for the STM32F429.  From Ken Pettit.
      - Added support for GPIOK and GPIOJ.  From Ken Pettit.

    * STMicro STM32 Drivers

      - STM32 F4 OTG FS/HS Device:  OTG FS device and host drivers extended
        so that they can support either the OTG FS peripheral or the OTG HS
        peripheral (in FS mode).  This was done as a quick way to get USB
        support on the STM32F429 which has only OTG HS.  From Ken Pettit.
      - Added header files and driver framework for the STM32F429 LTDC
        framebuffer driver.  From Ken Pettit.

    * STMicro STM32 Boards:

      - Support for the Spark board was completely by Davide Sidrane.  The
        Spark configuration includes integrated CC3000 wireless support, FAT
        file system on the SerialFlash and a composite device that can be
        used both to export the FAT file system and to provide a serial
        interface.
      - The Mikroe-stm32f4 now uses /dev/config for configuration data
        storage.  From Ken Pettit.
      - Added support for the STM32F429I-Discovery board from Ken Pettit.
      - Added board support for the ViewTool STM32F103/F107 board with the
        STM32F107VCT6 installed.

    * NXP LPC31xx Drivers:

      - USB ECHI HCD:  Add a driver for the low-/full-/high-speed variant
        of the EHCI host controller.

    * NXP LPC31xx Boards:

      - Board-specific USB host support for the Emedded Artists EA3131 board.
        (Missing PCA9532 controls).
      - Add support for the Olimex LPC-H3131 board.  Including USB host
        support (which does not depend on the PCA8532 interface).

    * Kinetis KL Drivers:

      - PWM driver for the Freescale Kinetis KL family from Alan Carvalho
        de Assis.

    * Kinetis KL Boards

      - Freedom-KL25Z:  Add PWM support from Alan Carvalho de Assis.

    * TI Stellaris LM3S

      - Don't initialize .data in start-up logic if not running from FLASH.

    * Applications:

      - apps/platform:  A new home for platform-specific application code.
      - Define a common interface that can be used to manage platform-
        specific configuration data.  From Ken Pettit.
      - apps/examples/configdata:  A unit test for the MTD configuration
        data driver from Ken Pettit.
      - Aapps/platform/mikroe-stm32f4: dd platform-specific storage of
        configuration data for the Mikroe-stm32f4.  From Ken Pettit.
      - apps/examples/cc3000: Fine tuning of memory usage from David Sidrane.
      - apps/system/nxplayer: Play thread stack size is now configurable.
        All NxPlayer threads now have names assigned via pthread_setname_np().
        From Ken Pettit.
      - apps/examples/i2schar:  The I2S test based on the I2S character
        driver.
      - apps/examples/hidkbd/hidkbd_main.c:  Now calls a function named
        arch_usbhost_initialize() that must be provided by the platform-
        specific code.
      - NSH:

          - hexdump:  Add skip= and count= options to the hexdump command.  From Ken Pettit.
          - Allow USB trace without a USB console. From David Sidrane.
          - Mount command updates from Ken Pettit.
          - Add an option to the mkfatfs command to specify FAT12, FAT16, or FAT32.

    * Tools

      - tools/mkctags.sh:  A script for creating ctags from Ken Pettit.

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

    * kconfig-fronted Configuration:

      - Conversion of old configurations to use the kconfig-frontends
        tool is an ongoing effort that will continue for some time.
        At this time, only 50% of the configurations have been converted
        to use the kconfig-frontends tools.

Bugfixes (see the ChangeLog for details).  Some of these are very important:

    * File Systems

      - FAT:  In one error return case, the error return value was not being
        set, making the failure look like success. From David Sidrane.
      - mount:  SMART FS must be included in the conditional compilation for
        the set of file systems that require block drivers.  From Daniel
        Palmer.
      - SmartFS: Fixed a minor bug with SMART partition number reporting
        that would only be seen if both partition support and multi-root
        directory support are enabled at the same time.  From Ken Pettit.
      - Deadlock: The inode semaphore must be re-entrant.  Here is the re-
        entrant path that I found:  (1) USB host connects to FLASH drive and
        creates /dev/sda, (2) /dev/sda is mounted, (3) FLASH drive is
        removed but /dev/sda is not destroyed because there is still a
        reference on the device because of the mount, (4) umount() is
        called, taking the inode semaphore, now the driver tries to destroy
        the block driver by calling unregister_blockdriver().  But (5)
        unregister_blockdriver() also takes the inode semaphore causing a
        deadlock if the inode semaphore is not re-entrant.
      - FAT: Fix a typo in the FAT16 formatting logic. Was this ever able to
        format a FAT16 volume?

    * MTD Drivers

      - MTD Partitions:  Fix erase block vs page block confusion. From Ken
      - SST25 Serial Flash:  Improved write performance by fixing a bug that
        prevented operation in the faster write mode.  From David Sidrane.

    * USB Drivers:

      - USB MSC Device:  pthread_join() does not work if called from a
        different task group than the pthread.  This is correct behavior,
        but still a problem.  The correct solution would be configure the
        USB MSC thread to a task, however, this workaround from David
        Sidrane plugs the hole for now.
      - USB CDC/ACM, USB MSC, and Composite Device Classes: Un-initialization
        logic caused re-use of a stale pointer.  Changed to a two pass
        un-initialization for the case of the composite driver:  Memory
        resources are not freed until the second un-initialization pass.
        From David Sidrane.

    * STMicro STM32 Drivers:

      - STM32 F1 USB Device: Fix some errors that cause crashes when the USB
        was disconnected.  From David Sidrane.
      - STM32 F1 USB Device: Correct EP0 state handling logic when buffers
        larger than the EP0 packet size are sent.  From David Sidrane.
      - STM32 F1 USB Device: The long outstanding bug involving the handling
        of OUT SETUP commands has been fixed in the STM32 F1 USB device
        driver by David Sidrane.
      - Kconfig:  Add missing setup of CAN TSEG1 and TSEG2 values.  From
        Martin Lederhilger.

    * Tools

      - tools/mkconfig.c:  SMART FS must be included in the conditional
        compilation for the set of writable file systems.  Noted by Daniel
        Palmer.

    * Applications:

      - apps/platform/Makefile:  Was not dealing with the bin sub-directory
        correctly.
      - apps/system/composite/composite_main.c:  The wrong handle was getting
        nullified.  From David Sidrane.
NuttX-6.33
----------

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

Additional new features and extended functionality:

    * Core OS Interfaces

      - nanosleep() added.  sleep() and usleep() are no longer core OS
        interfaces.  These have been moved into the library and re-implemented
        as simple wrappers around nanosleep().

    * File Systems

      - procfs restructured by Ken Pettit.  Added files for MTD status.
      - procfs extended to show uptime and task group status.
      - procfs now shows stack information.

    * Networking

      - Add support for the SO_LINGER socket option.  Extended from logic
        provided by Jason Jiang.  Enabled with  CONFIG_NET_SOLINGER.
      - TCP write buffering support added.  From Jason Jiang.
      - Changes from Max Holtzberg to improve how network status is
        reported.  New controls to manage carrier detect.

    * Graphics

      - Massive reshuffling of files with little or no logic changes.   This
        reshuffling was necessary to build graphics applications with the
        kernel builds where the graphics application lie in user space and
        the core graphic server likes in kernel space.  Moved much logic out
        of nuttx/graphics to a new user library, libnx.

    * Cortex-A5/A8/A9

      - Existing Cortex-A5 support updated to include Cortex-A8/9.
      - Add the syscall.h header file needed for the Cortex-A architecture.
      - Start-up logic now supports execution from FLASH with .data and
        .bss in SDRAM.  This was not possible prior to this because .bss
        and .data were initialized before SDRAM was configured.

    * Allwinner A10:

      - Basic support for the Allwinner A10 (Cortex-A8) is in place.

    * Allwinner A10 boards

      - Support for the pcDuino v1 board has been added.  This support
        is not yet very mature and still lacks many drivers.  It is a
        good starting point, however, if anyone wants to develop A10
        support.

    * Atmel SAMA5D3X

      - Start-up logic now supports execution from FLASH with .data and
        .bss in SDRAM.  This was not possible prior to this because .bss
        and .data were initialized before SDRAM was configured.

    * Atmel SAMA5D3X Boards

      - Partial logic in place to support the OV2640 camera.  Still needs
        quite a bit of additional logic to be useful.

    * ARMv7-M

      - Add support for high priority, nested interrupts. This change
        effects not only core ARMv-7M logic, but all ARMv7-M MCU logic:
        LM3S, LM4F,  LPC17xx, LPC43xx, SAM3, SAM4, and STM32. See
        http://www.nuttx.org/doku.php?id=wiki:nxinternal:highperfints

    * STMicro STM32

      - Add clocking support for STM32F107 USB OTG FS (which does not yet
        work)
      - Single-wire UART support for the F1 series from Thomas Grubler.

    * STMicro STM32 Boards

      - The Viewtool board can now be configured to support either the
        STM32F103VCT6 or the STM32F107VCT6.
      - The Viewtool STM32F107VCT6 now supports networking with the
        DP83848C module installed.
      - Add support for Viewtool SSD1289-based LCD on the Viewtool
        STM32F103VCT6 board (untested)
      - Add support for the XPT2046 touchscreen controller on the Viewtool
        LCD module connected to the Viewtool STM32F103 board.
      - Added kernel mode build support for the STM3240G-EVAL board.  Added
        a new kernel mode NxWM build configuration
      - C++ static constructor logic from the nuttx/configs/stm3240g-eval/
        directory to the apps/platform/stm3240g-eval/up_cxxinitialize.c
        where is belongs so that it is available in user-space in the kernel
        mode build.
      - Add native Windows build support for the Olimex STM32 P107.  From
        Max Holtzberg
      - Support for the STM32VL-Discovery board. Contributed by Alan
        Carvalho de Assis
      - Added a configuration for testing simple configurations on the
        PX4FMU v2.

    * ZiLOG ZNEO Boards

      - Add an NSH configuration for the Z16F2800100ZCOG ZNEO board.
      - Added support for the Toyaga 16Z ZNEO board.  The 16Z board is
        based on the ZiLOG ZNEOZ16F2811AL20EG part.  See
        https://github.com/toyaga/16z for further information
      - Developed a patch to work around a compiler error that is revealed
        when building the NSH configuration.

    * Architecture-Independent Drivers

      - OV2640 Camera Driver.
      - Support for the Sharp Memory LCD from Librae.

    * Library

      - Pattern matching logic extended to handle set of characters and
        ranges of character values.  From Ken Pettit.
      - sleep() and usleep() moved intot the C library.  These are not
        longer core OS interfaces; they are simple wrappers for the
        nanosleep().
      - Add an implementation of gets_s().
      - Extend fopen() to include support for C11 exclusive open ("x")
        open mode.
      - Add an implementation of stpcpy()
      - strtol(), strtoll, strtoul(), strtoull(), and strtod() from
        libc/string to libc/stdlib where they belong.

    * Header Files

      - Add rsize_t to include/sys/types.h
      - Add the C11 thread.h header file

    * Configuration/Build System

      - Top level Makefile now supports qconfig and/or gconfig targets that
        may be used for configuration.  These may be used if you build
        kconfig-frontends with support for kconfig-qconf and/or
        kconfig-gconf.
      - Add CONFIG_DEBUG_NOOPT.  Now you can independently enable/disable
        debug symbols and optimization
      - File system related header files moved to include/nuttx/fs
      - Video related header files moved to include/nuttx/video
      - Changes for native Windows build: fix creation of a .version file
        if one does not exist.  Make sure that the APPDIR environment
        variable is set before configuring.  From Max Holtzberg.
      - Board configuration sub-directory can now be specified.  The default
        need not be used.  This is  only useful when CONFIG_ARCH_BOARD_CUSTOM
        is selected and there is no meaningful default sub-directory.
      - Many functions renamed to better conform with the naming standard:
        up_buttoninit() renamed to board_button_initialize(), up_buttons()
        renamed to board_buttons(), up_irqbutton() renamed to
        board_button_irq(), up_ledinit() renamed to board_led_intialize(),
        up_ledon() renamed to board_led_on(), and up_ledoff() renamed to
        board_led_off(). All prototypes removed from board.h header files.
        Now ONLY prototypes in include/nuttx/arch.h.

    * Applications

      - NSH: Refactor. Separate NSH command handling and command execution
        from NSH line parsing.
      - NSH: Will now support multiple commands on a command line, each
        separated with a semi-colon.
      - NSH: Add support of commands enclosed in back quotes as command
        arguments.
      - NSH: Can now handle arguments that are concatenations of constant
        strings, command return data, application return data, and
        environment variables.
      - NSH: Add true and false commands.
      - NSH: Add support for while-do-done and until-do-done loops.  These
        only work when executing a script file because they depend on the
        ability to seek in the file to implement the looping behaviors.
        Can be conditionally compiled out to reduce footprint.
      - NSH: Loosen up if-then-else-fi syntax to allow a command to be on
        the same line as the then or else tokens like:
        "if true; then echo true; else echo false; fi".  More like bash.
      - NSH: Add a break command that can be executed with a loop to
        terminate the loop immediately.

      - system/inifile:  A simple .INI file parser.
      - system/vi:  Add support for a tiny, VI work-alike editor.  This is
        a minimal full screen editor that works with a terminal emulator
        that using VT100 commands.

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

    * kconfig-fronted Configuration:

      - Conversion of old configurations to use the kconfig-frontends
        tool is an ongoing effort that will continue for some time.
        At this time, only 53% of the configurations have been converted
        to use the kconfig-frontends tools.

Bugfixes (see the ChangeLog for details).  Some of these are very important:

    * Core OS

      - Added missing sem_timedwait() system call.

    * Networking

      - Prevent tcp_connect callback from being double freed.  From Max
        Holtzberg
      - uiplib:  Support new definitions and state passing for network
        device status. From Maz Holtzberg.

    * File Systems

      - FAT:  (1) A correction to FAT cluster allocation, and (2) Fix to some
        root directory logic that was conditionally done only for FAT 32.
        Apparently this needs to done for all FAT types.  Both from Andrew
        "Tridge" Tridgell via Lorenz Meier.

    * Binary Formats

      - Fix a small memory leak when attempting to load a program from a file.

    * Cortex-A8/9

      - Fix some errors in the cache invalidation logic (only seem to matter
        for Cortex-A8).
      - Add more nop's after enabling the MMU.  The cortex-a8 seems to need
        these

    * Graphics

      - Fix a typo that caused a compilation error when
        CONFIG_NXCONSOLE_BPP < 8.  From Librae

    * ARMv7-M

      - Correct alignment of RAM vector table.
      - Interrupt handling: Do not disable and enable the IRQ on each
        entry, (2) this interferes with controlling the IRQ interrupt
        setting from interrupt handlers, and (3) up_disable_irq() does
        not work anyway so that this has never done anything.
      - Fix all implementations of up_disable_irq() for all Cortex-M3 and
        M4 architectures:  To enable an interrupt on the Cortex-M3/4 CPU,
        you need to set a bit in the ISER register.  To disable the
        interrupt, you need to set a bit in the ICER register.  Existing
        logic was trying to disable interrupts by clearing the bit in the
        ISER register.  That will not work; writing a '0' to the ISER
        register has no effect.  That  means that up_disable_irq() was
        doing nothing!  It turns out that that is not really important
        because up_disable_irq() is not really used for that purpose.  But
        some spurions STM32 ADC interrupts have been reported to me and this
        turned out to be the cause in that case.  Thanks to Manuel Stühn for
        the tip.

    * STMicro STM32

      - Fix configuration and pin definitions that would prevent building
        USB for the connectivity and performance lines.
      - STM32L15xx: Fix a typo in USB pin definitions
      - Fix pin definition names for SPI2 MOSI and MISO. Noted by Brian Webb
      - Various fixes for STM32F103ZE SPI3 pin mapping definitions.  From
        Steve Redler IV

    * STMicro STM32 Boards

      - Olimex STM32-P107:  Failed to build if SPI3 for UEXT is not remapped.
        From Max Holtzberg

    * x86 Boards

      - Add a configuration option to select the -m32 compiler option when
        building for a 32-bit target on a native 64-bit compiler.  So far,
        only used for the qemu/i486 configuration.
      - Patch from Matt Campbell to fix 'Error: .size expression for idle_stack
        does not evaluate to a constant".

    * Library

      - strftime(): Needs null termination on the generated string.  From
        Max Holtzberg.
      - Typo in ctype.h macro name: iscntrl(), not iscontrol().
      - If there are no arguments (argc == 1), then getopt() will leave the
        optind variable in an undefined state (2014-1-20).
      - ARMv7-M memcpy(): Assembler changes with the gcc-47 distribution
        from ARM mean that we need to be explicit about branch sizes; one
        or more of the wide branch opcodes results in bad table branching.
        From Mike Smith.

    * Configuration/Build System

      - Fixes for some tools/ for Windows build issues from Max Holtzberg.
      - Config.mk: 'cypath' must be called if we are using a Windows native
        toolchain with the Cygwin 'make' to convert paths to proper
        Windows paths.  From Richard Cochran.
      - ARM Makefile: Dependency directory list is now computed from the
        VPATH.  From Richard Cochran.
      - builtin/Makefile: Fixes for native Windows build from Max Holtzberg.
      - Refactor some configuration dependencies:  NSH networking features
        should depend on netutil selections; netutil selections, in turn,
        should depend on networking selections.

    * Applications

      - NSH: Modified the df -h logic to eliminate truncating numbers in
        conversion (like 7900 -> 7M).  From Ken Pettit.
Gregory Nutt's avatar
Gregory Nutt committed

NuttX-7.1
---------

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

  The previous NuttX version was 6.33.  The NuttX minor version number is
  incremented on each release, but the major version number is incremented
  only when an incompatibility with previous versions is included in the
  release.  In this case, the legacy, manual configuration is no longer
  supported by the NuttX build system beginning with NuttX 7.1.  Only the
  newer configurations generated by the kconfig-frontends tools will generate
  viable NuttX configurations.

  All board configurations in the NuttX source tree have been converted to
  use the newer configuration, but if you have some older style configurations
  for you board, you will need to convert those configurations to use the
  kconfig-frontends tools before taking any new code from the repository. See
  http://www.nuttx.org/doku.php?id=wiki:howtos:convertconfig for some
  guidelines.

Additional new features and extended functionality:

    * Core OS:

      - System time logic now includes logic to measure and calculate the
        CPU load percentage (from David Alessio).  This CPU load logic
        extended to keep counts on each thread.  The per-thread CPU is
        now reported in the procfs under <pid>/loadavg  An asynchronous,
        "external" clock may be used to drive the CPU load calculations
        for more accurate measurements when needed.

    * File Systems:

      - As mentioned above, the per-thread CPU load information is now
        reported in the procfs under <pid>/loadavg.
      - Many file system interfaces have been extended to operate on the
        top-level NuttX pseudo filesystem.  These include rmdir, mkdir,
Gregory Nutt's avatar
Gregory Nutt committed
        rename, and unlink.  This capability can be disabled with
        CONFIG_DISABLE_PSEUDOFS_OPERATIONS in order to keep the footprint
        small.

    * Networking:

      - Numerous updates and improvements to the CC3000 driver from David
        Sidrane.

    * Common Drivers:

      - Defined a mouse interface that is very similar to a touchscreen
        interface, but allows reporting of all mouse buttons.  Also, unlike
        touchscreen drivers, mouse drivers need to report positional data
        with no button is pressed so that the mouse position can drive a
        cursor.
      - Added support for a USB HID boot mouse device.  Cursor support is
        not integrated and must be provided by the application based upon
        the reported mouse data.
      - Support added for the MIO283QT9A LCD from Toby Duckworth.

    * Atmel SAMA4E:

      - Added complete architecture support for the Atmel AT91 SAM4E
        Cortex-M4F parts.

    * Atmel SAM4E Board Support:

      - Add board support for the SAM4E-EK board.

    * Atmel SAM4E Drivers:

      - Added logic to manage the Cortex-M Cache Control block.
      - Developed and integrated an Ethernet MAC driver for the SAM4E.
      - Backported the SAMA5 SPI driver to the SAM3/4 architecture.  The
        SAMA5 version supports both multiple SPI peripherals as needed by the
        SAM3A and SAM3X and also supports DMAC (but not PDC) needed by the
        SAM4E.

    * Atmel SAM D20:

      - Added basic architecture support for the Atmel AT91 SAM D20
        Cortex-M0+ parts.

    * Atmel SAM D20 Board Support:

      - Added basic support for SAM D2 Xplained Pro board.  Currently, the
        NuttShell (NSH) works reliably over a serial port.  An SPI driver
        has also been developed.  Work with the SAM D20 has been temporarily
        stopped, however, in order to focus on the SAM4E-EK.

    * TI Tiva TMC4C123G:

      - Added architecture support for the TI Tiva TM4C123G parts.  This was
        merged into the existing support for the LM3S and LM4F families.
        All directory, file, and function references changed from lm to tiva.
Gregory Nutt's avatar
Gregory Nutt committed

    * TI Tiva TMC4C123G Board Support:

      - Added basic board support for the TM4C123G-Launchpad.  As of this
        release the TM4C123G-Launchpad board support is untested and likely
        incomplete.

    * STMicro STM32 Boards:

      - The Mikroe STM32F4 can now support the newer MIO283QT9A LCD. From
        Toby Duckworth.
Gregory Nutt's avatar
Gregory Nutt committed
      - Miscellaneous changes to better support FPU on STM32F429 Discovery
        from David Alessio.

    * NXP LPC2378 Drivers:

      - Incorporated I2C and SPI drivers for the LPC23xx from Lizhuoyi.

    * QEMU i486 Drivers:

      - New QEMU keyboard and VGA drivers from Lizhuoyi.

    * Documentation:

      - Added a coding standards document.  See
Gregory Nutt's avatar
Gregory Nutt committed
        http://www.nuttx.org/doku.php?id=documentation:codingstandard

    * Configuration/Build System:

      - A configuration option, CONFIG_DEFAULT_SMALL, was added to select
        default values for configuration variables based upon whether you
        want a smaller footprint or more features.  This is not very useful
        if you are modifying existing configurations because then the
        default values do not apply.
      - CONFIG_DEFAULT_SMALL has been defined on all tiny MCU configurations
        so that they do not grow so rapidly when new, optional features are
        added.
      - The legacy, manual configuration is no longer supported by the
        NuttX build system.  Only the newer configurations generated by
        the kconfig-frontends tools will generate viable NuttX
        configurations.  All board configurations in the NuttX source tree
        have been converted to use the newer configuration, but if you have
        some older style configurations for you board, you will need to
        convert those configurations to use the kconfig-frontends tools. See
        http://www.nuttx.org/doku.php?id=wiki:howtos:convertconfig for some
        guidelines.

    * Applications:

      - NSH can now use an EMACS-like command line editor.  This CLE, is
        really more like the traditional readline than is the default, tiny
        the NuttX readline .
      - The touchscreen example can now be configured to work with either a
Gregory Nutt's avatar
Gregory Nutt committed
        touchscreen or a mouse device.
      - Several NSH commands can now be used to operate on objects in the
        top-level pseudo-filesystem: rmdir, mkdir, mv, and rm.  This
        capability can be disabled with CONFIG_DISABLE_PSEUDOFS_OPERATIONS
        in order to keep the footprint small.
      - If both the CPU load feature and the procfs features are enabled,
        then the NSH 'ps' command will show the CPU load used by each
        thread.

Bugfixes (see the ChangeLog for details).  Some of these are very important:

    * Core OS:

      - task_terminate()  always returned an error because the return value
        was not being set correctly (from Gosha).
      - nanosleep()  Fix a missing call to re-enable interrupts (from Jason
        Jiang).

    * File Systems: