| NuttX-7.7 |
| --------- |
| |
| The 107th release of NuttX, Version 7.7, was made on January 26, 2015, |
| and is available for download from the SourceForge website. Note |
| that release consists of two tarballs: nuttx-7.7.tar.gz and |
| apps-7.7.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: |
| |
| - Task exit handling: Add logic to clean up after task_delete() or |
| pthread_cancel() if the task happens to be waiting on a semaphore |
| when was is cancelled. |
| - Stack coloration: Removed CONFIG_DEBUG_STACK and replaced it with |
| CONFIG_STACK_COLORATION that does the same thing but without enabling |
| debug. From David Sidrane. |
| |
| * Common Drivers: |
| |
| - Discrete joystick driver: Added an interface definition and upper |
| half driver for a discrete joystick device (where X/Y changes are |
| indicated with button presses). |
| - Analog joystick driver: Added an interface definition and upper |
| half driver for a analog joystick device (where X/Y positions are |
| sampled, numeric values). |
| - Add driver support for the ADXL345 accelerometer. From Alan |
| Carvalho de Assis |
| - Generic serial driver: Add watermark levels to the serial RX flow |
| control logic. Modify the rxflowcontrol method to accept the number |
| of bytes in the buffer and a boolean indication of which watermark |
| was crossed. |
| |
| * File Systems/Block Drivers/MTD: |
| |
| - Add procfs write support. From Ken Petit. |
| - Implemented wear-leveling in the SmartFS. From Ken Pettit. |
| - MMC/SD Interface: MMCSD SDIO: Add support for a new |
| SDWAIT_WRCOMPLETE condition. The previous logic used a busy-wait |
| loop to poll the card R1 status to determine when the card was |
| ready for the next transfer. That busy-wait can be quite long -- |
| up to hundreds of milliseconds. An alternative is to look the SD D0 |
| pin which will change state when the card is no longer busy. This |
| change avoids the busy-wait poll by reconfiguring the SD D0 pin as a |
| GPIO interrupt, then waiting for the card to become ready without |
| taking up CPU cycles. From David Sidrane. |
| |
| * Drivers: |
| |
| - Add support for a generic EEPROM driver that accesses EEPROM as a |
| character driver (vs. an MTD driver). From Sébastien Lorquet. |
| |
| * Graphics Support: |
| |
| - Many new fonts converted for use with NuttX and added by |
| Pierre-noel Bouteville |
| |
| * Networking: |
| |
| - IPv4 support is now conditioned on CONFIG_NET_IPv4. |
| - Implemented and verified IPv6 support conditioned on |
| CONFIG_NET_IPv6. Either IPv4 or IPv4 or both may be selected. |
| Sockets, of course, must be bound to one or the other. Added support |
| for IPv6 ioctls to manipulate IP addresses. |
| - Integrated support for ICMPv6 and the ICMPv6 Neighbor Discovery |
| Protocol and ICMPv6 ECHO request/reply needed to support ping logic. |
| - All Ethernet drivers: Modified to support. Most, however, are |
| still missing address filtering logic required for ICMPv6 Neighbor |
| Discovery Protocol. See |
| https://cwiki.apache.org/confluence/display/NUTTX/IPv6 |
| - Also added missing raw/packet socket support to all Ethernet drivers. |
| |
| * Host Simulation: |
| |
| - Add a configuration build and test the Traveler first person game |
| using the simulator. |
| - Add an X11 mouse-based simulation of an analog joystick device |
| |
| * Atmel SAMA5D Boards: |
| |
| - Add analog Joystick shield support for the SAMA5D3 Xplained board. |
| |
| * Freescale KL Drivers: |
| |
| - Add GPIO interrupt capability for the KL architecture. From Alan |
| Carvalho de Assis |
| |
| * Freescale KL Boards: |
| |
| - Freedom-KL25Z: Add board support for the ADXL345 accelerometer. From |
| Alan Carvalho de Assis |
| - Freedom-KL25Z: Update the Freedom KL25Z board CC3000 support to use |
| the current CC300 interfaces. From Alan Carvalho de Assis |
| |
| * NXP LPC43xx Boards: |
| |
| - A port of NuttX to the LPC4357-EVB from Toby Duckworth. This port |
| is a leverage of the LPC3330-Xplorer port and still have a some |
| misinformation from that port that needs to be updated for the |
| LPC4357-EVB. |
| |
| * SiLabs EFM32 Drivers: |
| |
| - Serial: Add support for serial termios TCGET and TCSET. For the |
| moment, only set/get speed is implemented. From Pierre-noel |
| Bouteville. |
| - RMU: Add support for the EFM32 reset management unit (RMU). From |
| Pierre-noel Bouteville. |
| |
| * SiLabs EFM32 Boards: |
| |
| - Add support for timer/PWM on the EFM32GG. From Pierre-noel |
| Bouteville |
| |
| * STMicro STM32: |
| |
| - Enable support for the STM32 F102. From the PX4 team. |
| |
| * STMicro STM32 Drivers: |
| |
| - STM32 F429 LTDC: Add interface to perform hardware accelerated layer |
| operation. Provides access to a reference of a specific ltdc layer. |
| From Marco Krahl |
| - STM32 F429 LTDC support: Implemented LTDC framebuffer support for the |
| generic nuttx framebuffer interface. Also implements the interface to |
| perform hardware accelerated layer operation by the ltdc controller |
| and dma2d controller later. From Marco Krahl. |
| - STM32: Add support for the internal low speed clock (LSI) as a |
| source of the RTC clock. Some boards do not have the external |
| 32kKhz oscillator installed, for those boards we must fallback to |
| the crummy internal RC clock. From Kevin Hester |
| - STM32 SDIO: Add support for the new SDWAIT_WRCOMPLETE condition. |
| From David Sidrane |
| |
| * STMicro STM32 Boards: |
| |
| - Add a discrete Joystick support for the STM3210E-EVAL. |
| - Add analog Joystick shield support for the Nucleo F4x1RE boards. |
| - STM32 F429i-Disco: Add support for initializing of the ltdc |
| controller and the lcd device connected on the stm32f429i-disco. |
| From Marco Krahl. |
| - Removed the px4-v2_upstream configuration. This was not the |
| official configuration for the PX4 board and has led to confusion |
| by NuttX users. The board configuration also requires some ongoing |
| maintenance and customization to support ongoing PX4 testing and |
| evaluation. It is best retained the PX4 repositories where it can |
| be properly maintained and not in the upstream NuttX repository. |
| |
| * TI Tiva: |
| |
| - Add support for the TI Tiva TM4C 129X family. Some unverified |
| support for the TM4C 1294 is also in place. |
| |
| * TI Tiva Drivers: |
| |
| - Added support for Tiva I2C driver. Verified on the Tiva TM4C123G |
| and TM4C129X. |
| - Added a Tiva TM4C129X Ethernet driver. |
| - Add a timer library for generic support of Tiva timers |
| - Add a driver lower half for drivers/timer.c. Only 32-bit periodic |
| timers are supported. This provides userspace access to timers. |
| |
| * TI Tiva Boards: |
| |
| - TM4C123G Launchpad: Add initialization logic for an external AT24 |
| EEPROM. This is intended only to support testing of the Tiva I2C |
| driver. |
| - Board support for the Tiva DK-TM4C129x Connected Development Kit. |
| - DK-TMC129X: Add an IPv6-enabled NSH configuration. |
| |
| * C Library/Header Files: |
| |
| - Added support for a variadic ioctl() function. The ioctl() |
| interface is a non-standard, Unix interface. NuttX has always used |
| the older, three-parameter version. Most contemporary systems now, |
| however, use a variadic form of the ioctl() function. Added an |
| option to insert a shim layer to adapt the three-parameter ioctl() |
| to use the variadic interface form. Internally, the ioctl handling |
| is the same three-parameter logic. The only real complexity to the |
| shim is in how the system calls must be handled. |
| - Added sys/custom_file.h. Used when CUSTOM_FILE_IO is define and |
| avoids re-definition errors about the FILE define. From Thomas |
| Gruber via the PX4 repository |
| - Add CRC8 support to the C library. From Ken Pettit. |
| - math.h: Added support for the expm1 functions. From Brennan Ashton |
| |
| * Applications: |
| |
| - apps/examples/djoystick: Add a test of the discrete joystick |
| driver. |
| - apps/examples/ajoystick: Add a test of the analog joystick |
| driver. |
| - apps/examples/ltdc: Add ltdc test example. From Marco Krahl |
| - apps/system/lm75: Add a tiny application to read the temperature |
| from an LM-75 (or compatible) temperature sensor |
| - apps/examples/timer: Add a trivial test of the timer driver |
| |
| - apps/system/cu: Add a minimalist implementation of the 'cu' |
| terminal program (part of Taylor UUCP for ages). Using it, you can |
| simply open a serial port and interact with it. Using '~.' you can |
| leave the terminal program and drop back to nsh. This might come |
| in handy for people that have e.g. GSM modems, GPS receivers or |
| other devices with text based serial communications attached to |
| their NuttX systems. From Harald Welte |
| - apps/interpreters/micropython: A port of Micro Python to NuttX. |
| Contributed by Dave Marples |
| |
| - apps/netutils/dnsclient: Can select to be either IPv4 or IPv6, but |
| not both (IPv6 still does not compile) |
| - apps/netutils/netlib: Add new library functions to manipulate IPv6 |
| addresses. |
| - apps/examples/nettest: Update test so that it can be used to test |
| IPv6 TCP sockets |
| - apps/examples/udp: The UDP test example has been extend to support |
| IPv6 domain sockets |
| |
| - apps/nshlib: Add logic to initialize IPv6 addresses |
| - apps/nshlib: Add the ping6 command to support checking IPv6 networks. |
| - apps/nshlib: Clean up network status presentation for IPv6 |
| |
| Efforts In Progress. The following are features that are partially |
| implemented but present in this release. They are not likely to be |
| completed soon. |
| |
| * IPv6. While basic IPv6 support was completed in NuttX-7.7, |
| there are lingering issues with getting IPv6 compatibility |
| with applications and network utilities. |
| |
| * 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 probably will not happen (I gave my Galileo board away!). |
| |
| 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: |
| |
| - POSIX message queues: msg type should be char * not void * in |
| mq_send, mq_timedsend, mq_receive, and mq_timedreceive. Noted by |
| Pierre-Noel Bouteville |
| - POSIX message queues: In message queue creation return ENOSPC error |
| if size exceeds the configured size of pre-allocated messages; Use |
| ENOSPC vs ENOMEM per OpenGroup.org. From Pierre-Noel Bouteville. |
| - Task Names: strncpy() will not copy the terminating \0 into the |
| destination if the source is larger than the size of the |
| destination. Ensure that the last byte is always zero and let |
| strncpy() only copy CONFIG_TASK_NAME_SIZE bytes. The issue of |
| unterminated names can be observed in ps when creating a pthread |
| while CONFIG_TASK_NAME_SIZE is set to 8. From Daniel Willmann |
| |
| * Memory Management: |
| |
| - Granule allocator: Fixes some issues found by the PX4 team using |
| Coverity. From Pavel Krienko |
| |
| * Networking: |
| |
| - Several fixes correcting issues with the CC3000 networking. From |
| Jussi Kivilinna |
| - CC3000 Fix: Data can be unaligned. When dereferenced as an input |
| ntosh(), a bad value is returned. Reported by Alan Carvalho de |
| Assis |
| - Correct naming of fields in struct sockaddr_in6: sin6_port and |
| sin6_family, not sin_port and sin_family. |
| - accept(): Correct the value returned by accept() in the case where |
| net_lockingwait() is called. It was returning -1 and losing the |
| errno value. Noted by Rony Xln |
| |
| * Common Drivers: |
| |
| - Loop device should return -EINTR is interrupted by a signal. |
| - M25P serial flash driver: Add subsector size of the M24P16 part. |
| From Lazlo |
| - Common serial driver: In case a thread is doing a blocking operation |
| (e.g. read()) on a serial device, while it is being terminated by |
| pthread_cancel(), then uart_close() gets called, but the semaphore |
| is still blocked. This means that once the serial device is opened |
| next time, data will arrive on the serial port (and driver |
| interrupts handled as normal), but the received characters never |
| arrive in the reader thread. The problem was fixed by re- |
| initializing the semaphores on the last uart_close() on the device. |
| From Harald Welte |
| - Pipes: Fixes some issues found by the PX4 team using Coverity. From |
| Pavel Krienko |
| - CDC/ACM driver: Fixes some issues found by the PX4 team using |
| Coverity. From Pavel Krienko |
| |
| * NXP LPC43xx Drivers: |
| |
| - LPC4357: Changes required to get USART 2 & 3 working on the |
| lpc4357-evb. From Toby Duckworth. |
| |
| * STMicro STM32: |
| |
| - Several fixes correcting issues with the STM32 header files from |
| Jussi Kivilinna |
| |
| * STMicro STM32 Drivers: |
| |
| - Ported Tridge's STM32 I2C noise resilience logic from the PX4 |
| repository. |
| - STM32 F2 and F4: Set the GPIO_SPEED_50MHz on all F2 and F4 SPI pin |
| configurations. This is based on an F411 SPI1 errata but the fixed |
| is generalized to all SPI and all F2 and F4. Discovered and fixed |
| by Sebastien Lorquet. |
| - Fix for STM32 OTGHS device driver working in FS mode. From Ken |
| Pettit. |
| - For STM32 OTG HS DEV (in FS mode): Disable ULPI clock enable in RCC |
| AHB1 Register. If Both ULPI and the FS clock enable bits are set in |
| FS mode, then the ARM never awakens from WFI due to a chip issue. |
| This is only an issue if you are using the internal PHY. From Ken |
| Pettit. |
| - STM32 F429 LTDC: Add missing clut register definition. From Marco |
| Krahl |
| - STM32 serial: fix declaration and definition of up_receive() and |
| up_dma_receive() to match fields in the interface definition of |
| struct uart_ops_s. From Freddie Chopin. |
| |
| * TI Tiva Drivers: |
| |
| - Fix Tiva IRQ control logic; was limited to only 64 IRQs. That is a |
| problem for higher numbered IRQs on many platforms |
| |
| * C Library/Header Files: |
| |
| - avsprintf(): Fix a bug in usage of va_list on x86. On x86, |
| va_list is a pointer to a single copy on the stack. avsprintf() |
| calls lib_vsprintf() twice and so traverses the va_list twice using |
| va_start. va_start modifies that single copy on the stack so that |
| the second call to lib_vsprintf() fails. This appears to be an |
| issue with x86 only so far. |
| - stdint.h: Don't use hex values to specify minimum values of fixed |
| width, signed values. Hex values are inherently unsigned and not |
| usable for this purpose in all contexts. |
| - strncpy(): Would trash a lot of memory if n == 0. From Yasuhiro |
| Osaki. |
| - sscanf(). Accept %X and %F as well as %x %f as a format specifiers. |
| From Sébastien Lorquet |
| |
| * Applications: |
| |
| - apps/examples/romfs: fix romfs example builtin app registry issue. |
| From Librae |
| - apps/system/cdcacm, composite and usbmsc: Fix some strangely placed |
| conditional compilation. Looks like an automated update went awry |
| - apps/netutils/telnetd: Add protection when CONFIG_SCHED_HAVE_PARENT |
| is enabled: Call sigaction with SA_NOCLDWAIT so that exit status is |
| not retained (no zombies) and block receipt of SIGCHLD so that |
| accept is not awakened by a signal. If accept() is awakened by a |
| 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 |