Skip to content
ReleaseNotes 303 KiB
Newer Older
patacongo's avatar
patacongo committed
      - mallinfo() should hold the memory manager semaphore (from Petteri
        Aimonen.

    * Build System:

      - Resolved several build errors reported by Mike Smith.

    * Applications:

      - Fixed an NSH memory leak:  Needed to detach after creating each
        pthread.
      - readline() now returns EOF on any failure (instead of a negated
        errno value).  This is because the underlying read is based on
        logic similar to getc.  The value zero  (meaning end-of-file)
        was being confused with a NUL.  So if a NUL was received, the
        NSH session would terminate because it thought it was the end of
        file.

NuttX-6.27

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

Additional new features and extended functionality:

    * OS Initialization:

      - Add missing registration of /dev/zero.  Registration of /dev/null
        should depend upon conditional compilation.  From Ken Pettit.

    * Tasking:

      - Added a new interface to set aside memory on the task's stack.  This
        is used (at least in the kernel build) to hold task arguments.
      - Remove up_assert_code().  One assertion routine is enough.

    * Kernel Build:

      - Extensive changes were made to support the kernel build mode.  In
        this mode, NuttX is built as a monolithic kernel.  NuttX is built
        as a separate kernel mode "blob" and the applications are built
        as a separate user mode "blob".  The kernel runs in kernel mode and
        the applications run in user mode (with the MPU restricting user
        mode accesses).  Access to the kernel from the user blob is only
        via system calls (SVCalls).
      - Kernel build configurations for the Open1788 board and for the
        STM32F4Discovery now execute correctly.
      - Changes were made to task and thread start-up routines, signal
        handling, data structures, ARMv7-M SVCalls, stack management
        interfaces,

    * Drivers:

      - Driver for the ST7567 LCD Display Module from Univision Technology
        Inc.  Contributed by Manikandan.S
      - SPI initialize functions renamed so that multiple SPI blocks can
        be initialized.
      - Extended to support the RAMTRON FM25V01 device. Contributed by
        Lorenz Meier
      - Serial drivers: TIOCSERGSTRUCT ioctls now conditioned on
        CONFIG_SERIAL_TIOCSERGSTRUCT

    * ARMv7-M (Cortex-M3/4):

      - Added support for modifiable interrupt vectors in RAM

    * nuvoTon NUC1xx:
      - Added kernel build support

    * Freescale Kinetis:
      - Add kernel build support
      - Add support for the Kinetis L family of Cortex-M0+ MCUs.  Contributed
        by Alan Carvalho de Assis.

    * LPC17xx:

      - Now holds off sleep mode in the IDLE loop is DMA is in progress
        (because sleep mode will disable CPU SRAM).

    * LPC17xx Boards:

      - ZKIT-ARM-1769:  Now supports the ST7567 LCD display module.  Added
        an nxhello configuration for testing (Manikandan.S).
      - ZKIT-ARM-1769:  Add support for both CAN1 and CAN2.  Contributed by
        M.Kannan

      - Open1788: Basic support for the WaveShare Open1788 board is complete
        with working OS test, NSH, and graphics configurations.
      - Open1788: Integrated the LPC178x LCD driver with the WaveShare display.
        Touchscreen support is included, howerver, there appears to be an
        issue with the Open1788 touchscreen interrupt signal.
      - Open1788:  Now supports SDRAM (used to provide the LCD framebuffer).
      - Open 1788: Reversed sense of the IDLE LCD. It is now off when the
        LPC17 is sleeping and on when awake.  That is much a better visual
        indication of the dynamic CPU load

    * LPC17xx Drivers:

      - Added an LCD framebuffer driver for the LPC177x/8x family.
      - Implemented LPC17xx GPDMA support.
      - Integrated the LPC17xx GPDMA support into the SD card driver.
      - SSP driver adapted to work with the LPC178x family.
      - Separate LPC176x and LPC178x GPIO logic; this logic is too different
        to maintain in one file with conditional compilation.
      - Re-design of the GPIO logic for the LPC178x family by Rommel Marcelo.

    * LPC43xx:
      - Added kernel build support

Gregory Nutt's avatar
Gregory Nutt committed
    * STM32:

      - Added support for kernel mode build.
      - Added architecure support for the STM32 F427/F437 chips. Contributed
        by Mike Smith

Gregory Nutt's avatar
Gregory Nutt committed
    * STM32 Boards:

      - Added a configuration to support a kernel mode build of the OS test
        on the STM32F4Discovery

Gregory Nutt's avatar
Gregory Nutt committed
    * Stellaris LM3S/LM4F:

      - Added kernel build support
      - Added support for the 7 UARTs on the LM4F120

Gregory Nutt's avatar
Gregory Nutt committed
    * Stellaris LM4F Boards:

      - Added scripts and instructions to simplify use of OpenOCD with ICDI
        (JP Carballo)
      - The basic for the Stellaris LM4F120 Launchpad is complete.  This
        includes support for OS test and NSH configurations.  Additional
        driver development is needed.
    * Build System:

      - Directories where the same sources files are used to build different
        objects in the first and second pass kernel builds need to keep those
        objects in separate directories so that they are not constantly
        rebuilt.

    * Applications:

      - apps/system/ramtest:  Add a simple memory test that can be built
        as an NSH command.

    * Tools:

      - kconfig2html is a new tool which will replace the hand-generated
        documentation of the NuttX configruation variables with auto-
        generated documentation.

Efforts In Progress.  The following are features that are partially
implemented but present in this release.  Most are expected to be fully
available in NuttX 6.28.

    * A port to the Freescale Freedom KL25Z is complete but not yet stable
      enough.  The KL25Z is a low-cost Cortex-M0+ part with 128KB of FLASH
      and 16KB of SRAM.  This is is the effort of Alan Carvalho de Assis.

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

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

    * Tasking:

     - Fixed a critical bug:  When there is pending C buffered output
       and the system is very busy, the a pthread may be blocked at
       a critical point when trying to exit.  Blocking at this critical
       point would cause crashes.  All entire task/thread exit logic
       paths were reviewed and failsafe mechanisms were put in place
       to assure that exitting tasks never block after task teardown
       has been started.

    * ARMv6-M:

      - Fixed parameter passing for all system call inline functions with > 3
        parameters
      - Fixed a major problem:  The Cortex-M0 has no BASEPRI register but the
        logic of NuttX-6.26 was using it to manage interrupts.  Switch to
        using the PRIMASK instead.  This means that hardfaults will (again)
        occur when SVC instructions are executed

    * ARMv7-M:

      - Corrected Correct MPU sub-region settings for unaligned regions.
      - In exception handling with CONFIG_NUTTX_KERNEL, need to explicitly
        set and clear the privilege bit in the CONTROL
      - Fixed parameter passing for all system call inline functions with > 3
        parameters

    * Drivers:

      - Support for O_NONBLOCK was not supported in the "upper half"
        serial driver.
      - PL2303 compilation errors

Gregory Nutt's avatar
Gregory Nutt committed
    * Stellaris LM3S/4F:

      - Corrected typos in alternate function definitions.

    * LPC17xx Drivers:

      - Added a work-around for an ADC errata.  From Chris Taglia
      - Only one ADC pin was configured. Need to configure all that
        are in the ADC0 set.  From MKannan

    * File Systems:

      - The FAT logic was not making a distinction between directory
        non-existence and file non-existence so when it you try to
        create a file in a non-existent directory, it would create a
        file with the name of the missing directory.  Reported by Andrew
        Tridgell
      - Several fixes to the FAT file system from Ronen Vainish.  These
        fixes mostly involve the logic to extend directory clusters for
        the case of long file names but also include a few important
        general fixes (such as for storing 32 bit FAT values)
      - mkfatfs was writing the boot code to the wrong location.  From
        Petteri Aimonen

    * Networking:

      - Fixed a compilation error when socket options are are disabled.
        Reported by Daniel O'Connor

    * C Library:

      - Corrected an error in sscanf.  If %n occurs in the format statement
        after the input data stream has been fully parsed, the %n format
        specifier will not be handled.  Reported by Lorenz Meier
      - strchr(str, '\0') should return a pointer to the end of the string,
        not NULL.  From Petteri Aimonen

    * Build System:

      - Fix naming of NuttX target if EXEEXT is defined.

    * Applications:

      - OS test: Fix timing error in non-cancelable thread test.
      - NSH: Correct the test of the skip input parameter.  Was limiting the
        range to <= count.  From Ken Petit.
Gregory Nutt's avatar
Gregory Nutt committed

NuttX-6.28
----------

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

Additional new features and extended functionality:

    * File Systems:

      - SMART FLASH file system (contributed by Add Ken Pettit).

    * MTD (FLASH) Drivers:

      - Add support of MTD partitions via a new MTD driver that manages a
        set of MTD devices, each managing a subset of the FLASH region
        managed by the parent MTD driver.
      - Extended the MTD interface to provide an (optional) method to
        perform byte oriented writes if supported by the FLASH part.
      - M25Px driver re-architected to use the byte write capability (when
        possible) and to use 4KB sectors for the erase block size when the
        part supports it (from Ken Pettit).

    * LCD Drivers:

      - New interface definitions to support audio devices (from Ken Pettit)
        and alphanumeric, segment LCDs.

    * Wireless Drivers:

      - Added new driver for the wireless nRF24L01+ transceiver (from
        Laurent Latil).

    * Calypso:

      - Added support for the Pirelli DP-L10 phone (from Craig Comstock via
        Alan Alan Carvalho de Assis)

    * STM32:

      - Added an option to conditionally disable the "wfi" sleep mode.  This
        is needed with certain JTAG debuggers to to prevent the debug
        session from begin disconnected (from Ken Pettit).
      - Added support for the STM32L (STM32L15X/STM32L16x) family.
      - Added STM32F103C4 and F103C8 chip support (from Laurent Latil).
      - Added a new interface function, stm32_dmacapable() that can be used
        to determine if DMA is possible from the specified memory address
        (from Petteri Aimonen)

    * STM32 Drivers:

      - If CONFIG_STM32_DMACAPABLE is defined, the STM32 SPI driver now uses
        stm32_dmacapable() to determine if it is possible to perform DMA
        from the specified address.  This change is important for the STM32
        F4 which may have SPI data buffers allocated on the stack in CCM
        memory which cannot support the DMA (from Petteri Aimonen).

    * STM32 Boards:

      - Support added for the MikroElektronika Mikromedia for STM32F4
        development board (from Ken Pettit) with the MIO283QT2 LCD and
        touchscreen.  Several graphics configurations are included.
      - The HY-mini STM32v board now uses the common SSD1289 driver
        and supported the card detect interrupt.  Several new
        configurations also added and some removed (from Laurent Latil).
      - Support added for the R65105-based LCD that comes with some
        HY-Mini STM32v boards (from Christian Faure).
      - Added basic support for the STM32L-Discovery board.  Drivers
        for the on-board segment LCD are included.
      - Added support for the STM32 Tiny development board based on the
        STM32 F103C8T6 MCU.  This includes support for the nRF24L01+
        wireless on the board (from Laurent Latil).

    * Stellaris LM3S/LM4F:

      - Support added for a TI/Stellaris internal FLASH MTD driver (from Max
        Holtzberg).

    * Stellaris LM4F Boards:

      - The LM3S6965-EK now has configurations for the UDP discovery tool and
        for the TCP echo server (both from Max Holtzberg)

    * Atmel ATSAM3/4:

      - Reorganized, renamed, and updated directory structure to better
        support additional members of the SAM3/4 family.
      - Added support for both the ATSAM4S and ATSAM4L families.  The
        ATSAM4S is similar to the ATSAM3U, but the ATSAM4L is quite a
        different beast, really much more akin to the AVR32s SoCs but
        with a Cortex-M4.

    * Atmel ATSAM3/4 Boards:

      - Added support for the Atmel SAM4L Xplained Pro development board.
        This board features the ATSAM4LC4C MCU (Cortex-M4 with 256KB FLASH +
        32KB SRAM).
      - Added support for the Atmel SAM4S Xplained developement board.  This
        board features the ATSAM4S16C MCU (Cortex-M4 with 1MB FLASH + 128KB
        SRAM).

    * PIC32MX Boards:

      - Added support for the 1602 segment LCD on-board the Sure PIC32MX
        board.  This board will now also support a USB NuttX console and
        the USB monitor test program.

    * Build System:

      - Clean-up of almost all .gitignore files:  Made scope of ignore to be
        only the current directory; Ignore .dSYM files in directories where
        .exe's may be built.  Also, in Makefiles, clean .dSYM files in
        directories where an .exe may be built.
      - Standardize and consolidated all build-as-an-NSH-application
        configuration settings.  Now only CONFIG_NSH_BUILTIN_APPS is
        sufficient to build an application, test, or or example as an NSH
        builtin application.
      - Added support for a generic ARM, ARMv6-M and ARMv7-M Windows EABI
        toolchains.

    * Libraries:

      - Added encoder/decoder logic to marshal and serialize special segment
        LCD (SLCD) commands intermixed with normal ASCII data.  This is the
        similar to the encoding/decoding logic that is used to marshal
        special commands from a keyboard.
      - Add dprintf() and vdprintf() (the latter from Andrew Tridgell).
      - Add an application that may be built as an NSH builtin command that
        will erase FLASH using a flash_eraseall NSH command (from Ken Pettit).

    * Applications:

      - Added an MTD partition test/examples.  Currently used with (1) the a
        simulation configuration to test MTD partitions on a RAM emulation
        of FLASH and (2) with the Mikroe STM32F4 configuration.
      - Added a test/example to verify alphanumeric, segment LCDs.
      - Added a simple single threaded, poll based  TCP echo server based
        on W. Richard Stevens UNIX Network Programming Book (from Max
        Holtzberg).
      - Added several tests of the SMART block driver and file system (from
        Ken Pettit).
      - Added a runtime configuration for the UDP discover utility (from
        Max Holtzberg).
      - Added an example application to demo the nRF24L01 driver (from
        Laurent Latil).
      - New and modified NSH commands:
        Added a -h option to the df command to show the volume information
        in human readable form (from Ken Petit).
        Add a new mksmartfs command (from Ken Petit).

Efforts In Progress.  The following are features that are partially
implemented but present in this release.  Most are expected to be fully
available in NuttX 6.28.

    * Audio System:

      - A complete audio subsystem include CODECs, higher level management,
        interface definitions, and audio drivers was contributed by Ken
        Pettit.  This work has not been completely verified as of this
        release and so is categorized as a work-in-progress.  At present,
        progress is blocked due to issues interfacing with the VS1053
        audio DAC on the Mikroe STM32F4 board.

    * 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 43% of the configurations have been converted
       to use the kconfig-frontends tools.

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

    * Tasking:

      - Modify assertion in the priority inheritance logic that is reported
        to cause false alarm assertions.

    * Kernel Build:

      - Typo in syscall proxying logic corrected by Ken Pettit.

    * Networking:

      - Poll setup/teardown logic should ignore invalid (i.e., negative)
        file descriptors (from Max Holtzberg).
      - When readahead data is available, the network poll() logic should
        set POLLIN (or POLLRDNORM), not POLLOUT (from Max Holtzberg).

    * LCD Drivers:

      - Correct power controls in the MIO283QT2 LCD driver.

    * USB Device Controller Drivers:

      - Change the default IN request buffer size from 64 to 96.  This will
        avoid requests of exactly MAXPACKET size and, hence, avoid so many
        NULL packets.  Also, fix the OUT request buffers size to exactly the
        max packet size.  It really cannot be any other size.

    * STM32 Drivers:

      - Correct some bad STM32 F1 DMA definitions that crept into the system
        a few months ago a broke STM32 F1 DMA (from Laurent Latil)
      - Fixed an error in NULL packet handling in the STM32 F1 USB device
        controller driver:  If the NULL-packet needed flag ever got set,
        then it was not being cleared and infinite NULL packets resulted.
        This only affects the CDC/ACM class and was the cause of the
        failures using the USB CDC/ACM device as a NuttX console.  With this
        change the USB works well as an alternative NuttX console device for
        the STM32 F1 family.
      - Correct some bad condition compilation in the RCC logic (CONFIG_
        missing from setting names).  This affects some STM32 FLASH pre-
        fetch settings (from Lorenz Meier).
      - Change for hardware flow control support for STM32. The change also
        fixes incorrect operation of USART2 and UART5 in current master
        (from Lorenz Meier and Mike Smith).
      - Fixed a backward conditional in USB OTG FS host controller driver
        that prevented detection of disconnection events (from Scott).

    * LPC17xx Drivers:

      - I2C interrupt control.  Also correction for a single byte read
        timeout error (from M. Kannan).

    * Freescale Kinetis:

      - Freedom KL25Z pin multiplexing and LED control corrections (from
        Alan Carvalho de Assis)

    * PIC32MX:

     - Fix NULL packet handling in the PIC32 USB device driver.  Without
       this fix the CDC/ACM driver cannot be used reliably with the PIC32
       USB.  With this change the USB works well as an alternative NuttX
       console device.

    * Graphics:

      - Default priorities for NxWidget and NxWM threads should be 100,
        not 50, to be consistent with other default priorities.

    * Applications:

      - Remove the CONFIG_EXAMPLES_NXTEXT_NOGETRUN option from the NXTEXT
        example.  The test logic was bad for the case where this options is
        not selected.  Also, completed the empty Kconfig file.
      - C++ name mangling was occurring when this example is built as an NSH
        built-in application causing the entry to be undefined when called
        from C code.
      - Add some missing NSH library configuration values (from Lorenz
        Meier).

NuttX-6.29
----------

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

Additional new features and extended functionality:

    * Drivers:

      - Generalized the SSD1306 driver and added support UG-2832HSWEG04
        which is very similar to the existing support for the
        UG-2864HSWEG01.
      - Added support for a generic bit-bang SPI driver.  This includes
        both a common "upper half" driver as well as a platformp-specific
        "lower half" dirvers based on a common "template."

    * ARMv7-A, Cortex-A5

      - Added support for the ARMv7-A architecture and the Cortex-A5 in particular.

    * ARMv7-M, Cortex-M3/4

      - Modified how some registers are copied during a context switch (with
        lazy FPU register saving).  This should save some context switching
        time when the context switch is due to interrupt level processing.

    * STM32:

      - Added support for a separate CCM heap.  This may be useful for
        segregating allocations for CCM (which cannot be used for DMA)
        from other allocations (that may be used used for DMA).

    * STM32 Drivers:

      - DAC: Added support for DAC DMA (contributed by John Wharington).
      - I2C: An I2C driver for the STM32 F3 family (from John Wharington).

    * Atmel AT91 SAM/4:

      - Add support for SAM3X and SAM3A chips

    * Atmel AT91 SAM/4 Drivers:

      - Re-architect the SAM3/4 SPI driver so that is it compatible with the
        SPI drivers of other MCUs.
      - Added register definition file for the SAM4L LCD peripheral.
      - Added SAM4L PDCA register definition file

    * Atmel AT91 SAM/4 Boards:

      - SAM4L-Xplained: Added support for the SPI-based SD card on the I/O1
        module.
      - SAM4L-Xplained: Added a driver for the LED1 segment LCD module.
      - SAM4L-Xplained: Added support for the UG-2832HSWEG04 OLED on the
        SAM4L Xplained Pro's OLED1 module
      - SAM4S-Xplained: Added support for on-board 1MB SRAM
      - Arduino Due:  Basic support for the Arduino Due (SAM3X) is now
        included.
      - SAM3U-EK:  The touchscreen is now functional.

    * Atmel AT91 SAMA5D3

      - Added support for the Atmel AT91SAMA5D3 Cortex-A5 chip family.

    * Atmel AT91 SAMA5D3 Boards

      - Added support for the Atmel SAMA5D3x-EK boards which use the AT9
        SAMA5D3x chips (x=1,3,4,5).

    * Freescale KL25Z Drivers

      - Freescale KL25Z TSI register definitions and example TSI driver for
        the Freedom KL25Z board from Alan Carvalho de Assis.
      - Added SPI driver and register definitions for the Freescale KL25Z.
      - Added a framework for controlling SPI-related discrete inputs and
        outputs.  Taken from work by Alan Carvalho de Assis

    * Build System:

      - New sub-directories to hold SPI-related files:  includes/nuttx/spi.h
        moved to include/nuttx/spi/.; SPI-related Kconfig info moved from
        drivers/Kconfig to drivers/spi/kconfig.
      - Finally... I changed the naming of configuration variables like
        CONFIG_DRAM_ to CONFIG_RAM_.  This has bothered me for a long time
        since most boards don't have DRAM.  The more generic RAM naming
        should not produce so much cognitive dissonance

    * Libraries:

      - Added CRC16 support.

    * Applications:

      - Added Zmodem file transfer support.  This may be used as an embedded
        library or may be built as 'sz' and 'rz' commands that can be
        executed from NSH.
      - C++ initializers should be set once and, preferably, in the context
        of the task that uses any C++ statically initialized classes.  This
        only becomes an issue if cxxtest or helloxx are built as NSH builtin
        applications.  Then you want the initialization done in cxxtext or
        helloxx and not in NSH (and certainly not twice).  Added
        configuration options to control who does the C++ initialization.
        NSH now does not do C++ initialization be default and must be
        configured to do otherwise.  Conversely, cxxtest and helloxx
        will always do C++ initialization unless configured do otherwise.
      - examples/cxxtext:  Add ostream test as provided by Michael.
      - NSH:  Added a 'cmp' command that can be used to compare two files
Gregory Nutt's avatar
Gregory Nutt committed
        for equivalence.  Returns an indication if the files differ.
        Contributed by Andrew Tridgell (via Lorenz Meier).

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

    * Audio System:

      - A complete audio subsystem include CODECs, higher level management,
        interface definitions, and audio drivers was contributed by Ken
        Pettit.  This work has not been completely verified as of this
        release and so is categorized as a work-in-progress.  At present,
        progress is blocked due to issues interfacing with the VS1053
        audio DAC on the Mikroe STM32F4 board.

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

      - Fixed compilation error if no file systems are enabled: Change
        error to ERROR.
      - Read-Ahead/Write buffering: Correct typos that can cause failures
        in some configurations (From Chia Cheng Tsao).

    * Drivers

      - Remove the wait for the touchscreen busy bit in the ADS7843E driver.
        From my reading of the ADS7843 spec, it would not be appropriate to
        wait for the BUSY bit to de-asserted anyway (since it is only de-
        asserted when we read the data).  Most boards do not even bother to
        provide the BUSY bit.
      - MMC/SD SPI based driver:  Driver needs to make sure that the SPI
        mode and data width are correct.
      - ENC28J60:  Change buffer ordering to work around Errata.  From Dave
        (ziggurat29).

    * USB Device Controller Drivers:

      - Fixed a typo in the composite device driver unitialization logic.
        DEV1 should be DEV2 in one case.
      - usbdev.h: Fix some typos that cause compiler errors when
        CONFIG_USBDEV_DMA and CONFIG_USBDEV_DMAMEMORY are selected (From
        Chia Cheng Tsao).

    * ARM9:

      - Fix a bug (uninitialized register error) that crept in the ARM9
        boot-up code several years ago.  Obviously no one has used the
        ARM9 NuttX port for years!

    * STM32 Drivers:

      - Fix STM32 OTF FS endpoint allocation logic.  Apparently the same
        endpoint can be allocated as both an IN or an OUT endpoint.  The
        existing implementation only supported one allocation, either IN or
        OUT.  This resulted in failures to allocate endpoints when used with
        the CDC/ACM + MSC composite driver (From Chia Cheng Tsao).
      - SDIO: Add support for the data block end (DBCKEND) interrupt to
        terminate transfers (From Chia Cheng Tsao).
      - DAC: Fixed numerous DAC driver errors and added support for DAC
        DMA (contributed by John Wharington).

    * SAM3/4:

      - SAM4S: Correct configuration of PIO pins for SAM4S B and C peripherals.
      - Need to disable write protection before configuring PIO pins.
      - GPIO configuration logic must protect against re-entrancy.
      - Clocking must be applied to the SMC module for the 3X and 3A family in
        order for the NFC SRAM to be functional.
      - Fixed some errors for interrupts on ports D-F.

    * SAM3/4 Drivers:

      - Common SPI driver: Fix SPI mode setting.  In the SAM3/4 family, the
        clock phase control (CPHA) is inverted (NPHA).  Also fixed an
        incorrect pointer test.  Was checking if the wrong pointer was NULL.

    * SAM3/4 Boards:

      - SAM3U-EK: Fix polarity of the /PENIRQ signal (it is active low).
        The SAM3U-EK board now runs at 96MHz.

    * Applications:

      - apps/examples/nxhello:  Minor fix for compilation error when the
        display resolution is low (< 8bpp) due to a typo that has been there
        for a long time.  Also Correct default colors when in Y1 code mode.
      - apps/system/ramtest:  The RAM test was not correctly built
        into the configuration and build system.
      - apps/examples/composite: Change to prevent some false alarm debug
        assertions (From Chia Cheng Tao).
Gregory Nutt's avatar
Gregory Nutt committed

NuttX-6.30
----------

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

Additional new features and extended functionality:

    * Common Drivers:

      - Extended TERMIOS support for serial and CDC/ACM drivers.  From
        Mike Smith, Andrew Tridgell and Lorenz Meier.
      - Added option to disable serial port reordering.  From Lorenz Meier.
      - Several changes to the USB host control interface and extensions to
        common USB host logic to handle host controllers with multiple
        downstream ports in the root hub.
      - USB device tracing: Extended decoding and stringifying of USB trace
        output to include trace output from class drivers.
      - USB host tracing:  Added support for USB host tracing similar in
        some ways to USB device tracing:  Stringification is an inherent
        part of the trace decoding (not an option).  Only available in the
        SAMA5 USB host drivers now.

    * Networking / Network Drivers

      - Support for the Microchip ENCX24J600 Ethernet driver from Max
        Holtzberg
      - CC3000 Networking.  Initial support for the TI CC3000 network
        module on the Freescale Freedom-KL25Z board from Alan Carvalho
        de Assis.  This is still a work in progress.

    * ARMv7-A, Cortex-A5

      - Restructured some MMU-related logic and header files.
      - Hooks added for Cortex-A8, but not yet used.

    * STM32 Drivers:

      - STM32 SPI: nbits() interface extended to control bit order as well
        as bit width (from Teemu Pirinen)

    * STM32 Boards

      - Olimex STM32-P107:  Incorporate ENCX24J600 networking for the Olimex
        STM32 P107 board.
      - LeafLabs Maple Board:  Add board support for the LeafLabs Maple and
        Maple Mini boards.  From Librae.

    * Atmel AT91 SAMA5D3x

      - Added support for the SAMA5 DMAC controllers.
      - DMA-capable drivers for the SAMA5 SPI peripherals.
      - DMA-capable HSCMCI 0/1/2 drivers.
      - Support for PIO interrupts
      - Utilities for intelligent conversions between physical and virtual
        addresses.
      - Added USB host controller drivers for both the OHCI (low- and full-
        speed) peripheral and the ECHI (high-speed) peripheral.
      - Added USB device controller for the SAMA5 UDPHS peripheral (full-
        and high-speed).
      - Added a Two Wire (TWI) driver.  This is a variant of I2C.

    * Atmel AT91 SAMA5D3x-EK Development Boards

      - Now supports onboard SDRAM.  Modified heap initialization logic
        to include SDRAM if configured.
      - Integrated a FAT file system on the on-board SPI-based AT25 serial
        FLASH
      - Integrated HSMCI0 and HSMCI1 support for the microSD and full file
        SD card slots.  Includes PIO interrupts for card detection events.
      - Integrated USB OHCI and ECHI host and high-speed peripheral support.
        File system on AT25 now exported via Mass Storage Class.  Includes
        PIO VBUS controls.
      - Integrated the TWI driver and the I2C tool.  Added support for an
        external AT24 serial EEPROM.

    * Applications:

      - apps/examples/cc3000.  Initial support for the TI CC3000 network
        module on the Freescale Freedom-KL25Z board from Alan Carvalho de
        Assis. Includes the test to verify the CC3000.
      - apps/examples/usbmsc:  apps/examples/usbstorage renamed usbmsc for
        consistency. Change submitted by CCTSAO.
      - apps/system/usbmonitor:  The USB monitor has been extended so that
        it can be used with USB device or host trace data.

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

    * CC3000 Networking

      - CC3000 Networking.  Initial support for the TI CC3000 network
        module on the Freescale Freedom-KL25Z board from Alan Carvalho
        de Assis.  This is still a work in progress.

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

      - ROMFS: Fix an error where long (>15) file names were read
        incorrectly from a ROMFS file system.  From Mike Smith
      - NXFFS: Clean up some compiler warnings.

    * Common Drivers

      - MMC/SD driver: Correction for a bad return value when multiple
        block SDIO transfers are suppressed.  By Andrew Tridgell.
      - USB HID keyboard and mass storage host-side class drivers:  Fix some
        compilation errors and warnings when pre-allocated data structures
        are used.
      - USB device-side class drivers:  Fix some compilations errors when
        DUALSPEED (i.e., full- and high-sped) support is enabled.
      - CDC/ACM and PL2303: Don't use max packetsize assigned to the endpoint
        when allocating request buffers; The default value of the endpoint
        max packetsize may be incorrect because the endpoint has not yet
        been configured.  Really only an issue for high-speed endpoints.
      - USB Host Mast Storage Class:  Fixed a problem that was causing some
        devices to fail to initialize: If device is returning fatal transfer
        errors while attempting to initialize, don't bother with the startup
        retries; abort immediately so that the device will be reset and we
        can try again with a better ready device.
      - USB Host Mast Storage Class:  Correct a reference counting error:
        When an MSC device transfer fails while waiting for UnitTestReady,
        the reference count on the class was not being decremented.  The end
        result is a memory leak as can be seen by the USB device numbers
        incrementing: sda, sdb, sdc, ...
      - USB Device CDC/ACM:  Fix backward conditional compilation in the
        CDC/ACM driver with regard to remote wakeup and self-powered
        capabilities.  From the PX4 team via Lorenz Meier,

    * Networking / Network Drivers

      - ARP IP harvesting:  Correct backward condition in netmask task.
        From Max Holtzberg.
      - Network connection monitor: Fixes a race condition where a loss of
        connection may not be detected when the connection is lost before it
        has been accepted (from Max Holtzberg).
      - TCP/IP Backlog:  Fix a critical bug in the TCP/IP backlog
        initialization:  Only the first backlog buffer was getting added to
        the free list.  From Max Holtzberg.
      - ENC28J60:  Fixes and improvements back-ported from the ENCX24J600
        to the ENC28J60 by Max Holtzberg.

    * STM32 Drivers:

      - STM32 I2C fixes for the STM32 F3 family from John Wharington.
      - STM32 I2C Correct an error that crept into the STM32 F1 I2C
        driver with some recent changes.  From Librae
      - STM32 F4: Added some missing CONFIG_SERIAL_TERMIOS support; Fixed
        some STM32 F4 Timer 8 pin configurations.  From CCTSAO.
      - STM32 SDIO: If CONFIG_SDIO_BLOCKSETUP defined, OS would crash.  Now
        Generate an error if CONFIG_SDIO_BLOCKSETUP is defined; that
        option is not yet supported by the STM32 SDIO driver.  From CCTSAO
      - STM32 I2C Timers: Some CCER bit settings changed. Submitted by
        CCCTSAO.
      - STM32 CAN: Fix access to CAN filter registers.  From the PX4 team
        via Lorenz Meier.
      - STM32 Kconfig: Fix STM32 UART7/8 Kconfig names and UART DMA.  From
        the PX4 team via Lorenz Meier.

    * LPC17xx Drivers

      - Fix #endif with missing #if in USB host header file.  Reported
        by Andrew Bradford,

    * SAM3/4 Boards:

      - Corrected DMA-related problems: Bad register definitions, parameters
        reversed in a function call.
      - Correct a race condition in the HSMCI driver when an interrupt
        occurs before the wait for the interrupt begins.
      - Peripheral clock setup:  Correct a typo in a register name.

    * Atmel AT91 SAMA5D3

      - Order of some operations changed in boot-up logic to defer
        enabling of caching of memory regions until SDRAM is initialized.
      - Correct handling of spurious interrupts.

    * Freescale KL25Z Drivers

      - KL25Z SPI: Correct typo in name of a function.  From Alan Carvalho
        de Assis.

    * Applications:

      - apps/examples/composite:  Fix a typo that can cause a configuration
        error.  From CCTSAO.
      - apps/examples/pwm:  Clean-up some configuration confusion.
      - apps/netutils/dhcpd/dhcpd.c:  Fixed calculation of the next lease
        address.  From Paolo Messina.
      - apps/examples/usbmsc:  Don't try to control USB trace if we are
        an NSH built-in task.  In that case our attempts are inadequate
        and only interfere with with other logic that is attempting to
        to do the same thing (in NSH or in the USB monitor).
      - apps/examples/usbmsc:  IMPORTANT bug fix: Change how the msconn
        works.  Because of recent changes the msconn command was hanging.
        This was because the USB MSC start-up logic creates a pthread;
        Now waitpid() will wait until all members of the task group
        exit.  So NSH was hanging in waitpid when msconn started even
        though msconn returned.  The USB MSC logic really should not use
        a pthread, but we are stuck with that for now.  The work-around
        is the msconn now daemonizes itself so that it so that the pthread
        is created in a different task group.
      - apps/nshlib:  Fix NSH listing output for the case of a single file.
        From the PX4 team; provided by Lorenz Meier.
Gregory Nutt's avatar
Gregory Nutt committed

NuttX-6.31
----------

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

Additional new features and extended functionality:

    * General:

      - Standardized stack checking logic so the interfaces can be used
        by common stack monitoring logic.

    * Audio Subsystem and Audio Drivers:

      - Ken Pettit has finally released his long awaited audio subsystem.
        This is a generic audio subsystem that is appropriate for the
        deeply embedded MCU.  Current testing has, however, been focused
        on the VS1053 CODEC chip.
      - Ken Pettit's VS1053 audio CODEC driver is now functional.

    * Networking / Network Drivers

      - Add the prefix ETH0 to all PHY configuration selections.  This
        will allow us to support to Ethernet MAC drivers with two different
        PHYs (identified with ETH0 and ETH1).  Enabled with CONFIG_NETDEV_MULTINIC.
      - Add MII/RMII PHY definitions for the Micrel KSZ8051 PHY.
      - Add GMII/GRMII PHY definitions for the Micrel KSZ9021/31 PHY.
      - New network-optimized, higher-performance sendfile() implementation
        from Max Holtzberg.
      - Added a simple routing table.  This table is currenly only used (1)
        when we need to look-up an Ethernet device based on an IP address,
        and (2) in the ARP logic when we need to request the MAC address of
        the router, vs the MAC address of the peer.
      - Make net_close() nonblocking and free unestablished connections if
        no free connections available.  From Max Holtzberg.
      - Changed the meaning of the uip_*input functions. They now return
        success when a packet is dropped; This is needed for the ENCX24J600
        driver that must make a decision to return the packet or not:  It
        should not retry dropped packets. From Max Holtzberg.
      - David Sidrane has completed integration of the CC3000 networking.
        This is much more than a network driver:  It is a complete
        replacement for the NuttX networking with off-chip networking support
        in the CC3000.
      - Numerous enhancements to the ENCX24J600 driver from Max Holtberg.

    * Other Common Drivers:

      - The SST25 serial FLASH MTD driver now includes support for the
        SST25VF016B.  From David Sidrane.
      - Add a preflight method to the SDIO interface to support the STM32
        DMA usage model. From Mike Smith.
      - Enhanced the MMC/SD SDIO driver to perform DMA preflight operations
        and fail DMA read/write requests that fail preflighting. From Mike
        Smith.
      - Add an ioctl command that can be used to trigger ADC/DAC conversion
        under application control.

    * File Systems: