diff --git a/ChangeLog b/ChangeLog index b07a05b3ef..9c088ca529 100755 --- a/ChangeLog +++ b/ChangeLog @@ -9513,7 +9513,7 @@ lpc4357-evb. These changes are required to get USART 2 and 3 working on the Embest development board. From Toby Duckworth. -7.8 2015-xx-xx Gregory Nutt +7.8 2015-02-11 Gregory Nutt * include/nuttx/math.h and libc/math: Add support for inverse hyperbolic functions. From Brennan Ashton (2015-01-26). @@ -9617,7 +9617,7 @@ * EFM32 RTC: RTC driver using BURTC. From Pierre-Noel Bouteville (2015-02-01). * drivers/ramdisk.c, include/nuttx/fs/ramdisk.h, and other files: Add - logic to dispose of the drvier and RAM buffer when the RAM disk has + logic to dispose of the driver and RAM buffer when the RAM disk has been unlinked and all open references to the RAM disk have been closed. Add new parameters to romdisk() to specify what should be done with the RAM/ROM buffer -- Should it be freed or not? Changed @@ -9629,7 +9629,7 @@ with a Neighbor Solicitation) (2015-01-02). * net/arp/arp.h, arp_notify.c, and arp_send.c: Fixes another CONFIG_NET_NOINTS issues. When called sem_timedwait() with the - network locked, the network stays logcked while we wait which is not + network locked, the network stays locked while we wait which is not what we want (without CONFIG_NET_NOINTS, interrupts are re-enabled while we wait and all is well) (2015-02-02). * net/icmpv6/icmpv6.h, icmpv6_neighbor.c, icmpv6_notify.c: Apply the @@ -9681,7 +9681,7 @@ Sidrane (2015-02-07). * drivers/syslog/syslog_console.c, include/nuttx/syslog/syslog_console.h, and the console device initialization logic for all architectures: Add - an option to use the syslog'ing device as the system consolution. This + an option to use the syslog'ing device as the system console. This option enables a low-level, write-only console device at /dev/console (similar to the low-level UART console device). From Pierre-noel Bouteville (2015-02-08). @@ -9745,9 +9745,11 @@ Ethernet driver. Untested... I no longer have a proper environment for LPC17 debug (2015-02-10). * include/netinet/in.h and libc/net/lib_addrconfig.c: Some extensions - to netinet/in.h adding some Linux compatible defintions. From Macs N + to netinet/in.h adding some Linux compatible definitions. From Macs N (2015-02-11). * arch/arm/src/kl: Add architectural support for the K26Z128VLH4 chip. From Derek B. Noonburg (2015-02-11). * configs/freedom-kl26z: Add board support for the Freedom KL26Z board. From Derek B. Noonburg (2015-02-11). + +7.8 2015-xx-xx Gregory Nutt diff --git a/Documentation/NuttX.html b/Documentation/NuttX.html index a63cbf7d54..1fc72a6322 100644 --- a/Documentation/NuttX.html +++ b/Documentation/NuttX.html @@ -1249,20 +1249,29 @@

Released Versions

In addition to the ever-changing GIT repository, there are frozen released versions of NuttX available. - The current release is NuttX 7.7. - NuttX 7.7 is the 107th release of NuttX. - It was released on Januay 26, 2015, and is available for download from the + The current release is NuttX 7.8. + NuttX 7.8 is the 108th release of NuttX. + It was released on February 11, 2015, and is available for download from the SourceForge website. - Note that the release consists of two tarballs: nuttx-7.7.tar.gz and apps-7.7.tar.gz. + Note that the release consists of two tarballs: nuttx-7.8.tar.gz and apps-7.8.tar.gz. Both may be needed (see the top-level nuttx/README.txt file for build information).

+

+ This release is primarily a bugfix release for the NuttX-7.7 version that + was release just two weeks prior. That release included substantial + modifications in the NuttX networking to accommodate support for IPv6. This + release follows close behind NuttX-7.7 in order to correct some the problems + discovered in that networking code. This release does, however, include a + small number of new features and bug fixes unrelated to NuttX networking. +

+

