NuttX-7.1 --------- The 101st release of NuttX, Version 7.1, was made on March 15, 2014, and is available for download from the SourceForge website. Note that release consists of two tarballs: nuttx-7.1.tar.gz and apps-7.1.tar.gz. Both may be needed (see the top-level nuttx/README.txt file for build information). The previous NuttX version was 6.33. The NuttX minor version number is incremented on each release, but the major version number is incremented only when an incompatibility with previous versions is included in the release. In this case, the legacy, manual configuration is no longer supported by the NuttX build system beginning with NuttX 7.1. Only the newer configurations generated by the kconfig-frontends tools will generate viable NuttX configurations. All board configurations in the NuttX source tree have been converted to use the newer configuration, but if you have some older style configurations for you board, you will need to convert those configurations to use the kconfig-frontends tools before taking any new code from the repository. See https://cwiki.apache.org/confluence/display/NUTTX/Converting+Legacy+Configurations+to+Use+kconfig-mconf for some guidelines. Additional new features and extended functionality: * Core OS: - System time logic now includes logic to measure and calculate the CPU load percentage (from David Alessio). This CPU load logic extended to keep counts on each thread. The per-thread CPU is now reported in the procfs under /loadavg An asynchronous, "external" clock may be used to drive the CPU load calculations for more accurate measurements when needed. * File Systems: - As mentioned above, the per-thread CPU load information is now reported in the procfs under /loadavg. - Many file system interfaces have been extended to operate on the top-level NuttX pseudo filesystem. These include rmdir, mkdir, rename, and unlink. This capability can be disabled with CONFIG_DISABLE_PSEUDOFS_OPERATIONS in order to keep the footprint small. * Networking: - Numerous updates and improvements to the CC3000 driver from David Sidrane. * Common Drivers: - Defined a mouse interface that is very similar to a touchscreen interface, but allows reporting of all mouse buttons. Also, unlike touchscreen drivers, mouse drivers need to report positional data with no button is pressed so that the mouse position can drive a cursor. - Added support for a USB HID boot mouse device. Cursor support is not integrated and must be provided by the application based upon the reported mouse data. - Support added for the MIO283QT9A LCD from Toby Duckworth. * Atmel SAMA4E: - Added complete architecture support for the Atmel AT91 SAM4E Cortex-M4F parts. * Atmel SAM4E Board Support: - Add board support for the SAM4E-EK board. * Atmel SAM4E Drivers: - Added logic to manage the Cortex-M Cache Control block. - Developed and integrated an Ethernet MAC driver for the SAM4E. - Backported the SAMA5 SPI driver to the SAM3/4 architecture. The SAMA5 version supports both multiple SPI peripherals as needed by the SAM3A and SAM3X and also supports DMAC (but not PDC) needed by the SAM4E. * Atmel SAM D20: - Added basic architecture support for the Atmel AT91 SAM D20 Cortex-M0+ parts. * Atmel SAM D20 Board Support: - Added basic support for SAM D2 Xplained Pro board. Currently, the NuttShell (NSH) works reliably over a serial port. An SPI driver has also been developed. Work with the SAM D20 has been temporarily stopped, however, in order to focus on the SAM4E-EK. * TI Tiva TMC4C123G: - Added architecture support for the TI Tiva TM4C123G parts. This was merged into the existing support for the LM3S and LM4F families. All directory, file, and function references changed from lm to tiva. * TI Tiva TMC4C123G Board Support: - Added basic board support for the TM4C123G-Launchpad. As of this release the TM4C123G-Launchpad board support is untested and likely incomplete. * STMicro STM32 Boards: - The Mikroe STM32F4 can now support the newer MIO283QT9A LCD. From Toby Duckworth. - Miscellaneous changes to better support FPU on STM32F429 Discovery from David Alessio. * NXP LPC2378 Drivers: - Incorporated I2C and SPI drivers for the LPC23xx from Lizhuoyi. * QEMU i486 Drivers: - New QEMU keyboard and VGA drivers from Lizhuoyi. * Documentation: - Added a coding standards document. See https://nuttx.apache.org/docs/latest/contributing/coding_style.html * Configuration/Build System: - A configuration option, CONFIG_DEFAULT_SMALL, was added to select default values for configuration variables based upon whether you want a smaller footprint or more features. This is not very useful if you are modifying existing configurations because then the default values do not apply. - CONFIG_DEFAULT_SMALL has been defined on all tiny MCU configurations so that they do not grow so rapidly when new, optional features are added. - The legacy, manual configuration is no longer supported by the NuttX build system. Only the newer configurations generated by the kconfig-frontends tools will generate viable NuttX configurations. All board configurations in the NuttX source tree have been converted to use the newer configuration, but if you have some older style configurations for you board, you will need to convert those configurations to use the kconfig-frontends tools. See https://cwiki.apache.org/confluence/display/NUTTX/Converting+Legacy+Configurations+to+Use+kconfig-mconf for some guidelines. * Applications: - NSH can now use an EMACS-like command line editor. This CLE, is really more like the traditional readline than is the default, tiny the NuttX readline . - The touchscreen example can now be configured to work with either a touchscreen or a mouse device. - Several NSH commands can now be used to operate on objects in the top-level pseudo-filesystem: rmdir, mkdir, mv, and rm. This capability can be disabled with CONFIG_DISABLE_PSEUDOFS_OPERATIONS in order to keep the footprint small. - If both the CPU load feature and the procfs features are enabled, then the NSH 'ps' command will show the CPU load used by each thread. Bugfixes (see the ChangeLog for details). Some of these are very important: * Core OS: - task_terminate() always returned an error because the return value was not being set correctly (from Gosha). - nanosleep() Fix a missing call to re-enable interrupts (from Jason Jiang). * File Systems: - Fixed an error in the FAT logic that can cause file corruption. The error conditions are rare and only seen with very large files (from Andrew Tridgell). This replaces a previous, partial fix for the same problem. - Fixed memory leaks in the NXFFS open() and stat() implementations (from Lzyy). - The interfaces include opendir(), readdir(), et al, were modified so that errors will not be reported if you attempt to list a empty pseudo-directory. * Networking: - Fix one place where the connection reference count was not being decremented in the socket close() logic. This is really a cosmetic change BUT when CONFIG_DEBUG_NET is enabled, it will cause assertions. - Backed out a small part of the NuttX 6.33 write buffering changed. David G says that this causes problems in connecting to a server. - In DHCPD, there was a place where the logic was calling ntohl() inappropriately; the address was already in the correct order. How could DHCPD have worked with this bug? * TI Tiva/Stellaris Drivers: - Fixed cut'n'paste error that prevented UARTS2-7 from being used with the LM4F120 Launchpad. - Fixed several errors there were unmasked with UARTs > UART2 are enabled (grom Gosha). * Allwinner A10 Drivers: - Fixed cut'n'paste error that prevented UARTS2-7 from being used with the pcDuino. * NXP LPC17xx Drivers: - Fix an compilation error that crept into the LPC17xx USB host driver. * STMicro STM32 Drivers: - Fix cloned typo in the serial driver: FLOWCONTROL vs FLOWCONROL. - Disable SPI before changing DPI CR1 register (from David Sidrane). - stm32 TIM: Set the timer CCMR when selecting timer channel. From David Sidrane. - Fix typo in a Makefile: stm32_pwm.c not stm32_psm.c. Noted by Max Kriegleder. * Library: - More sscanf() bug fixes from David Sidrane. * Header files: - cstdbool: Ignore _Bool8 if CONFIG_C99_BOOL8=y * Configuration/Build System: - Several changes to restore the broken native Windows build * NuttShell (NSH): - Use strncpy vs strcpy in the Telnet console logic to avoid overrunning the username and password buffers (from Bertold Van den Bergh). - Add a newline after printing the file in the 'cat' command. This prevents the NSH prompt from be in the same line as the final line of the file in the case where there is no newline at the end of the file.