NuttX-7.31 ---------- The 131st release of NuttX, Version 7.31, was made on July 21, 2019, and is available for download from the Bitbucket.org website. Note that release consists of two tarballs: nuttx-7.31.tar.gz and apps-7.31.tar.gz. These are available from: https://bitbucket.org/nuttx/nuttx/downloads https://bitbucket.org/nuttx/apps/downloads Both may be needed (see the top-level nuttx/README.txt file for build information). Additional new features and extended functionality: * Core OS: - poll(): Removed all references to CONFIG_DISABLE_POLL. The standard POSIX poll() can no longer be disabled. From Gregory Nutt. - LWL console: Add support for OpenOCD 'Lightweight Link' protocol between a target and debugger for use when you need a console but the target doesn't have a spare serial port or other available resource. From Dave Marples. * Network/Network Drivers: - Socket Options: Previous change removed some incorrect SO_LINGER socket option functionality. SO_LINGER was always enabled if CONFIG_NET_SOLINGER was selected. This change implements a proper version of SO_LINGER. It is based on new logic to drain the buffered TX data, integrated with network event notification system. Supports notification when UDP or TCP write buffer becomes empty. From Gregory Nutt. - Telnet Driver: Handle ctrl events (SIGINT, SIGSTP). From Valmantas Paliksa. - Telnet Driver: I/O thread now offloads reading from socket from client thread to the I/O thread. From Valmantas Palikša. * Wireless/Wireless Drivers: - GS2200M: Add support for Telit GS2200M Wi-Fi module From Masayuki Ishikawa. - GS2200M: Introduce CONFIG_WL_GS2200M_SPI_FREQUENCY. Also, changed usleep(100) to up_udelay(100) to avoid invalid response. From Masayuki Ishikawa. - GS2200M: Add channel parameter for AP mode in gs2200m.c From Masayuki Ishikawa. * Graphics/Video/Display Drivers: - Video Streaming: Add basic Video Stream and Capture implementation based on the SPresence SDK code release From Alin Jerpelea. - video/: Create video/ directory to hold non-driver video-related logic. From Gregory Nutt. - EDID: Add some initial EDID logic ported from FreeBSD. From Gregory Nutt. - EDID: Add logic to sort video modes by how close they are to the preferred mode. This is part of the logic to pick the best possible video mode. From Gregory Nutt. - EDID/Video Modes: Separate EDID and from videomode management. They really are separate things. From Gregory Nutt. - EDID/Video Modes: Add debug functions to dump the EDID and videomode content. From Gregory Nutt. - VESA GTF: Bring VESA Generalized Timing Formula (GTF) from FreeBSD. From Gregory Nutt. - Video Modes: At some additional lookups from FreeBSD. Not currently used in NuttX so ifdef'ed out for now. From Gregory Nutt. - tda19988: Now uses the new common videomode structure of include/nuttx/video/videomode.h as do other video components. From Gregory Nutt. - ILI9340: Add ILI9340 LCD Single Chip Driver. Required LCD driver settings: LCD_MAXCONTRAST should be 255, but any value >0 and <=255 will be accepted. LCD_MAXPOWER should be 1: 0=off, 1=on. From Alin Jerpelea. - LPM013M091A: Add JDI LPM013M091A LCD Driver. From Alin Jerpelea. - ISX012: Add support for ISX012 Image sensor. From Alin Jerpelea. * Other Common Device Drivers: - SPI Interface: Added standard definitions for ADC SPI device ID. From Daniel P. Carvalho. - AK09911/AK09912: Add Asahi AK09911/AK09912 compass sensor over I2C bus From Alin Jerpelea. - AS726X: Add support for AS726X spectral sensor From Fabian Justi. - BMI160: Add driver support for the Bosch BMI160 Inertial Measurement sensor. This driver can be used with the BMI160 sensor connected over SPI or I2C bus. From Alin Jerpelea. - BMP280: Add Bosch BMP280 Barometic pressure sensor connected over I2C bus. From Alin Jerpelea. - INA3221: Adds INA3221_I2C_ADDRx macro helpers. From Anthony Merlino. - VL53L1x: Added support for VL53L1x TOF sensor. From Juan Flores. * Microchip PIC32MZ Drivers: - PIC32MZ DMA: Add DMA support. From Abdelatif Guettouche. * NXP i.MXRT Drivers: - i.MXRT EHCI: Add i.MXRT EHCI driver. From Dave Marples. - i.MXRT USDHC: Implements SDIO and Multi-card support for i.MXRT. From Dave Marples. - i.MXRT USDHC: Implements USDHC1 & 2 selection on the imxrt. If only one port is active (either 1 or 2) it will always be numbered as 0, if both are active then USDHC1 will be number 0, USDHC2 will be 1. From Dave Marples. - i.MXRT Serial: Add TIOCSINVERT ioctls. From Beat Küng. - i.MXRT Serial: Implemented RS485 RX/TX switching and RTS/CTS flow control for the IMXRT family. It has been tested on 1020 but I don't see any reason for issues on any other family member. From Dave Marples. * NXP/Freescale Kinetis Drivers: - Kinetis Serial: Add UART signal inversion support From Beat Küng. * NXP LPC11xx: - LPC11xx: Support for the LPCXpresso-LPC1115 and for the LPC1115 architecture in general was removed after NuttX-7.30. The LPC11 port was never really used (to my knowledge) and was no longer supported. A snapshot of the port is still available in the Obsoleted repository. It can be brought back into the main repository at any time if anyone is willing to provide support for the architecture. From Gregory Nutt. * NXP LPC17xx Boards: - PNEV5180B: Add support for NXP Semiconductors' PN5180 NFC Frontend Development Kit. This board is based on the NXP LPC1769 MCU. At the moment there is just support for a minimal nsh configuration via UART0. From Michael Jung. - PNEV5180B: Add usbnsh configuration. This is basically the same as the 'nsh' defconfig, but uses CDC/ACM as the NuttShell console device. From Michael Jung. - PNEV5180B: Adds NSH configuration with UART0 and eth0 via CDC/ECM on USB device. From Michael Jung. - PNEV5180B: Add new configuration includes a USB Composite Device with both CDC/ACM and CDC/ECM. NuttShell provides a terminal via CDC/ACM. A network interface (eth0) is provided via CDC/ECM. From Michael Jung. - PNEV5180B ROMFS: Auto-mount baked-in ROMFS image. Includes support for linking a binary ROMFS image into the nuttx executable and for mounting it during board bring-up. From Michael Jung. - PNEV5180B PROTECTED: Add PROTECTED mode configuration with NuttShell. From Michael Jung. * NXP LPC40xx: - LPC40xx: Add support for LPC40xx family chips. Renamed LPC17XX to LPC17XX_40XX in directory, configuration, file names, etc., as appropriate. Corrected a few peripheral definitions and pin functions for the LPC17xx family. Added configuration options, chip definitions, and additional pin functions for the LPC40xx family. From jjlange. * NXP LPC40xx Boards: - LPC4088-Devkit: Added board configuration for Embedded Artists LPC4088 Developer's kit. From jjlange. - LPC4088-Quickstart: Added board configurations for Embedded Artists LPC4088 Quickstart board. From jjlange. * NXP LPC54xx Boards - LPCXpresso-LPC54628: Enable DATE command in twm4nx1 and twm4nx2 configurations. From Gregory Nutt. * Sony CXD56xx - CXD56xx: Adds (1) the HW pin configuration, (2) GPIO support for CXD56xx, (3) GPIO interrupts, (4) clock support, (5) PMIC (Power management integrated circuit) support (6) add a simple FIFO scheduler that minimizes overhead, (6) Inter Core Communication. From Alin Jerpelea. - CXD56xx: Add Package Configuration. The CXD56xx can come in FCBGA 185 pin or WLCSP 100 pin package. For each package we have to pick the right pin setup. The default configuration is set to FCBGA 185 pin package From Alin Jerpelea. - CXD56xx: Add Power Management support From Alin Jerpelea. - CXD56xx: (1) Add syscontrol, (2) Add the function to change the clock speed, (3) Add pinctrl and clock ctrl functionality. From Alin Jerpelea. * Sony CXD56xx Drivers: - CXD56xx USB: Add basic support for USB connectivity. From Alin Jerpelea. - CXD56xx SDHC: Add SDHCI driver for the CXD56xx. From Alin Jerpelea. - CXD56xx SPI: Add SPI support. From Alin Jerpelea. - CXD56xx DMA: Add DMA support. From Alin Jerpelea. - CXD56xx RTC: Add RTC support. From Alin Jerpelea. - CXD56xx PWM: Add support for PWM. From Alin Jerpelea. - CXD56xx Power Management: Add Power Management PROCFS support. From Alin Jerpelea. - CXD56xx Timer: Add Timer driver. From Alin Jerpelea. - CXD56xx Watchdog Timer: Add watchdog timer support. From Alin Jerpelea. - CXD56xx UID: Add support to be able to read the HW UID. From Alin Jerpelea. - CXD56xx I2C: Add I2C support. From Alin Jerpelea. - CXD56xx I2C: Add I2C character driver support. For testing purposes, we use the CXD56_I2C_DRIVER to register the /dev/i2c[] character devices. Add battery gauge and battery charger drivers. Add SPI-based SP card support. From Alin Jerpelea. - CXD56xx SCU: Add Sensor Control Unit (SCU); Use DMAC for reading sensing data from SCU on CXD56xx chip. From Alin Jerpelea. - CXD56xx ADC: Add ADC interface support. From Alin Jerpelea. - CXD56xx eMMC: Add eMMC support for CXD56xx chip From Alin Jerpelea. - CXD56xx Camera: Add driver for hardware image processor device to enable the hardware image processor set CXD56_GE2D=true. From Alin Jerpelea. - CXD56xx CISIF: Add CISIF support to be able to use cameras. From Alin Jerpelea. - CXD56xx GNSS: Add GNSS device, add Geofence Support, add UART0 interface. UART0 is an interface with hardware flow control in the application subsystem. From Alin Jerpelea. * Sony CXD56xx Spresense Board: - Default Configurations: (1) We are using the framework to initialize the CPU, (2) Enable PowerManager on SPresence board, (3) Initialize the UART interfaces, (4) Enable clock management using the CXD56 framework, (5) Use timerisr on the SPresence board, (6) Enable USBDEV on Spresense board, (7) Enable SD Card support on SPresence board, (8) Enable Mass Storage on Spresense board From Alin Jerpelea. - Default Configurations: Add support for RNDIS configuration. From Masayuki Ishikawa. - RTC: Enable RTC functionality on SPresence board From Alin Jerpelea. - SPI FLASH: Enable SPI Flash arch/arm/src/cdx56xx: (1) Group all CXD56xx Options in one menu, (2) Add Storage Options menu and Peripheral Support comment, (3) Add SPI Flash support From Alin Jerpelea. - Add SPI configuration for SPresence board. Enable PWM support on SPresence board; The powermanager procfs is disabled by default and need to be enabled by the CONFIG_CXD56_PM_PROCFS option. Timers can be used on the SPresence board. Watchdog timer support also added. From Alin Jerpelea. - Add USERLED for SPresence board. From Alin Jerpelea. - Enable I2CDEV for SPresence board. Add useful diagnostic LEDs on the SPresence board. From Alin Jerpelea. - Add support for Tilt GS2200M Wi-Fi module. From Masayuki Ishikawa. - Remove SPI MMC/SD support and enable ADC support for SPresence board. From Alin Jerpelea. - Enable BMI160_I2C sensor over I2C on SPresence board. From Alin Jerpelea. - Add I2CTOOL support and extend GPIO for future use. Add delay support for CXD56xx chip. For development is useful to register I2C buses when the I2CTOOL is built. Enable GPIO interface on the Spresense board. From Alin Jerpelea. - Add use o the CXD56_I2C_DRIVER to register the /dev/i2c character devices. Enable battery gauge and battery charger support. From Alin Jerpelea. - Enable UID functionality. To enable the UID functionality for SPresence board set BOARDCTL_UNIQUEID in menuconfig. From Alin Jerpelea. - Add USBDEV_SETNOTIFYSIG signal ID. Set signal ID for notify USB device connection status and supply current value. From Alin Jerpelea. - Register the procfs in the NSH configuration. This is a configuration change in sync with the other ones. Enable READLINE_CMD_HISTORY, enable by default SPI 4 and 5, and enable SPI to keep all configurations in sync. From Alin Jerpelea. - Add support for MSC and USB Composite device. Adds usbmsc configuration. Spresense board does not have buttons and but a template for gpio buttons that can be connected on the external header From Alin Jerpelea. - LCD: Add support for LPM013M091A LCD, add support for ILI9340 LCD, add a new configuration to support an LCD. From Alin Jerpelea. - WiFi: Improve performance for webserver: (1) Enable SPI DMA for both TX and RX, (2) Increase SPI clock speed from 4MHz to 10MHz, (3) Increase buffer size for sendfile() from 512B to 1KBm abd (4) Enable sendfile() for webserver. From Masayuki Ishikawa. - MPY: Add MPY defconfig. From Alin Jerpelea. - Update defconfigs rndis and wifi: Enable RTC and webserver with directory listing support. Also, changed start year/month/day for NuttX 2019. From Masayuki Ishikawa. - Build nuttx.spk images. Enable nuttx.spk binary image that can be flashed on SPresence board. From Alin Jerpelea. - configs/SPresence: Add entry point for MPY. The entry point is needed for the downstream projects based on SPresence. From Alin Jerpelea. - Enable internal flash storage for SPresence boards. The SmartFS flash is mounted under /mnt/spif folder. From Alin Jerpelea. - For compatibility with SDK we need to change the INIT_ENTRYPOINT in all configurations to spresense_main(). From Alin Jerpelea. * STMicro STM32: - STM32 Kconfig: Add MEDIUM_DENSITY selection. From Dave Marples. - STM32 Kconfig: Add the missing STM32 LCD Clock Source Selections. From Alan Carvalho de Assis. - STM32G0: Initial support for STM32G0 family. From Mateusz Szafoni. - STM32F0L0G0: Renamed directories STM32F0L0 to STM32F0L0G0 since they now also supports the STM32G0 thanks to Mateusz Szafoni's contribution From Gregory Nutt. - STM32H7x3: Added ADC pins to pin map. From David Sidrane. * STMicro STM32 Drivers: - STM32 PWM: Add support for all PWM modes. Add an interface to change PWM mode. Refactor pwm_mode_configure(). STM32_PWM_CHANx corresponds to the timer channel and STM32_PWM_OUTx corresponds to the timer channel output. Add CHAN5 and CHAN6 to PWM_TIMx_NCHANNELS. Calculate thePWM_TIMx_NCHANNELS if CONFIG_STM32_PWM_MULTICHAN is selected. From Mateusz Szafoni. - STM32 FSM/FSCM: Split the STM32 FMC/FSMC functionality. Makes FMC it's own thing rather than piggy backing on the FSMC code. The peripherals have a few utility functions and this commits lets you have a common architectural functions rather than having duplicate functions in each board implementation. From Jason Harris. - STM32F7 DTCM: Add procfs register From Daniel Agar. - STM32F7 GPIO: Add GPIO driver. Code is inspired from STM32F3- Discovery and Nucleo-L476RG platforms. Tested on Nucleo-F767ZI. From Phil Coval. - STM32F7 Serial: This adds the ability to invert and swap RX/TX on STM32F7 UARTs. I added the TIOCGINVERT as well to reserve the IOCTL number, but did not implement it. This is the same as for TIOCGSINGLEWIRE. From Beat Küng. - STM32L4 CRS: Make STM32L4 CRS synchronization source board configurable. From Juha Niskanen. - STM32L4 HSI48: Enable CRS_CR_CEN with CRS_CR_AUTOTRIMEN. From Jussi Kivilinna. - STM32L4 I2C: Add support for 16 and 120 MHz timings. Board can use HSI16 clock for I2C From Juha Niskanen. - STM32L4 PWR: Enable PWR peripheral for setting USV. From Jussi Kivilinna. - STM32L4 RCC: Use Range 1 Boost mode if SYSCLK is higher than 80 MHz. From Juha Niskanen. - STM32L4 Serial: Add TIOCSINVERT and TIOCSSWAP ioctls. From Beat Küng. - STM32H7 ADC: Added ADC Driver, ADC clocking. From David Sidrane. - STM32H7 Ethernet: Fix typo in define. From Pierre-Olivier Vauboin. - STM32H7 PWM: Port PWM from STM32 From Mateusz Szafoni. - STM32H7 QEncoder: Ported the QEncoder from F7 to H7. From Eduard Niesner. - STM32H7 Serial: Add TIOCSINVERT and TIOCSSWAP ioctls. Ensure TIOCSSINGLEWIRE is atomic and UE disabled. From Beat Küng. * STMicro STM32 Boards: - Olimex-STM32-E407: Added BMP180 initialization and a configuration to test the BMP180. From Juan Flores. - Olimex-STM32-E407: Add DAC support, add IN219 support, add timer driver support. From Juan Flores. - Olimex-STM32-E407: Add support for MRF24J40 radio. From Gregory Nutt. - Axoloti: Adds initial support for the Axoloti sound/music synthesizer board. Board is based on STM32F427 SoC. See http://www.axoloti.com/. From Jason Harris. - Nucleo-G071RB: Initial support for nucleo-g071rb. From Mateusz Szafoni. - Nucleo-L432KC: Add new configuration settings for CRS synchronization to board.h. From Juha Niskanen. - Nucleo-L432KC: Add support for testing the ina219 current sensor. From Sebastien Lorquet. - Nucleo-L452RE: Add new configuration settings for CRS synchronization to board.h. From Juha Niskanen. - Nucleo-144: Add ROMFS support. Image was generated using genromfs tool. Tested on Nucleo-F767ZI. From Phil Coval. - Nucleo-144: Add reset feature. Code is derives from STM32F4- Discovery. It can be enabled using CONFIG_BOARDCTL_RESET From Phil Coval. - Nucleo-L476RG: (1) Add I2C tool to board init, (2) Add support for AS726X spectral sensor From Fabian Justi. - Nucleo-L496ZG: Add new configuration settings for CRS synchronization to board.h. From Juha Niskanen. - STM32L476VG-Disco: Add new configuration settings for CRS synchronization to board.h. From Juha Niskanen. - STM32L4R9AI-Disco: Add ksh config, some updates for I2C, SPI and DFSDM support. From Juha Niskanen. - Nucleo-H743ZI: Add ADC support. From David Sidrane. - STM32F769I-Disco PWM: Enable PWM support for stm32f769i-disco board. - STM32L-Discovery: Add button support for stm32Ldiscovery. Add chronometer board config. From Alan Carvalho de Assis. * TI AM335x: - AM335x Clock Module: Add clock module registers definition. Switch to DMTIMER1 for systick. From Petro Karashchenko. * TI AM335x Drivers: - AM335x CAN, LCD: Add register description files for DCAN and LCD. From Petro Karashchenko. - AM355x I2C: Add register description files for I2C (plus various improvements to the WDOG register definitions) From Petro Karashchenko. - AM355x MCSPI: Add register description files for MCSPI. From Petro Karashchenko. - AM355x LCDC: This change brings in an initial LCD driver into the AM335x architecture. Ported from FreeBSD. From Gregory Nutt. - AM335x Framebuffers: Add logic to map the framebuffer to a non-cached, non-buffered memory region. From Gregory Nutt. - AM335x LCDC: Add logic to get/set the module reference clock. From Gregory Nutt. * TI AM335x Boards: - Beaglebone-Black LCD: Add a configuration for bringing up the LCDC driver. From Gregory Nutt. - Beaglebone-Black LCD: Framework (only) for TDA19988 and LCD support for Beaglebone Black. Can't use TDA19988 yet because there is no I2C driver. In the mean time, support LCD initialization using a fixed, configurable video mode. From Gregory Nutt. * ZiLOG z16f ZNeo: - z16f ZNeo: Add support for the latest 5.2.1 version of the ZDS-II toolchain. From Gregory Nutt. * ZiLOG eZ80Acclaim!: - Integrate support for the newest eZ80 ZDSII 5.3.0 toolchain. From Gregory Nutt. * ZiLOG eZ80Acclaim! Drivers: - eZ80 RTC: Integrate and verify the RTC driver From Gregory Nutt. - eZ80 RTC: Add an RTC lower half driver. From Gregory Nutt. * ZiLOG eZ80Acclaim! Boards: - MakerLisp: Add initial support for the MakerLisp eZ80 board. Ref: https://makerlisp.com/ From Gregory Nutt. - MakerLisp: Add hooks needed by SPI driver. Move SPI MMC/SD chip selected configuration from ez80_lowinit.c to here as is done in other NuttX architectures. This enables support for multiple devices on the SPI bus. From Gregory Nutt. - MakerLisp: Add Smart Flash Programmer project. From Gregory Nutt. - MakerLisp: Enable Procfs, RTC, SPI-based SD support, task name, NSH data command in NSH configuration.. From Gregory Nutt. - MakerLisp: Use .ztgt files from MakerLisp SDK. From Gregory Nutt. - MakerLisp: Add a tiny FLASH-resident loader that will load and start applications in Intel HEX format from an SD card. From Gregory Nutt. - MakerLisp: Bring in a new configuration to support execution entirely out of external SRAM. From Gregory Nutt. - MakerLisp: Add an sdboot configuration that will load .hex files from the SD card. From Gregory Nutt. - MakerLisp: Add a linker script to support copying the NuttX image from FLASH into external SRAM. From Gregory Nutt. - MakerLisp: The VGA display controller and keyboard controller come up by default emulating a terminal with 'newline mode' on. That is newlines expance to carriage-return, newline. This change turns that mode off. From Gregory Nutt. * Libraries/Header Files: - include/cxx/cstddef: Add C11++ std::nullptr_t From junmin-kim. - libc netdb: Implemented the netdb functions getnameinfo(), getservbyport(), and getservbyport_r(). From Michael Jung. * Documentation - Applied a style sheet to static HTML files. Put the TOC of each document to the side, where it made sense (in some documents the TOC was actually inside a section so it wasn't possible). In some cases the TOC is built with a table, in others with a