Release Notes and Change Logs:

  • nuttx.

      - Release notes for NuttX 7.7 are available here; + Release notes for NuttX 7.8 are available here; release notes for all released versions on NuttX are available in the SourceForge GIT The ChangeLog for all releases of NuttX is available in the ChangeLog file that can viewed in the SourceForge GIT. The ChangeLog for the current release is at the bottom of that file. @@ -1270,7 +1279,7 @@

  • apps.

      - Release notes for NuttX 7.7 are available here; + Release notes for NuttX 7.8 are available here; release notes for all released versions on NuttX are available in the SourceForge GIT The ChangeLog for the all releases of apps is available in the ChangeLog file that can viewed in the SourceForge GIT. The ChangeLog for the current release is at the bottom of that file. diff --git a/ReleaseNotes b/ReleaseNotes index d4f781ab7b..d43243d5ac 100644 --- a/ReleaseNotes +++ b/ReleaseNotes @@ -8098,3 +8098,322 @@ detailed bugfix information): signal, do not do anything crazy like exit. Most from Rony Xln - apps/nshlib/: NSH TFTP get command: Wrong file name used for the destination. From Lazlo + +NuttX-7.8 +--------- + +The 108th release of NuttX, Version 7.8, was made on February 11, 2015, +and is available for download from the SourceForge website. Note +that release consists of two tarballs: nuttx-7.8.tar.gz and +apps-7.8.tar.gz. Both may be needed (see the top-level nuttx/README.txt +file for build information). + +This release is primarily a bugfix release for the NuttX-7.7 version that +was release just two weeks prior. That release included substantial +modifications in the NuttX networking to accommodate support for IPv6. This +release follows close behind NuttX-7.7 in order to correct some the problems +discovered in that networking code. This release does, however, include a +small number of new features and bug fixes unrelated to NuttX networking. + +Additional new features and extended functionality: + + * Core OS: + + - Tickless Mode: added limit of maximum delay that can be request + by the scheduler tickless logic. This is necessary so that the + tickless logic does not request a delay beyond the capability of the + underlying hardware. From Macs Neklyudov. + + * Common Drivers: + + - VFS Unlink: Add an unlink method to both the character and block + driver interface. This is important because if the driver inode is + unlinked and there are no open references to the driver, then the + driver resources will be stranded. On the unlink call, the driver + has the opportunity (1) check if there an any open references, and + if not, (2) free the driver resources. + - Pipes and FIFOs: Implement the unlink method. If the pipe/FIFO is + unlinked, it will marked the pipe/FIFO as unlinked. If/when all + open references to the driver are closed, all of the driver + resources will be freed. + - Added an option to use the syslog'ing device as the system console. + This option enables a low-level, write-only console device at + /dev/console (similar to the low-level UART console device). From + Pierre-noel Bouteville. + + * File Systems/Block Drivers/MTD: + + - RAM/ROM disk: Add logic to dispose of the driver and RAM buffer + when the RAM disk has been unlinked and all open references to the + RAM disk have been closed. Add new parameters to romdisk() to + specify what should be done with the RAM/ROM buffer in this case -- + Should it be freed or not? Changed all calls to ramdisk() to use + these new parameters. + + * Networking: + + - Add support for local, Unix domain sockets. Support included for + both SOCK_STREAM and SOCK_DGRAM style local socket. + - UDP enhancement: Add UDP read-ahead support. In addition to + eliminating the main reason for lost UDP packets, then change + enables support for for poll/select on UDP sockets and also non- + blocking UDP sockets. From Macs Neklyudov. + - SLIP interface improvements. From Macs Neklyudov. + - IPv6 Neighbor Solicitation: Added logic to support verification + that we have the IPv6 address in the Neighbor Table before sending + any packets. If not, then the Neighbor Solicitation message is + sent. This feature is important because otherwise the first packet + sent to a remote peer will fail (it would have been replaced with a + Neighbor Solicitation). + - IPv6 Autonomous Auto-Configuration: Added support for sending + ICMPv6 Router Solicitation and receiving Router advertisement. The + local IPv6 address, mask, and router address are then auto-configured + from the response.. + - IPv6 Router Support: Add logic to behave like a router (if so + configured) only in the sense that NuttX will send the router + advertisement message in response to any received router solicitation + messages. Thus, one NuttX node in a network can configure the IPv6 + addresses of all other nodes in the network. + - Optional IPv6 address filtering added to all Ethernet drivers for + the all-routers multicast address. + + * Atmel AVR: + + - Added architecture support for the Atmel AVR ATMega1284P MCU. From + Jedi Tek'Unum. + + * Atmel AVR Boards: + + - Added support for the LowPowerLab MoteinoMEGA that is based on the + Atmel AVR ATMega1284P MCU. From Jedi Tek'Unum. + + * Atmel SAMA4: + + - Add support for Tickless mode of operation for the SAM4CM platform. + From Macs Neklyudov. + + * Atmel SAMA4 Drivers: + + - Ethernet: The SAM4E Ethernet driver can now be configuration to + perform all network processing on the work queue. This greatly + reduces the amount of interrupt level processing to service Ethernet + packets. + - SAM4E Ethernet: Add support multicast address matching and IPv6. + + * Atmel SAMA4 Boards: + + - SAM4E-EK: The nsh configuration now configures the Ethernet driver + for execution on the work thread. + + * Atmel SAMA5D Drivers: + + - SAMA5D4 Ethernet: The SAMA5D4 Ethernet driver can now be configuration + to perform all network processing on the work queue. This greatly + reduces the amount of interrupt level processing to service Ethernet + packets. + - SAMA5D3 and SAMA5D4 Ethernet: Add support multicast address matching + and IPv6. + + * Atmel SAMA5D Boards: + + - SAMA5D4-EK; Added a configuration to testing IPv6. + - SAMA5D4-EK: Converted the nsh and ipv6 configurations to configure + the Ethernet driver to use the work queue (vs. interrupt level + processing). + + * Freescale KL: + + - Add architectural support for the K26Z128VLH4 chip. From Derek B. Noonburg. + + * Freescale KL Boards: + + - Add board support for the Freedom KL26Z board. From Derek B. Noonburg. + + * NXP LPC17xx Drivers: + + - Ethernet: Add support multicast address matching and IPv6. + + * SiLabs EFM32: + + - Add configurable option to unconditionally enable LE clocking. Even + you don't use core clock LE as source for LFA or LFB, to read are + write any register not clocked by HFPERCLK or HFCORECLK, HFCORECLKLE + should be enabled. From Pierre-noel Bouteville. + + * SiLabs EFM32 Drivers: + + - EFM32 RTC: RTC driver using BURTC. From Pierre-Noel Bouteville. + + * STMicro STM32 Drivers: + + - AES: Add driver for STM32L162XX AES peripheral. From Juha Niskanen. + - Ethernet: The STM32 Ethernet driver can now be configuration to + perform all network processing on the work queue. This greatly + reduces the amount of interrupt level processing to service Ethernet + packets. + - Ethernet: Add support multicast address matching and IPv6. + + * STMicro STM32 Boards: + + - Added an IPv6 configuration for the STM32F4-Discovery board (with the + STM32-DISCO_BB base board). + - Converted all STM32F4-Discovery configurations (with base board) to + configure the Ethernet driver to use the work queue (vs. interrupt + level processing). + + * TI Tiva Drivers: + + - Added support for TM4C123G timers. From Calvin Maguranis. + - Added a Tiva ADC driver. From Calvin Maguranis. + + * TI Tiva Boards: + + - Added TM4C123G timers on the TM4C123G Launchpad. From Calvin Maguranis. + - Added Tiva ADC support to the TM4C123G-Launchpad. From Calvin Maguranis. + + * C Library/Header Files: + + - Math Library: Added support for inverse hyperbolic functions, + isfinite(), error functions, nan(), copysign(), and trunc() + functions. From Brennan Ashton. + + * Applications: + + - apps/examples/ustream: Add a simple test of Unix domain stream + sockets. + - apps/examples/udgram: Add a simple test of Unix domain datagram + sockets. + - apps/netutils/netlib: Add utilities to convert to/from prefix + lengths from/to 128-bit network masks. + - apps/nshlib: Modify the NSH IPv6 ifconfig command to show the more + standard post-pended prefix value, rather than the full 128-bit + netmask. + +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: + http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes + + * XMega: There are some fragments in place for an XMega port. That + port has not really started, however. + +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: + + - Work Queues: Fix a backward calculation when determining the time + to the next interesting event. . From Liio Chen via the PX4 + repository. + - clock_systimespec(): Fixes for compilation errors in certain + configurations. From Macs Neklyudov. + + * Graphics + + - Fixed a problem with one of the font files. From Pierre-noel Bouteville. + + * Networking: + + - IOB Deadlock: There were issues with the TCP write-ahead buffering + if CONFIG_NET_NOINTS was enabled: There is a possibility of + deadlocks in certain timing conditions: The network should never + wait for TCP read-ahead buffering space to be available. It should + drop the packets immediately if no buffering is available. This was + fixed by duplicating most of the IOB interfaces: The versions that + waited are still present (like iob_alloc()), but now there are non- + waiting versions of the same interfaces (like iob_tryalloc()). The + TCP read-ahead logic now uses only these non-waiting interfaces. + - TCP Deadlock: Fix another deadlock when CONFIG_NET_NOINTS is enabled. + tcp_write_buffer_alloc() calls sem_wait() with network locked. That + worked if CONFIG_NET_NOINTS was not defined because interrupts are + automatically restored when the wait happens. But with + CONFIG_NET_NOINTS=y, the wait blocks with the network locked -- bad + style and also can lead to a deadlock condition. + - ARP response waiting: Fixes another CONFIG_NET_NOINTS issue. When + called sem_timedwait() with the network locked, the network stays + locked while we wait which is not what we want (without CONFIG_NET_NOINTS, + interrupts are re-enabled while we wait and all is well). + - TCP accept(): Fix a major TCP bug introduced with the NuttX-7.7 + IPv6 changes: Some connection logic was reordered; setting the + socket as 'connected' got moved to BEFORE the point where the check + was made if the socket was already connected. The resulting behavior + was odd: Telnet would connect, but then when you exit and reconnect, + it would fail to connect. But then if try again, it would connect + okay. So the symptom was connect-fail-connect-fail-... + - Lots of build problems introduced into multiple NIC support with the + IPv6 changes of NuttX-7.7. Many places where conditional logic based + on CONFIG_NETDEV_MULTINIC is confused with CONFIG_NET_MULTILINK. + Lots of code changed with IPv6 that was never compiled with MULTINIC + enabled. + + * Common Drivers: + + - Pipes and FIFOs: Fix a race condition between FIFO buffer operations + and the opening and closing of FIFOs which necessary when the FIFOs + are used to support Unix domain, datagram sockets. The default + policy is the deallocate FIFO buffering when the last client closes + the pipe. When when used for datagram communications, packets left + in the FIFO will be lost. Some like UDP read-ahead is needed: The + buffered data in the FIFO needs to be retained until the reader gets + a chance to re-open the FIFO. Added an ioctl (PIPEIOC_POLICY) to + control the buffer policy. Default (0) is the legacy behavior; Unix + domain datagram logic sets the alternative policy so that the packet + data persists after the FIFO is closed. + - RAMTRON: Table of parts is not terminated properly if + CONFIG_RAMTRON_FRAM_NON_JEDEC is not defined. Noted by David + Sidrane. + + * All Archtectures: + + - Removed all occurrences of up_maskack_irq() that disables interrupts + with up_ack_irq() that only acknowledges the interrupts. This is only + used in interrupt decoding logic. Also remove the logic that + unconditionally re-enables interrupts with the interrupt exits. This + interferes with the drivers ability to control the interrupt state. + This is a necessary, sweeping, global change and unfortunately + impossible to test. + + * ARM + + - ARMv7-A and ARMv7-M memcpy(): Optimized ARM assembly language + memcpy's were not returning a value in R0 they are required to do. + From David Sidrane. + - ARMv7-A interrupt handler should not automatically re-enable interrupts + on interrupt return. That interferes with the driver's ability to + manage interrupts. Analogous change made to all other architectures + as well (ARM7, ARM9, HC, SH, x86, z16, z80, etc,. See above.). + + * STMicro STM32: + + - GPIO Interrupts: Disabling any of EXTI 5-9 interrupts was disabling + interrupts for all EXTI 5-9. Same issue with EXTI 10-15. From Jussi + Kivilinna. + + * STMicro STM32 Drivers: + + - RTCC: Fix for recent changes that caused compilation failrues with + STM32L15XX configurations. From Jussi Kivilinna. + - SPI: The source clock for SPI 4,5, and 6 should be PCLK2, not PCLK1 + (for F411, F427, and F429). Per David Sidrane. + + * C Library/Header Files: + + - execl(): Fix bad logic in counting the number of arguments. + execl() parameter passing could never have worked. Noted by + Pierre-noel Bouteville. + + * Applications: + + - Fix for building with parallel make. Build-server sometimes failed + 'make -j24' with errors in the builtin line or or sometimes silently + succeeds but generated builds that contain a random subset of + configured NuttX applications. There are two root causes for this: + (1) Recipes for building builtin_list.h and builtin_proto.h are + not linearizable, and (2) Nothing ensures that 'make context' is run + first for apps/builtin. This change address both issues. From Juha + Niskanen.