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.
  - dev/smart:  Added support for a /dev/smart loop device. From Ken
    Pettit.

* Networking:

  - Driver Statistics: Most network drivers do not support statistics.
    Those that do only supported them when DEBUG is enabled.  Each
    driver collected an architecture specific set of statistics and
    there was no common mechanism to view those statistics.  Thus,
    the driver feature was mostly useless.  This release standardizes
    the driver statistics and puts the definition in the common network
    device structure defined in netdev.h where they can be accessed by
    network applications.  All Ethernet drivers that collect statistics
    have been adapted to use these common statistics.

* Simulation Platform:

  - W25 FLASH:  Added support for W25 FLASH simulation. From Ken Pettit.
  - HOSTFS: Added support for the HOSTFS file system (see "File Systems",
    above).

* Atmel SAMV7:

  - SAME70:  Added support for the SAME70 family of chips.
  - Tickless: SAMV7 now supports the tickless mode of operation.

* Atmel SAMV7 Drivers:

  - MPU:  Added MPU and protected build support.
  - QSPI:  Added a QuadSPI FLASH driver.  This driver operates in the
    memory-mapped, Serial Memory Mode (SMM).
  - FLASH:  Added support to write on-chip FLASH.
  - Timer/Counter:  TC driver ported to SAMV7 from the SAMA5.  Free-running
    and one-short timer logic also ported.
  - PCK: Brought programmable clock (PCK) logic from SAMA5 into SAMV7.
  - Timer/Counter:  Support PCK6 as an optional source for the timer/
    counter clock.

* Atmel SAMV7 Boards:

  - SAME70-Xplained:  Add NSH and networking configurations for the
    SAME70 Xplained board.  Includes verified support for serial console,
    LEDs, buttons, SDRAM, HSMCI SD card, and networking.
  - SAMV7-XULT and SAME70-Xplained: If Tickless mode is selected then
    enable PCK6 as a timer/counter clock source

* STMicro STM32:

  - CCM PROCFS: Is no longer a part of the 'base' procfs entries and can
    now only be supported via run time registration with
    CONFIG_FS_PROCFS_REGISTER=y.

* STMicro STM32 Drivers:

  - Timers:  Add a compatible lower-half timer driver for use with the
    common timer upper-half driver.  From Wail Khemir.

* STMicro STM32 Boards:

  - STM32F4-Discovery: Add low level support for the Zero Cross driver
    for the STM32F4-Discovery.  From Alan Carvalho de Assis.
  - STM32F4-Discovery: Add board config to support for the MAX6675. From
    Alan Carvalho de Assis.

* C Library/Header Files:

  - bsearch():  Added the bsearch() function from NetBSD.
  - freopen():  Added support for freopen().
  - strftime():  Added day-of-week support (when avaialable).

* Tools:

  - nxstyle: Add crappy style checking tool nxstyle.c.  See thee tools/
    README file for more info.

* Applications: NSH

  - mksmartfs command: Add configuration option to supported multiple
    rootdirectories. From Ken Pettit.
  - Add support for 'basename' and 'dirname' commands.
  - set command:  Like bash, NSH set command now strips off any leading
    or trailing whitespace.
  - mount command: The mount commands now accepts mount options
    (currently needed only for the hostfs file system).  From Ken
    Pettit.
  - losetup command:  NSH no longer calls losetup() and loteardown
    directly. Now it opens /dev/loop and accomplishes these things
    using ioctl() calls.
  - ifconfig command:  If CONFIG_NETDEV_STATISTICS=y, then print the
    network driver statistics in the ifconfig.
  - ifconfig, ifup, and ifdown:  These commands now uses /proc/net/<dev>
    to view network device configuration and status and /proc/net/stat
    to show network statistics.  A consequence of this is that you
    cannot view this network information if the procfs is not enabled
    and mounted at /proc.
  - losmart command:  Added a new NSH losmart command.  losmart setups
    up a loop device for the smart MTD driver similar to losetup but
    with different syntax.  From Ken Pettit.
  - ps command:  The 'ps' command now uses /proc/<pid>/ to obtain task
    status information.  A consequence of this is that you cannot use
    the 'ps' command if the procfs is not enabled and mounted at /proc.
 
* Applications: apps/system:

  - apps/system/hexed:  Port the hexed command line hexadeciamal editor
     to NuttX.  See http://apps.venomdev.net/hexed/.

* Applications: apps/fsutils:

  - apps/fsutils/smartfs: Move into apps/fsutils from kernel, now uses
    only open and ioctl.  From Ken Pettit.

* Applications: apps/examples:

  - apps/examples/fstest:  Add a generic file system test.  This is
    essentially the same as examples/smart, but has all of the SmartFS
    specific logic ripped out.  This was created for testing the new
    TMPFS.
  - apps/examples/zerocross: Add a Zero Cross application example. From
    Alan Carvalho de Assis.
  - apps/examples/media:  Add a simple test for access of media via a
    block driver or MTD driver.

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:

  - Fixed an error in clock_timespec_subtract().  Found by Lok.
  - pthreads: CRITICAL BUGFIX: Logic was wiping out the indication that
    of the type of a pthread.  Hence, it could be confused as a task.
    Found because this was causing a crash when /proc/nnn/cmdline was
    printed.

* File System/Block Drivers:

  - SMART MTD: Fix some Smart wear-leveling bugs.  Fixed SmartFS wear
    level error that occurs when the logical sector size is too small to
    save all wear level status bytes in a single sector.  Logical
    sectors 1 and 2 were simply not being allocated and then the
    read_sector and write_sector routines were failing.  From Ken
    Pettit.

* Graphics/Graphic Drivers:

  - ILI9432:  Fixed errors in orientation. Portrait, RPortrait, and 
    Landscript should work correly now.  They were displayed mirrored.
    From  Marco Krahl.

* Common Drivers:

  - CAN:  Fix a problem in the CAN upper-half driver that occurs only
    for CAN hardware that support a H/W FIFO of outgoing CAN messages.
    In this case, there can be a hang condition if both the H/W and
    S/W FIFOs are both full.  In that case, there may be no event to
    awaken the upper half driver.  Add a new (conditional) CAN upper
    half interface called can_txready() that can be used by the lower
    half driver to avoid this hang condition.
  - MS58xx:  Fix some issues with initialization and with CRC
    calculation.  From Karim Keddam.
  - W25: Fixed W25 FLASH driver page read/write logic. From Ken Pettit.

* Atmel SAMV7 Drivers:

  - USART1 pin configuration: Reconfigure System I/O when using USART1.
    From Frank Benkert.
  - MCAN:  Added a call to can_txready() to the MCAN driver.

* STMicro STM32 Drivers:

  - stm32 F4:  Fix some TIM12 pin mappings.  From Max Kriegleder.

* STMicro STM32 Boards:

  - STM32F429i-Disco:  Calculated partition boundries based on page
    block sizes but mtd_partition() is expecting calculations based on
    erase block size. From Alan Carvalho de Assis.

* C Library/Header Files:

  - sys/types.h: When building on a 64-bit machine, the size of size_t
    should be 64-bits. In general, I believe that sizeof(size_t) should
    be the same as sizeof(uinptr_t).  mmsize_t should always be 32-bits
    in any event.  The last change to stddef has been backed out.  With
    these changes, the simulator builds without errors or warnings an a
    64-bit machine.

* Applications: apps/nshlib:

  - The I/O buffer, g_iobuffer, should not be a global buffer.  That
    will not work in an environment where there are multiple NSH
    sessions.  The I/O buffer must, instead, be a part part of the
    session-specific data defined in nsh_console.h.