| NuttX-7.6 |
| --------- |
| |
| The 106th release of NuttX, Version 7.6, was made on November 26, 2014, |
| and is available for download from the SourceForge website. Note |
| that release consists of two tarballs: nuttx-7.6.tar.gz and |
| apps-7.6.tar.gz. Both may be needed (see the top-level nuttx/README.txt |
| file for build information). |
| |
| Additional new features and extended functionality: |
| |
| * Core OS: |
| |
| - Moved name semaphore and message queue support out of the OS and |
| into the VFS. These improves the architecture by unifying the |
| management of named resources, removes redundant resource management |
| logic, and makes named semaphores and message queues visible in the |
| file system. By default, these are visible at /var/lock and |
| /var/mqueue. |
| - Add SIGPOLL for use as part of the AIO implementation. |
| - Remove CONFIG_MAX_TASK_ARGS configuration. There is now no |
| predetermined limit on the number of arguments that may be passed |
| to a new task on start-up. |
| |
| * Work queues: |
| |
| - Add support for priority inheritance on the low priority worker |
| queue. That is, if a higher priority thread has scheduled work, the |
| priority of the low priority worker thread(s) will be boost to the |
| priority of the queuing thread. At work is performed at at least |
| thread priority of the scheduling thread. If there are multiple |
| worker threads, then all threads get reprioritized. Currently |
| only implemented for AIO. |
| - Add support for multiple low-priority work queue threads. This |
| allows individual worker threads to block indefinitely for I/O as |
| necessary without halting the entire work queue. |
| |
| * VFS/General Drivers: |
| |
| - Implement create() (as a macro). |
| - Add pread() and pwrite(). Also added pread() and pwrite() |
| system calls. |
| - AIO: Add aio_read(), aio_write(), aio_return(), aio_error(), |
| aio_suspend(), aio_canel(), lio_listio(), and aio_fsync(). This |
| logic minimizes the creation of new threads by using the new |
| features also added to the low priority work queue with this |
| release. It uses the new low priority worker thread interface |
| to adjust the priority of the worker thread according to the |
| priority of the AIO client thread |
| - Implement standard syslogmask() to control logging (also removing |
| the non-standard syslog_enable()). |
| |
| * File Systems/Block Drivers/MTD: |
| |
| - Extend MTD support to the M25P16. From Sébastien Lorquet. |
| |
| * Drivers: |
| |
| - BCH (Block-to-Character): Add support for seeking in BCH. From |
| Sébastien Lorquet. |
| |
| * Graphics Support/Graphics-Related Drivers: |
| |
| - Add support for a generic ILI9341 LCD driver. From Marco Krahl. |
| - Add ANSI/VT100 foreground and background color commands. |
| - Add driver for ST7565 LCD that works with NHD-C12864KGZ display. From Pierre-noel Bouteville. |
| |
| * Networking: |
| |
| - Verify that multiple networks can be supported. |
| - Add support for the case where there are multiple networks: One |
| being Ethernet and the other not (SLIP, PPP, ...). The primary |
| difference from the standpoint of the stack is that (1) ARP may or |
| may not be necessary, (2) the size of the link layer header will |
| vary, and (3) different MTUs and TCP receive windows may be used |
| with each link. Suggested by Brennan Ashton. |
| - Extensions to UDP and TCP connection structures for the case of |
| multiple networks. In this case, assigned port numbers only have to |
| be unique with respect to the IP address. So, for example, you |
| could have multiple port 80's, one on each network. |
| |
| * Host Simulation: |
| |
| - Removed the old, strange up_stdio.c and implemented a simulated UART |
| driver to provide the console input. The new logic starts a |
| separate, Linux domain pthread to read the console input in raw mode |
| and provides the incoming data to NuttX via standard NuttX domain |
| IPCs. |
| - Add support for 64-bit longjmp/setjmp in simulator platform. This |
| will permit operation of the simulation natively on a 64-bit |
| platform. |
| |
| * ARMv7-M: |
| |
| - Add ARMv7-M CMSIS ITM header file and library. From Pierre-noel |
| Bouteville. |
| - Add ARMv7-M CMSIS DWT and TPI header files. From Pierre-noel |
| Bouteville. |
| - Add ARMv7-M support to use ITM for SYSLOG debug output. Includes |
| logic from Pierre-noel Bouteville. |
| |
| * Atmel SAM3/4 Drivers: |
| |
| - Add support for SAM3/4 basic serial TERMIOS and flow control. |
| There are issues with IFLOW control: PDC or DMAC support is |
| required. |
| |
| * Atmel SAM3/4 Boards: |
| |
| - SAM4E-EK: Add support for PHY interrupt. |
| |
| * Atmel SAMA5D Boards: |
| |
| - SAMA5D3-Xplained: Add a configuration that provides a simple test |
| for the EMAC and GMAC on the SAMA5D3 working together. |
| - SAMA5D4-EK: Add a configuration that provides a simple test for the |
| EMAC0 and EMAC1 on the SAMA5D4 working together. |
| |
| * Freescale KL: |
| |
| - Add an I2C header file for the Freescale KL family. From Alan |
| Carvalho de Assis. |
| |
| * NXP LPC32xx: |
| |
| - Add support for tickless operation using the NXP LPC43xx. From |
| Brandon Warhurst. |
| |
| * SiLabs EFM32: |
| |
| - Add a basic port for the SiLabs EFM32 family. Includes many files |
| contributed by Pierre-noel Bouteville . |
| |
| * SiLabs EFM32 Boards: |
| |
| - Add board support for the EFM32 Gecko Starter Kit. |
| - Add board support for the Olimex EFM32G8809128 STK. NOTE: I am |
| unable to test this configuration due to tool-related issues. |
| - Add board support for the SiLbas EFM32GG Giant Gecko Starter kit. |
| |
| * STMicro STM32: |
| |
| - Add support for the STM32 F411RE from Serg Podtynnyi. |
| - Add support for the STM32F103RG. From Murilo Ponte. |
| |
| * STMicro STM32 Drivers: |
| |
| - STM32 F4: Add logic that implement true high speed support for the |
| STM32 OTGHS peripheral and concurrent support for both LS and HS |
| OTG. New OTGHS drivers provided for both device and host. From |
| Brennan Ashton. |
| |
| * STMicro STM32 Boards: |
| |
| - STM32 Nucleo-F411RE: Extend this board configuration to also support |
| the Nucleo-F411RE. From Serg Podtynnyi. |
| - Add support for the STM32F429i Discovery's LCD (SPI based). From |
| Marco Krahl. |
| - configs/stm32f100rc_generic: Removed this generic board configuration. |
| I have decided to stop support of generic board configurations. Generic |
| board configurations do not provide support for any specific hardware |
| but can be useful only if there are not other examples for the setup |
| for a particular architecture. Not the case here. |
| |
| * C Library: |
| |
| - Add a mostly bogus wchar.h header file. This file is mostly bogus |
| because none of the wide character operations are currently |
| supported in the NuttX C library. The file does provide the wchar_t |
| types needed by some software, however. |
| - Add isatty() function. From Alan Carvalho de Assis. |
| - Add mktemp(), mkstemp(), tmpnam() and tempnam(). |
| |
| * Configuration/Build System: |
| |
| - Add a PRELINK macro to Config.mk. From Kriegleder. |
| - compiler.h: Defines inline functions as not instrumented - this is |
| relevant for anyone using instrumentation. From Lorenz Meier. |
| |
| * Applications: |
| |
| - apps/interpreter/bas: Added in the Michael Haardt's BAS 2.4 adapted |
| for use by NuttX by Alan Carvalho de Assis. Includes support for |
| VT100 terminals and color commands. |
| - Examples: Added bastest/ which holds a special version of Michael |
| Haardt's BAS 2.4 test files adapted for use by NuttX on a ROMFS file |
| system. |
| - Examples: Add a simple UDP relay bridge for testing configurations |
| with multiple networks. Includes a host-side test driver for |
| testing the bridge. |
| - Netutils: Add implementation of timeouts for the netutils webclient. |
| From Brennan Ashton |
| - NSH: Add support for a custom NSH ROMFS startup image header file |
| location. From Martin Lederhilger. |
| - OS test: Add a simple test of named semaphores. |
| - OS test: Add AIO test case in OS test. |
| |
| Efforts In Progress. The following are features that are partially |
| implemented but present in this release. They are not likely to be |
| completed soon. |
| |
| * Processes. Much of the work in this release is focused on the |
| realization of Unix-style user processes in NuttX. There is more to |
| be done, however. The full roadmap and status is available at: |
| https://cwiki.apache.org/confluence/display/NUTTX/Memory+Configurations |
| |
| * XMega: There are some fragments in place for an XMega port. That |
| port has not really started, however. |
| |
| * Galileo: Similarly, there are fragments in place for an Intel Galileo |
| port. The port not been started in earnest either. |
| |
| 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): |
| |
| I ran cppcheck against the entire code base and correct many latent bugs |
| including things as serious as memory leaks, two locations where interrupts |
| were be disabled but never re-enabled, and errors in the Tickless mode of |
| operation. My thanks to the developers of cppcheck! I am impressed! |
| |
| * Core OS: |
| |
| - vfork(): Now that arguments are kept on the stack, the way that |
| arguments are passed from parent to child in vfork() must change. |
| This bug has always been present, but was not visible with the |
| old strdup() way of passing arguments. |
| - vfork() problem: If we get to vfork() via system call, then we |
| need to clone some system call information so that the return form |
| the cloned system call works correctly. |
| - Fixes to tickless operation code, especially in alarm mode. From |
| Brandon Warhurst. |
| - Fix an important bug in the watchdog timer creation logic. |
| - Calling mq_timedreceived() with immediate timeout was getting stuck |
| and not timing out. Immediate timeout is achieved by setting absolute |
| timeout value to past time, for example abstime={ .tv_sec=0, |
| .tv_nsec=0 }. However absolute time was converted to relative time |
| using unsigned integer arithmetic and resulted large ticks count by |
| clock_abstime2ticks, instead of expected negative ticks value. |
| Change corrects clock_abstime2ticks() to return negative ticks, if |
| absolute time is in the past. From Jussi Kivilinna. |
| |
| * Memory Management: |
| |
| - Fix a place in the memory manager where it explicitly assumed that |
| the size of a pointer is 4 bytes. That assumption was OK if the |
| actual size is smaller but made the heap unstable when used with |
| the x86_64 host simulation. |
| - Granule Allocator: If the INTR granule allocator mode is enabled, |
| there is no semaphore to destroy. From Lorenz Meier. |
| |
| * Networking: |
| |
| - Network routing: I don't think that the net_route() function has |
| ever worked correctly. The source IP was updated in the match |
| struct instead of the route IP. From Brennan Ashton. |
| - Move and rename IP header flag definitions. The problem fixed here |
| is that there IP header flag definitions were not available when TCP |
| was disabled. The IP flags are used in ICMP and IGMP. |
| - Network routing: Refuse to perform routing table lookups for the |
| Broadcast IP address. From Brennan Ashton. |
| - Network routing: Add logic to netdev_findbyaddr() to return the |
| correct network device for the case where a broadcast |
| address is used. This change caused trivial ripples through other |
| files because additional parameters are required for |
| netdev_findbyaddr() when CONFIG_NET_MULTINIC. |
| |
| * File Systems/Block Drivers/MTD: |
| |
| - NXFFS Dump: Fix problems with redefinitions of fdbg macro. With the |
| fix to the syslog prototype, a LOG priority must now be the first |
| parameter. Fixed by replacing all occurrences of fdbg with |
| syslog(LOG_DEBUG, and eliminating the macro redefinitions. Noted |
| by Sebastien Lorquet. |
| - poll() was not waking up from signals (for example mq_notify() |
| events). From Jussi Kivilinna. |
| - poll(): Add proper handling for sem_timedwait errnos. From Jussi |
| Kivilinna. |
| - include/nuttx/fs/fs.h: Fix typo in conditional compilation. From |
| Alan Carvalho de Assis. |
| |
| * Graphics/Graphic-Related Drivers: |
| |
| - Remove warnings when CONFIG_NXTK_BORDERWIDTH is set to zero. From |
| Pierre-Noel Bouteville. |
| |
| * Common Drivers: |
| |
| - Make standard syslog and vsyslog POSIX compliant (also modify |
| non-standard syslog functions for compatibility). |
| - R/W buffering: Fix typo that can cause compilation error. |
| |
| * Atmel SAM3/4: |
| |
| - SAM4S: Add missing SPI0 clock configuration macro for the SAM4S. From spasbyspas. |
| |
| * Atmel SAM3/4 Drivers: |
| |
| - SAM4E-EK: Fix an error in a USART1 pin number. |
| |
| * Atmel SAMA5D3/4 Drivers: |
| |
| - SAMA5DF4: Fix several typos that will prevented EMAC1 from |
| initializing properly. |
| |
| * NXP LPC43xx: |
| |
| - Fixes to allow compile of lpc43_gpioint.c. From Brandon Warhurst. |
| |
| * STMicro STM32: |
| |
| - Add missing ADC pinmap definitions for the STM32 F103R from Martin |
| Lederhilger. |
| |
| * STMicro STM32 Drivers: |
| |
| - STM32 EXTI: Correct STM32 RTC EXTI bit definition. From Lazlo. |
| - STM32 IWDG, WWDG, DBGMCU: Fix watchdog stop bit usage. From Lazlo. |
| - STM32 OTGFS: Correct a typo in the STM32 OTGFS register bit definitions. |
| |
| * ARM: |
| |
| - ARM up_internal.h: Add protection from C++ name mangling in the |
| ARM up_internal.h. From Lorenz Meier. |
| |
| * MicroChip PIC32MX: |
| |
| - PIC32MX7: DEVCFG0 bit 2 must be set. Writing bit 2 as zero can |
| brick the CPU on some versions. From Cris Kvist. |
| |
| * C Library: |
| |
| - The implementation of access() as vararg macro has the issue that |
| any function call with the same name (even in a C++ class) will |
| match with it and result in a compile error. Replaced with a small |
| function. This resolves the compile issue, and shouldn't have |
| negative side effects for users of the function. From Lorenz Meier. |
| - The definition of strncpy() is that empty space should be zero- |
| filled, the change adds the zero filling (See the POSIX spec here: |
| http://pubs.opengroup.org/onlinepubs/7908799/xsh/strncpy.html). From |
| Lorenz Meier. |
| - limits.h: Remove the definition of INT_FAST32_MIN which is already |
| defined in stdint.h (the correct location). From Lorenz Meier. |
| |
| * Applications: |
| |
| - apps/: Correct everything under apps to use the corrected syslog |
| interfaces. Remove any non-portable uses of syslog. |
| - NSH: Fix ls -l output for regular files. |
| - NSH: Fix reversed in/out file closing in DD command when an error |
| occurs. From Ken Pettit. |
| - NSH: Add logic to restart the console wait if an error occurs |
| while reading from the console. In USB console startup, the logic |
| must be able to open the USB serial and receive 3 newlines. |
| However, it the USB driver is disconnected or otherwise fails before |
| the 3 newlines are received, the receive loop becomes a killer, |
| infinite loop, CPU hog. Noted by spasbyspas. |
| - Netutils: Fix memcpy of host address in netlib_gethostaddr(). From |
| Brennan Ashton. |
| - Netutils: If you make a DNS request before the DNS address it would |
| cause an assertion. The state of the IP setting is not something the |
| application should be aware of, it should only be concerned with |
| whether or not the name was resolved. From Brennan Ashton. |
| - Netutils: Fix md5 hashing when digest[$i] islower that 16. From |
| Sergey. |
| - Stack Monitor: Fix compile problems introduced when the syslog() |
| prototype changed; Also update Makefile for kernel build From |
| Radoslaw Adamczyk. |
| - Examples: Update NxTerm makefile for kernel-build issues. From |
| Radoslaw Adamczyk. |
| - Examples: Fixes to keypadtest from Pierre-Noel Bouteville. |
| - Examples: These examples all set the IP address of eth1 but the |
| netmask and gateway of eth0 if DHCP is enabled: discover, tcpecho, |
| webserver, xmlrpc. That can't be right. |