| NuttX-7.18 |
| ---------- |
| |
| The 118th release of NuttX, Version 7.18, was made on October 8, 2016, |
| and is available for download from the Bitbucket.org website. Note |
| that release consists of two tarballs: nuttx-7.18.tar.gz and |
| apps-7.18.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: |
| |
| - Add standard adjtime() interface and basic timekeeping support. |
| Normally used with an NTP client to keep system time in |
| synchronization. From Max Neklyudov. |
| - Use the oneshot timer with optional entropy to measure CPU load if |
| so configured. |
| |
| * File System and Block and MTD Drivers: |
| |
| - Add Fujistu MB85RS256B ramtron support. From Beat Küng. |
| - SPI-based MTD driver for Macronix MX25L3233F or MX25L6433F. From |
| Aleksandr Vyhovanec. |
| |
| * Graphics/Display Drivers: |
| |
| - SH1106 0.96 OLED module support (SSD1306 compatible) + I2C fixes. |
| From v01d (phreakuencies). |
| |
| * Sensor Drivers: |
| |
| - Add KXTJ9 Accelerometer driver from the Motorola Moto Z MDK. |
| - Add MFRC522 RFID ISO14443 and Mifare transceiver driver. From Alan |
| Carvalho de Assis. |
| - Add driver for the LIS3MDL 3 axis magnetometer. From Alexander |
| Entinger. |
| - Add driver for the MLX90393 3 axis magnetometer. From Alexander |
| Entinger. |
| - Add driver for the LIS3DSH 3 axis accelerometer. From Alexander |
| Entinger. |
| - Add driver for the Bosch BMG160 3 axis gyroscope. From Alexander |
| Entinger. |
| - Add support for the Sensixs XEN1210 3D-board. This sensor is used |
| on NANOSATC-BR2 a Brazilian CUBESAT project. From Alan Carvalho |
| de Assis. |
| - Add a new ioctl command (set MAXPOS) for Tiva QEI. From Young. |
| |
| * Other Common Device Drivers: |
| |
| - I/O Expander: Remove hard-coded PCA9555 fields from ioexpander.h |
| definitions. Add support for an attach() method that may be used |
| when any subset of pin interrupts occur. |
| - I/O Expander Interface: Encode and extend I/O expander options to |
| include interrupt configuration. |
| - PCA9555 Driver: Replace the signalling logic with a simple callback |
| using the new definitions of ioexpander.h. This repartitioning of |
| functionality is necessary because (1) the I/O expander driver is |
| the lower-lower part of any driver that uses GPIOs (include the GPIO |
| driver itself) and should not be interacting directly with the much |
| higher level application layer. And (2) in order to be compatible |
| with the GPIO driver (and any arbitrary upper half driver), the |
| PCA9555 should not directly signal, but should call back into the |
| upper half. The upper half driver that interacts directly with the |
| application is the appropriate place to be generating signal. |
| - Add a skeleton I/O Expander driver (based on the PCA9555 driver). |
| - Add PCF8574 I/O Expander driver. |
| - GPIO driver: Add IOCTLs to get the pin type and to unregister a |
| signal handler. |
| - Add a GPIO lower-half driver that can be used to register a GPIO |
| character driver for accessing pins on an I/O expander. |
| - Add an SPI helper function that encapsulates and manages a sequence |
| of SPI transfers. |
| - Add an SPI character driver that will permit access to the SPI bus |
| for testing purposes. |
| - Add oneshot timer lower half interface definition. |
| - Add an upper-half, oneshot timer character driver. |
| - Add Audio Tone Generator for NuttX. From Alan Carvalho de Assis. |
| - Add USB host support for composite devices. This feature is not |
| well tested. |
| - drivers/ioexpander: Add an (untested) TCA64XX I/O Expander driver |
| leveraged from Project Ara. |
| |
| * Simulation Platform: |
| |
| - Add a simulated I/O Expander driver. |
| - Add simulator-based test support for apps/examples/gpio. |
| - Add a configuration useful for testing Mini Basic. |
| - Add a simulated oneshot lowerhalf driver. |
| |
| * Atmel SAM3/4 Drivers: |
| |
| - SAM4CM: Add option to support oneshot timer without free-running |
| timer. Add oneshot lower half driver. |
| |
| * Atmel SAMA5 Drivers: |
| |
| - SAMA5D: Add option to support oneshot timer without free-running |
| timer. Add oneshot lower half driver. |
| |
| * Atmel SAMV7 Drivers: |
| |
| - SAMV71/SAME70: Add option to support oneshot timer without |
| free-running timer. Add oneshot lower half driver. |
| - Add support for SAMV7 DACC module. From Piotr Mienkowski. |
| |
| * NXP Freescale Kinetis Drivers: |
| |
| - Add support for I2C and RTC. From v01d (phreakuencies). |
| |
| * NXP Freescale Kinetis Boards: |
| |
| - Add teensy 3.x I2C support. From v01d (phreakuencies). |
| |
| * STMicro STM32: |
| |
| - Add IAR-style STM32F1xx vectors. Tested on STM32F103RB and |
| STM32F107RC. From Aleksandr Vyhovanec. |
| |
| * STMicro STM32 Drivers: |
| |
| - Add timekeeping support for the STM32 tickless mode. From Max |
| Neklyudov. |
| - Add a oneshot, lower-half driver for STM32. |
| - STM32 L4: Add oneshot lower half driver for STM32 L4. |
| - STM32 L4: Add support for quadrature encoders on STM32L4. Sebastien |
| Lorquet. |
| |
| * STMicro STM32 Boards: |
| |
| - stm32f103-minimum: Add board support to MFRC522 driver. From Alan |
| Carvalho de Assis. |
| - Add oneshot board initialization to stm32f103-minimum. From Alan |
| Carvalho de Assis. |
| - stm32f103-minimum: Add board configuration to initialize Audio Tone |
| Generator. From Alan Carvalho de Assis. |
| - stm32bufferfly2: Add support for the Kamami stm32butterfly2 |
| development board with optional ETH phy. From Michal Lyszczek. |
| - stm32f103-minimum: Add board config support to SPI LCD module |
| JLX12864G-086. From Alan Carvalho de Assis. |
| - stm32l476-mdk: Support basic booting and nsh on Motorola MDK. The |
| Motorola MDK is based off of an earlier version of NuttX. |
| This only provides a basic NSH shell. From Jim Wylder. |
| - STM32 F4 Discovery: Add support for XEN1210 3D-board. From Alan |
| Carvalho de Assis. |
| - stm32f103-minimum: Add stm32_bringup support and userled example to |
| STM32F103 Minimum board. From Alan Carvalho de Assis. |
| - Add support for qencoders on various nucleo boards. From Sebastien |
| Lorquet. |
| - olimex-stm32-e407: Add some networking configurations. From Mateusz |
| Szafoni. |
| |
| * TI Tiva Drivers: |
| |
| - Add tiva PWM lower-half driver implementation. From Young. |
| - Tiva QEI: Add QEI lower-half driver for Tiva series chip. From |
| Young. |
| |
| * C Library/Header Files: |
| |
| - Separate XorShift128 PRNG from /dev/urandom and make it generally |
| available. |
| - Add POSIX type sig_atomic_t. From Sebastien Lorquet. |
| - Add the difftime() function. The function depends on the toolchain- |
| dependent CONFIG_HAVE_DOUBLE so is not available on tiny platforms. |
| From Sebastien Lorquet. |
| - Add support for remove(). From Sebastien Lorquet. |
| - Add system() to stdlib.h. Actual implementation is in |
| apps/system/system. |
| |
| * Build/Configuration System: |
| |
| - Rename arch/sh to arch/renesas. |
| - Remove contactless drivers from drivers/wireless to drivers |
| contactless. From Sebastien Lorquet. |
| - Move all modem-related IOCTL commands to a common file to assure |
| that they will be unique. |
| |
| * Tools: |
| |
| - Add sethost.sh. This is a script that you can use to quickly |
| change the host platform from Linux to Windows/Cygwin. Might save |
| you a lot of headaches. |
| |
| * Applications: apps/nshlib: |
| |
| - Add logic to support an NSH-specific system command. |
| - Add printf command to NSH, e.g., controlling /dev/userleds from |
| command line: nsh> printf \x01 > /dev/userleds. From Alan Carvalho |
| de Assis. |
| |
| * Platforms: apps/system: |
| |
| - Port tee command from NetBSD. |
| - Add a generic system command. Current implementation cannot use |
| /bin/sh and spawns the custom NSH system command directly. |
| |
| * Platforms: apps/platform: |
| |
| - Add C++ support for STM32L476-MDK. |
| |
| * Platforms: apps/interpreters: |
| |
| - Add a port of Mini Basic, version 1.0, written by Malcom McLean and |
| released under the Creative Commons Attribution license. |
| |
| * Applications: apps/examples: |
| |
| - Add a simple test of the GPIO driver. |
| - Add RFID_READUID sample application. From Alan Carvalho de Assis. |
| - Add Oneshot timer example. |
| - Add a simple test of the system command. |
| |
| Works-In-Progress: |
| |
| * IEEE802.14.5/6LowPAN. Hooks and framework for this effort were |
| introduced in NuttX-7.15. Work has continued on this effort on |
| forks from the main repositories, albeit with many interruptions. |
| The completion of this wireless feature will postponed until at |
| least NuttX-7.19. |
| |
| 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: |
| |
| - Explicitly initialize the group tg_exitsem with sem_init(). The |
| existing logic worked because the correct initialization value is |
| all zero, but it is better to initialize the semaphore explicitly. |
| - The TCB nchildren field should not be incremented when pthreads are |
| created. |
| - Move fields related to parent/child task relationship out of TCB |
| into group structure where they belong. Child is a group, not a |
| thread. |
| - mq_send() was not setting the errno value on certain failures to |
| allocate a message. |
| - Define 'group' even if HAVE_GROUPID is not set. From Mateusz |
| Szafoni. |
| - Vector table should have dimension NR_IRQS, not NR_IRQS+1. From |
| Sagitta Li. |
| - pthreads: When a pthread is started, there is a small bit |
| of logic that will run on the thread of execution of the new |
| pthread. In the case where the new pthread has a lower |
| priority than the parent thread, then this could cause both the |
| parent thread and the new pthread to be blocked at the priority of |
| the lower priority pthread (assuming that CONFIG_PRIORITY_INHERITANCE |
| is not selected). This change temporarily boosts the priority of the |
| new pthread to at least the priority of the new pthread to at least |
| the priority of the parent thread. When that bit of logic has |
| executed on the thread of execution of the new pthread, it will then |
| drop to the correct priority (if necessary) before calling into the |
| new pthread's entry point. |
| |
| * File System/Block Drivers/MTD Drivers: |
| |
| - FAT performance improvement. In large files, seeking to a |
| position from the beginning of the file can be very time consuming. |
| ftell does lssek(fd, 0, SET_CURR). In that case, that is wasted |
| time since we are going to seek to the same position. This fix |
| short-circuits fat_seek() in all cases where we attempt to seek to |
| current position. Suggested by Nate Weibley. |
| - MTD: Fixed cloned typos in several FLASH drivers. From Aleksandr |
| Vyhovanec. |
| - mount: Corrects a bad assertion noted by Pierre-noel Bouteville. |
| Also fixes a reference counting problem in an error condition: |
| When the mountpoint inode is found but is not an appropriate |
| mountpoint, the reference count on the inode was not being |
| decremented. |
| |
| * Common Drivers: |
| |
| - Various serial drivers: Fix FIONWRITE and add FIONSPACE. All |
| implementations of FIONWRITE were wrong. FIONWRITE should return |
| the number of bytes waiting in the outgoing send queue, not the free |
| space. Rather, FIONSPACE should return the free space in the send |
| queue. |
| - Add missing prototype for btn_lower_initialize(). |
| - Make DAC sample structure packed. From Marc Rechté. |
| |
| * Networking: |
| |
| - TCP: tcp_ipvX_bind() not actually using the port selected with |
| port==0. Also removes duplicate call to pkt_input(). Issues noted |
| by Pascal Speck. |
| - drivers/net: NET_TUN=y => NET_MULTIBUFFER=y. From Vladimir |
| Komendantskiy. |
| - slip driver: Fix calculations using MSEC_PER_TICK. If |
| USEC_PER_TICK is less than 1000, then MSEC_PER_TICK will be |
| zero. It will be inaccurate in any case. |
| |
| * Atmel SAM3/4 Drivers: |
| |
| - SAM3/4 GPIO: Enable peripheral clock for GPIO port when GPIO is |
| configured as input. The value of a GPIO input is only sampled when |
| the peripheral clock for the port controller the GPIO resides in is |
| enabled. Therefore we need to enable the clock even when polling a |
| GPIO. From Wolfgang Reissnegger. |
| - All SAM Ethernet Drivers: Add support so that the drivers can be |
| built with CONFIG_NET_MULTIBUFFER=y. |
| - SAM3/4: Fix GPIO pull-up/down code. Enabling the pull-down resistor |
| while the pull-up resistor is still enabled is not possible. In this |
| case, the write of PIO_PPDER for the relevant I/O line is discarded. |
| Likewise, enabling the pull-up resistor while the pull-down resistor |
| is still enabled is not possible. In this case, the write of |
| PIO_PUER for the relevant I/O line is discarded. From Wolfgang |
| Reißnegger. |
| |
| * Atmel SAMV7 Drivers: |
| |
| - All SAM Ethernet Drivers: Add support so that the drivers can be |
| built with CONFIG_NET_MULTIBUFFER=y. |
| - SAM GPIO: Apply Wolfgang's change for SAM3/4 to SAMA5 and SAMV7. |
| |
| * Atmel SAMA5: |
| |
| - Add missing oneshot max_delay method. |
| - All SAM Ethernet Drivers: Add support so that the drivers can be |
| built with CONFIG_NET_MULTIBUFFER=y. |
| - SAM GPIO: Apply Wolfgang's change for SAM3/4 to SAMA5 and SAMV7. |
| |
| * NXP Freescale LPC43xx Drivers: |
| |
| - LPC43xx serial: Fix typos in LPC43 serial driver. Found by Vytautas |
| Lukenskas. |
| - LPC43xx Serial: There are some small problems in LPC43xx RS485 mode |
| configuration. In particular: (1) UART0,2,3 do not have DTR pins |
| (different from UART1), so, Kconfig needs to be adjusted. (2) |
| lpc43_uart.c in RS485 mode only configures DIR pin, but doesn't |
| enable pin output for UART0,2,3. (3) should be option to reverse DIR |
| control pin output polarity. (4) lpc43xx/chip/lpc43_uart.h doesn't |
| have USART3 definitions. NOTE: I didn't modified and didn't tested |
| USART1, as it has different hardware. From Vytautas Lukenskas. |
| From Vytautas Lukenskas. |
| |
| * SiLabs EFM32 Drivers: |
| |
| - EFM32 SPI drivers adopted incompatible conventions (See STM32 for |
| details of the issue). |
| |
| * STMicro STM32 Drivers: |
| |
| - STM32, STM32 L4, and EFM32 SPI drivers adopted incompatible |
| conventions somewhere along the line. They set the number of bits |
| to negative when calling SPI_SETBITS which had the magical side- |
| effect of setting LSB first order of bit transmission. This is not |
| only a hokey way to pass control information but is supported by no |
| other SPI drivers. This change three things: (1) It adds |
| HWFEAT_LSBFIRST as a new H/W feature. (2) It changes the |
| implementations of SPI_SETBITS in the STM32 and EFM32 drivers so |
| that negated bit numbers are simply errors and it adds the |
| SPI_HWFEATURES method that can set the LSB bit order, and |
| (3) It changes all calls with negative number of bits from all |
| drivers: The number of bits is now always positive and |
| SPI_HWFEATURES is called with HWFEAT_LSBFIRST to set the bit order. |
| - Add missing SPI2 and SPI3 support for STM32F3F3. Add STM32F37XX DMA |
| channel configuration. For STM32F37XX, SYSCFG_EXTICR_PORTE defined |
| twice. From Alan Carvalho de Assis. |
| - STM32: Make stm32_pwr_enablebkp thread safe. From Max Neklyudov. |
| - Fix bad pllmul values for STM32F1XX connectivity line. STM32F1XX |
| connectivity line supports only x4, x5, x6, x7, x8, x9 and x6.5 |
| values. From Michal Lyszczek. |
| - STM32F3 SPI: Fix the number of bit setting for the F3. That and |
| data packing work differently on the STM32F3 than for other STM32 |
| parts. |
| - STM32 and STM32 L4: Enabling SPI DMA loses other bits in CR2. |
| - STM32F3 SPI: Cannot write always 16-bit value to DR register |
| because of how the F3 implements data packing. |
| - STM32F411 and STM32F446 map i2c2_sda_4 to different alternate |
| function numbers. From Konstantin Berezenko. |
| - STM32 DMA Fix: Change stm32 adc dma callback to send channel |
| number instead of index. From Konstantin Berezenko. |
| - STM32 OTGFS device: Fix for lost first word from FIFO |
| |
| 1) Do not overwrite Reserved Bits in GINTSTS (per ref manual)* |
| 2) Acknowledge all pending int on entry to ISR that are Only rc_w1* |
| 3) Do not disable RXFVL* |
| 4) Loop until RXFVL is cleared* |
| 5) Only clear the NAK on the endpoint on the OTGFS_GRXSTSD_PKTSTS_SETUPDONE to not loose the first WORD of FIFO all the data (Bug Fix) |
| |
| Changed marked *are just driver clean up and ensure ints are not lost. The bug fix is #5 |
| |
| Test case open putty and observer the Set/Get LineCoding. Without this fix #5 the Get will not match the Set, and in fact the data might be skewed by 4 bytes, that are lost from the FIFO if the OTGFS_DOEPCTL0_CNAK bit is set in the OTGFS_GRXSTSD_PKTSTS_SETUPRECVD as opposed to the OTGFS_GRXSTSD_PKTSTS_SETUPDONE |
| |
| Set Line Coding DATA1: 4B | 00 c2 01 00 00 00 08 | c8 1B |
| Get Line Coding DATA1: 4B | .. .. .. .. 00 00 08 c8 .. 00 00 07 | 7a 72 |
| |
| From David Sidrane. |
| - STM32 L4 OTGFS device: Apply stm32 fix to stm32l4. From Sebastien |
| Lorquet. |
| - STM32 F7: Remove duplicate call to pkt_input from Ethernet driver. |
| Issues noted by Pascal Speck. |
| - STM32 L4: Add support for USART3-USART5. For STM32L4 parts, the |
| higher number USART ports supported varies. Add the HAVE_USARTx |
| definitions to the configuration to allow enabling the higher |
| numbered USART ports. From Jim Wylder. |
| - STM32 USB: Set USB address to avoid a failed assertion. From |
| Pierre-noel Bouteville. |
| - STM32 L4 and L7 USB: Pierre's assertion-avoidance change should |
| also be applied to STM32 F7 and L4. |
| - STM32, L4, and F7: Remove GPIO_ETH_RMII_TX_CLK. TX_CLK is not |
| present in RMII. Mateusz Szafoni. |
| - STM32 Ethernet: Correct typo in conditional logic. From Neil |
| Hancock. |
| - STM32 L4 USB Device: Fixed L4 USB Driver by avoiding SETUPDONE and |
| EPOUT_SETUP. From David Sidrane. |
| - STM32 SPI: stm32_modifycr2 should be available on all platforms if |
| DMA is enabled. |
| - STM32 DMA2D: fix an error in up_dma2dcreatelayer where an invalid |
| pointer was returned when a certain underlying function failed. |
| From Jens Gräf. |
| |
| * TI Tiva Drivers: |
| |
| - Fix two bugs of tiva pwm lower-half driver implementation. From |
| Young. |
| - Tiva Ethernet: Needs support for CONFIG_NET_MULTIBUFFER=y. |
| |
| * C Library/Header Files: |
| |
| - lib_dumpbuffer() now prints a large on-stack buffer first to avoid |
| problems when the syslog output is prefixed with time. From |
| Pierre-noel Bouteville. |
| - libc/math: This fixes the following libc/math issues: (1) asin[f l]() |
| use Newton's method to converge on a solution. But Newton's method |
| converges very slowly (> 500,000 iterations) for values of x close to |
| 1.0; and, in the case of asinl(), sometimes fails to converge (loops |
| forever). The attached patch uses an trig identity for values of |
| x > sqrt(2). The resultant functions converge in no more than 5 |
| iterations, 6 for asinl(). (2) The NuttX erf[f l]() functions are |
| based on Chebyshev fitting to a good guess. The problem there's a |
| bug in the implementation that causes the functions to blow up with |
| x near -3.0. This patch fixes that problem. It should be noted that |
| this method returns the error function erf(x) with fractional error |
| less than 1.2E-07 and that's fine for the float version erff(), but |
| the same method is used for double and long double version which |
| will yield only slightly better precision. This patch doesn't |
| address the issue of lower precision for erf() and erfl(). (3) a |
| faster version of copysignf() for floats is included. From David S. |
| Alessio. |
| - strtod() was not returning endptr on error conditions. |
| - libc/math: floor(), floorf(), and floorl(): Fix logic error. Was |
| not correctly handling negative integral value. |
| - isatty() should be prototyped in unstid.h, not termios.h. From |
| Sebastien Lorquet. |
| - nxglib: Fix handling of near-horizontal lines of width 1 in |
| nxgl_splitline(). Missing handling for degenerate condition caused |
| width 1 lines such as (0, 0) - (100, 10) to have gaps in the |
| drawing. From Petteri Aimonen. |
| |
| * Build/Configuration System: |
| |
| - Top-Level Makefiles: Fix a chicken-and-egg problem. In the menuconfig |
| target, the context dependency was executed before kconfig-mconf. That |
| was necessary because the link at apps/platform/board needed to be set |
| up before creating the apps/Kconfig file. Otherwise, the platform |
| Kconfig files would not be included. But this introduces the chicken- |
| and-egg problem in some configurations. In particular: (1) An NX |
| graphics configuration is used that requires auto-generation of |
| source files using cpp, (2) the configuration is set for Linux, but |
| (3) we are running under Cygwin with (4) a Windows native toolchain. |
| In this case, POSIX-style symbolic links are set up but the Windows |
| native toolchain cannot follow them. The reason we are running |
| 'make menuconfig' is to change from Linux to Cygwin, but the target |
| fails. During the context phase, NX runs CPP to generate source files |
| but that fails because the Windows native toolchain cannot follow |
| the links. Checkmate. This was fixed by changing all of the make |
| menuconfig (and related) targets. They no longer depend on context |
| being run. Instead, they depend only on the dirlinks target. The |
| dirlinks target only sets up the directory links but does not try |
| to run all of the context setup; the compiler is never invoked; no |
| code is autogenerated and things work. |
| - CXXFLAGS: Add -fcheck-new whenever -fno-exceptions is used. From |
| Beat Küng. |
| |
| * Tools |
| |
| - tools/refresh.sh: Recent complexities added to apps/ means that |
| configuration needs the correct Make.defs file in place in order to |
| configure properly. |
| - tools/kconfig2html.c: Update to handle absolute paths when sourcing |
| Kconfig files. |
| - tools/mkfsdata.pl was still generating the old-style apps/include |
| inclusion paths. |
| |
| * Application Build/Configuration System: |
| |
| - Add DIRLINK and DIRUNLINK tool definitions to apps/Make.defs. |
| |
| * apps/nshlib: |
| |
| - Fix FIFO_SIZE vs PIPE_SIZE. |
| - Fix hex representation of IP address in Kconfig. Noted by Michal |
| Lyszczek. |
| - nsh_syscmds.c: missing semicolon. From Mateusz Szafoni. |
| - In system command, don't try to flush output streams if stdio |
| buffered I/O is not supported. |
| |
| * apps/canutils: |
| |
| - libuavcan: Under certain circumstances, DELIM is not be defined in |
| Makefile. |
| - Add definition for APPNAME in apps/canutils/canlib. From Sebastien |
| Lorquet. |
| |
| * apps/gpsutils: |
| |
| - Fix an error minmea. From Aleksandr Vyhovanec. |
| |
| * apps/examples: |
| |
| - apps/examples/oneshot: If the requested delay is > max_delay, then |
| break the delay up into several pieces. |