NuttX Changelog

New in version 7.5

November 11th, 2014
  • Features: Additional new features and extended functionality:
  • Core OS:
  • Watchdog Timer Allocation: (1) If we run out of pre-allocated watchdog times, the logic will now allocate additional timers from the heap. A reserve of pre-allocated watchdog timers is maintained so that there will always be timers available for interrupt handlers. (2) Added support for statically allocated watchdog timer
  • Address Environment Support: (2) New OS APIs integrated into all platform-specific context switching logic (up_block_task(), up_unblock_task(), _exit(), and others).
  • Kernel Build Support: (1) The MPU based "kernel build" renamed to a protected build (CONFIG_BUILD_PROTECTED); added support for the a new MMU-based "kernel build" (CONFIG_BUILD_KERNEL), (2) The system call library can now be built with CONFIG_NUTTX_KERNEL. New selection*: CONFIG_LIB_SYSCALL.
  • System Startup: Add configuration options to start the system from a program on a file system (versus an address in memory).
  • Startup Parameter Passing: There used to be two ways to pass parameters to new tasks, depending upon the configuration: Either (1) argv[] as created as an array with each string strdup'ed. Or (2) argv[] array and strings were created on the stack before the new task was started. Now, there is only one way, way (2). Way (1) might be slightly more compact, but this is not worth carry the complexity of two different ways of doing the same thing.
  • Board Initialization: Add capability to perform initial board initialization on a separate worker thread. This is needed because there are many cases where initialization logic cannot execute on the start-up/IDLE thread. That is because blocking or waiting is not permitted on the IDLE thread.
  • Memory Management:
  • Granule Allocator: (1) Add a new function to reserve un-allocatable regions in the granule heap. (2) Add interfaces to support un-initializing a granule allocator.
  • Page Allocator: Add a simple physical page allocator based on the existing NuttX granule allocator. I am not certain if the granule allocator is sufficiently deterministic for long range use, but it gets get a page allocator in place for testing very quickly.
  • Remove CONFIG_MM_MULTIHEAP: Non-multiheap operation is no longer supported.
  • sbrk(): sbrk() is now supported in the kernel build to permit dynamically sized, per-process heaps.
  • Per-Process Heaps: Space at the beginning of the process data space is now reserved for user heap management structures. In the kernel build mode, these heap structures are shared between the kernel and use code in order to allocate user-specific data.
  • User Heap Management: When a privileged thread exits, we have to use the kernel allocator to free memory; when an unprivileged thread exits, we don't have to do anything... heap memory will be cleaned up when the address environment is torn down.
  • Inter-Process Shared Memory Support: (1) Add implementation and documentation for shmget(), shmctl(), shmat(), and shmdt(). (2) Add system system calls to support the user call gate to the shared memory interfaces. (3) Add platform-specific interface definitions needed to support the shared memory feature.
  • Virtual Page Allocator: Add support for a per-process virtual page allocator. This is a new member of the task_group_s structure. The allocator must be initialized when a new user process is started and uninitialize when the process group is finally destroyed. It is used by shmat() and shmdt() to pick the virtual address onto which to map the shared physical memory.
  • File Systems/Block Drivers/MTD:
  • SMART FS: SMART FS and SMART FS procfs updates from Ken Pettit.
  • MTD: The MTD Read-ahead/Write buffer layer appears is now functional.
  • Binary Formats:
  • Per-Process Heap: Add logic to initialize the per-process user heap when each user process is started.
  • Graphics:
  • NxTerm: Change all occurrences of NxConsole to NxTerm.
  • Networking:
  • PHY Interrupts: (1) Standardize a PHY interrupt attachment interface. (2) Add support for an ioctl that can be used to notify an application when there is a change in the network status signalled by a PHY interrupt.
  • Improved Send Logic: In the past, the first packet send to a new network peer would fail; there would be no entry in the ARP table for the peer and so an ARP request could replace that first packet. Now as an option if CONFIG_NET_ARP_SEND=y, all send logic will (1) check if the peer MAC address is in the ARP table and, if not, (2) send ARP requests periodically to get the mapping and (3) wait for the ARP response. Then (4) when the ARP response is received then the actual send logic will be initiated. Thus there may be a delay with the first packet sent to a new peer, but the packet should not be lost
  • Host Simulation:
  • SPI FLASH Driver: Emulated SPI FLASH driver for the sim target from Ken Pettit.
  • Intel x86:
  • Default Host: The default host is now x86_64 and the -m32 option will be automatically selected for simulation builds.
  • Intel 8051 Family:
  • 8051 Removed: Removed all support for the 8051 family architecture from the NuttX source tree. The obsoleted code along with the removal patch can now be found at misc/Obsoleted/. This code was removed because (1) although some functionality has been demonstrated, I am not aware of any really successful ports of NuttX to any 8051, and (2) the 8051, with its hardware stack, forces limitations and complications to the other architectures and make growth and development of NuttX more complex.
  • ZiLOG ZNeo Boards:
  • configs/16z: Support for this board has been removed from the NuttX source tree (but still can be found in the misc/Obsoleted directory). This port is not ready for usage but may return to the NuttX tree at some point in the future.
  • Atmel SAM3/4 Boards:
  • SAM4E-EK: Add (1) a fully-functional ILI9341-based LCD driver and (2) a fully-functional NxWM configuration.
  • ARMv7-A:
  • Address Environments: Add support for application address environments using the Cortex-A MMU. Implement standardized platform-specific interfaces of NuttX address environment support.
  • Cache Operations: Implement standardized, platform-specific cache operations. These are called from the ELF loader in order to flush D-cache and invalidate I-cache after an ELF module has been loaded into memory. With this change, ELF modules work correctly on the SAMA5/Cortex-A platform.
  • Kernel Build: (1) Add implementations of system call gate. (2) Add CRT0 start-up file that can be linked with separately built user programs. (3) Add support for delivery of use-mode signals in the kernel build. (4) Add logic to initialize the per-process user heap when each user process is started. (5) ARMv7-A exception handling needs to work a little differently if we support user mode processes. This is because R13 and R14 are paged differently between user and SVC mode.
  • Shared Memory Support: (1) Add logic necessary to handle remapping of shared memory on context switches. (2) Extend virtual/physical address conversions to include addresses in shared memory. (3) Add implementation of platform-specific shared memory support.
  • Atmel SAMA5D Drivers:
  • Network Ioctls: Implement all network ioctls, including the new ioctl to setup PHY event notifications.
  • Address Conversions: In kernel build with address environment, need logic to map user virtual addresses to physical addresses, and vice versa.
  • Atmel SAMA5D Boards:
  • SAMA5D3 Xplained, SAMA5D3-EK, and SAMA5D4-EK: Convert existing board specific PHY interrupt interfaces to use newly defined standard interface.
  • SAMA5D4-EK: Add a configuration for testing the kernel build configuration. There are configurations to boot either from an SD card or from and in-memory ROMFS file system.
  • SAMA5D4-EK: Add documentation/support for Rev E. board.
  • STMicro STM32 Drivers:
  • Ethernet: Modified to support the change to the network ioctl signature changes. Also add support for new ioctl to setup PHY event notifications.
  • STMicro STM32 Boards:
  • STM32F4Discovery with STM32F4DIS-BB: Add a network enabled NSH configuration for the STM32F4Discovery board with the STM32F4DIS-BB base board installed. Includes support for the microSD card slot on the STM32F4DIS-BB base board.
  • TI Tiva Drivers:
  • TI CC3200: Add support for the TI CC3200. From Jim Ewing.
  • TI Tiva Boards:
  • TI CC3200 Launchpad: Add support for the TI CC3200 Launchpad. From Jim Ewing.
  • C Library:
  • poll(): Re-implemented poll() delay using sem_timedwait().
  • Configuration/Build System:
  • Export Target: In the kernel or protected builds, (1) only the user libraries should be exported, (2) do not copy internal header files or build scripts if this is a kernel or protected build, and (3) needs to bundle up the user C startup file (crt0), not the kernel head object for the kernel and protected builds.
  • Program CFLAGS: Add logic that will permit us to build user libraries with different CFLAGS than kernel code. This is needed because we need the -fno-common option when building ELF code to prevent SHN_COMMON relocations.
  • Applications:
  • NSH: Extend the NSH network initialization logic. There is now an option that will create a network monitor thread that will monitor the state of the link. When the link goes down, the code will attempt to gracefully put the Ethernet driver in a down state; When the link comes back, the code will attempt to bring the network back up.
  • ELF Example: The ELF test/example has been extended so the individual ELF test programs can link against the SYSCALL library (if it is available) or against the C library to eliminate or minimize the need for symbol tables.
  • NxTerm: Change all occurrences of NxConsole to NxTerm.
  • MTDRWB Example: Add an example to test MTD R/W buffering.
  • OS Test Example: Add a trivial test of sem_timedwait().
  • Application Configuration/Build System:
  • Import Target: (1) Add logic that will allow building applications against a NuttX export package (vs. the nuttx/ source tree). (2) Add .config file to export package. (3) Create apps/import. Create apps/import/Make.defs that does things like define CFLAGS; ELF build requires -fno-common in CFLAGS. Copy some base logic from nuttx/tools/Config.mk to apps/import/Make.defs. (4) Add apps/import/scripts/gnu-elf.ld GCC linker script for ELF import builds.
  • All Makefiles: (1) Add an install target to all makefiles. For the import build, the top-level Makefile now does two passes: (1) builds libapp.a, then (2) installs the programs into apps/bin. (2) Add program installation for CONFIG_BUILD_KERNEL in all Makefiles that build a main(). (3) For kernel build, the object file containing main() cannot go into the library because of name collisions. The object file must be handled as a special case in every Makefile.
  • All Built-In Programs: With kernel build (CONFIG_BUILD_KERNEL), entry point to all tasks is main(), not some xyz_main().
  • NSH: Several commands must be disabled in the kernel build because they depend on interfaces that are not available outside of the kernel: dd, df, losetup, mkfatfs, mkdr, and ps.
  • apps/tools/: (1) Add mkimport.sh to explode an NuttX import package and install in apps/import. (2) Add mkromfsimg.sh script to create a BOOT ROMFS filesystem image.
  • ELF and NxFLAT Examples: Do not build test cases that use task_create() if there is an address environment.
  • Tools:
  • refresh.sh: Add a tool to make refreshing configurations easier when you want to do a lot of them.
  • mksyscall.c: Build syscalls that do not need header files.
  • mkexport.sh: Add .config file to export package.
  • apps/tools: See above for new apps/tools scripts.
  • 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.
  • 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):
  • Core OS:
  • Kernel build fixes: (1) IDLE TCB setup needs to indicate that the IDLE thread is a privileged, kernel thread. (2) Don't build task_create() or task_spawn() interfaces if there is an address environment. (3) posix_spawn() kernel proxy thread should be a kernel thread, not a user task.
  • Several pthread interfaces: Add const storage class to phthread parameters. From Freddie Chopin.
  • sched/clock: Remove vestiges of g_tickbias; need, instead, to apply time bias to g_basetime in order to provide the correct system time.
  • System Calls: (1) Several typos fixed; corrected integration of exevc(), execvl(), posix_spawn(), and posix_spawnp() system calls. (2) If we are configured to use a kernel stack while in SYSCALL handling, then we need to switch back to the user stack to deliver a signal.
  • File Systems/Block Drivers/MTD:
  • procfs: Fix some procf breakage introduced by reorganizing some non-reorganizable data structures. From Ken Pettit.
  • AT45: In at45db_bwrite(), the buffer is not increased when writing more than 1 page. Sourceforge bug #34.
  • Binary Formats:
  • ELF relocations: Some relocation types do not have a named symbol associated with them. The design did not account for that case.
  • ELF Loader: Critical bugfix.. BSS was not being cleared.
  • Memory Management:
  • Granule Allocator: Granule allocator initialization uses wrong allocator to setting aside kernel memory.
  • Privileged Groups: Add a flag to group structure: If the group is created by a kernel thread, then all resources in the group must be privileged.
  • Cryptogrphic Support:
  • crypto/cryptodev.c: Path segments reversed in include file path. Noted by Brennan Ashton.
  • Common Drivers:
  • Common CAN upper-half: In can_txdone, waiters on the semaphore should be informed regardless of the return value of can_xmit. First it returns -EIO if there are no new packets, and second the information of the waiters is about the last transferred packet. From Daniel Lazlo Sitzer.
  • ARM:
  • System Calls: Fix a typo in system call when fetching parameter from the stack: regs[REG_PC]+4 is the address, not regs[REG_PC+4].
  • STMicro STM32 Drivers:
  • STM32 F401 UART: Correct support for USART6 on this chip. From Freddie Chopin.
  • STM32 FLASH fixes: use size_t instead of uint16_t, make interface more generic. From Freddie Chopin.
  • STM32 UART: Fix for UART7 and UART8 on STM32 clock enable from Aton.
  • CAN: At the end of the interrupt handler, the interrupts were being disabled, if all packets have been transferred when the interrupt handler was invoked. This is problematic, because the interrupt handler calls can_txdone() of the upper half which can enqueue new packets to send. Removed the block altogether, because can_txdone() calls can_xmit() which disables interrupts if there are no new packets to send. From Daniel Lazlo Sitzer.
  • CAN: Additional STM32 CAN correction suggested by Max Holtzberg.
  • STMicro ST32 Boards:
  • configs/mikroe-stm32f4: Fix a few compile bugs and minor corrections to the mikroe-stm32f4 configuration source. From Ken Pettit.
  • ARM9/ARMv7-A:
  • System Calls: Fix ARM7/9 and Cortex-A SYSCALLs: For threads in SVC mode, the SVC instructions clobbers R14. This must be taken account in the inline assembly.
  • Task Setup: All tasks, even user mode tasks, must start in supervisor mode until they get past the start-up trampoline.
  • ARMv7-A: Modify up_fullcontextrestore() for CONFIG_BUILD_KERNEL. It changed CPSR while in kernel. That will crash if the new CPSR is user mode while executing in kernel space. Fixed by adding a SYS_context_restore system call. There is an alternative, simpler modification to up_fullcontextrestore() that could have been done: It might have been possible to use the SPSR instead of the CPRSR and then do an exception return from up_fullcontextrestore(). That would be more efficient, but I never tried it.
  • Atmel SAM3/4 Boards:
  • SAM3X/Arduino Due: Fix typo in sam3x_periphclks.h; add SCLK definitions to board.h header file. From Fabien Comte.
  • SAM3 RTT: Only SAM4 family has RTTDIS bit in the MR register. SourceForge bug #33 from Fabien Comte.
  • C Library:
  • sscanf(): NuttX libc tried to guess how many characters to parse, extracted them into a buffer, then ran strtol() on that buffer. That guess was often wrong. A better approach would be to call strtol() directly on the input data, using the endptr return value to determine how many characters to skip after parsing. From Kosma Moczek.
  • Math Library: Corrected atan2 implementations from Denis Arnst.
  • Floating Point Output: Change to lib_dtoa() to fix precision error from trailing zeroes. From Bob Doiron.
  • Applications:
  • Fix NSH PS command: If there are no arguments, it could print garbage for argument list.
  • Configuration/Build System:
  • Null Example: Need to include config.h it order know if this is or is not a kernel build. This problem still exists in several other file that may need to define main().

New in version 6.33 (February 1st, 2014)

  • Post Release Patches:
  • backout-cygpath.patch - Backs out a change that slows down builds on Cygwin using a Wndows native toolchain.
  • If you are interested in the tiny VI editor, you may want to consider using the version from the GIT repository. Several important bugs were fixed right after the release of NuttX-6.33.
  • Additional new features and extended functionality:
  • Core OS Interfaces:
  • nanosleep() added. sleep() and usleep() are no longer core OS interfaces. These have been moved into the library and re-implemented as simple wrappers around nanosleep().
  • File Systems:
  • procfs restructured by Ken Pettit. Added files for MTD status.
  • procfs extended to show uptime and task group status.
  • procfs now shows stack information.
  • Networking:
  • Add support for the SO_LINGER socket option. Extended from logic provided by Jason Jiang. Enabled with CONFIG_NET_SOLINGER.
  • TCP write buffering support added. From Jason Jiang.
  • Changes from Max Holtzberg to improve how network status is reported. New controls to manage carrier detect.
  • Graphics:
  • Massive reshuffling of files with little or no logic changes. This reshuffling was necessary to build graphics applications with the kernel builds where the graphics application lie in user space and the core graphic server likes in kernel space. Moved much logic out of nuttx/graphics to a new user library, libnx.
  • Cortex-A5/A8/A9:
  • Existing Cortex-A5 support updated to include Cortex-A8/9.
  • Add the syscall.h header file needed for the Cortex-A architecture.
  • Start-up logic now supports execution from FLASH with .data and .bss in SDRAM. This was not possible prior to this because .bss and .data were initialized before SDRAM was configured.
  • Allwinner A10:
  • Basic support for the Allwinner A10 (Cortex-A8) is in place.
  • Allwinner A10 boards:
  • Support for the pcDuino v1 board has been added. This support is not yet very mature and still lacks many drivers. It is a good starting point, however, if anyone wants to develop A10 support.
  • Atmel SAMA5D3X:
  • Start-up logic now supports execution from FLASH with .data and .bss in SDRAM. This was not possible prior to this because .bss and .data were initialized before SDRAM was configured.
  • Atmel SAMA5D3X Boards:
  • Partial logic in place to support the OV2640 camera. Still needs quite a bit of additional logic to be useful.
  • ARMv7-M:
  • Add support for high priority, nested interrupts. This change effects not only core ARMv-7M logic, but all ARMv7-M MCU logic: LM3S, LM4F, LPC17xx, LPC43xx, SAM3, SAM4, and STM32. See http://www.nuttx.org/doku.php?id=wiki:nxinternal:highperfints
  • STMicro STM32:
  • Add clocking support for STM32F107 USB OTG FS (which does not yet work)
  • Single-wire UART support for the F1 series from Thomas Grubler.
  • STMicro STM32 Boards:
  • The Viewtool board can now be configured to support either the STM32F103VCT6 or the STM32F107VCT6.
  • The Viewtool STM32F107VCT6 now supports networking with the DP83848C module installed.
  • Add support for Viewtool SSD1289-based LCD on the Viewtool STM32F103VCT6 board (untested)
  • Add support for the XPT2046 touchscreen controller on the Viewtool LCD module connected to the Viewtool STM32F103 board.
  • Added kernel mode build support for the STM3240G-EVAL board. Added a new kernel mode NxWM build configuration
  • C++ static constructor logic from the nuttx/configs/stm3240g-eval/ directory to the apps/platform/stm3240g-eval/up_cxxinitialize.c where is belongs so that it is available in user-space in the kernel mode build.
  • Add native Windows build support for the Olimex STM32 P107. From Max Holtzberg
  • Support for the STM32VL-Discovery board. Contributed by Alan Carvalho de Assis
  • Added a configuration for testing simple configurations on the PX4FMU v2.
  • ZiLOG ZNEO Boards:
  • Add an NSH configuration for the Z16F2800100ZCOG ZNEO board.
  • Added support for the Toyaga 16Z ZNEO board. The 16Z board is based on the ZiLOG ZNEOZ16F2811AL20EG part. See https://github.com/toyaga/16z for further information
  • Developed a patch to work around a compiler error that is revealed when building the NSH configuration.
  • Architecture-Independent Drivers:
  • OV2640 Camera Driver.
  • Support for the Sharp Memory LCD from Librae.
  • Library:
  • Pattern matching logic extended to handle set of characters and ranges of character values. From Ken Pettit.
  • sleep() and usleep() moved into the C library. These are not longer core OS interfaces; they are simple wrappers for the nanosleep().
  • Add an implementation of gets_s().
  • Extend fopen() to include support for C11 exclusive open ("x") open mode.
  • Add an implementation of stpcpy()
  • strtol(), strtoll(), strtoul(), strtoull(), and strtod() from libc/string to libc/stdlib where they belong.
  • Header Files:
  • Add rsize_t to include/sys/types.h
  • Add the C11 thread.h header file
  • Configuration/Build System:
  • Top level Makefile now supports qconfig and/or gconfig targets that may be used for configuration. These may be used if you build kconfig-frontends with support for kconfig-qconf and/or kconfig-gconf.
  • Add CONFIG_DEBUG_NOOPT. Now you can independently enable/disable debug symbols and optimization
  • File system related header files moved to include/nuttx/fs
  • Video related header files moved to include/nuttx/video
  • Changes for native Windows build: fix creation of a .version file if one does not exist. Make sure that the APPDIR environment variable is set before configuring. From Max Holtzberg.
  • Board configuration sub-directory can now be specified. The default need not be used. This is only useful when CONFIG_ARCH_BOARD_CUSTOM is selected and there is no meaningful default sub-directory.
  • Many functions renamed to better conform with the naming standard: up_buttoninit() renamed to board_button_initialize(), up_buttons() renamed to board_buttons(), up_irqbutton() renamed to board_button_irq(), up_ledinit() renamed to board_led_intialize(), up_ledon() renamed to board_led_on(), and up_ledoff() renamed to board_led_off(). All prototypes removed from board.h header files. Now ONLY prototypes in include/nuttx/arch.h.
  • Applications:
  • NSH: Refactor. Separate NSH command handling and command execution from NSH line parsing.
  • NSH: Will now support multiple commands on a command line, each separated with a semi-colon.
  • NSH: Add support of commands enclosed in back quotes as command arguments.
  • NSH: Can now handle arguments that are concatenations of constant strings, command return data, application return data, and environment variables.
  • NSH: Add true and false commands.
  • NSH: Add support for while-do-done and until-do-done loops. These only work when executing a script file because they depend on the ability to seek in the file to implement the looping behaviors. Can be conditionally compiled out to reduce footprint.
  • NSH: Loosen up if-then-else-fi syntax to allow a command to be on the same line as the then or else tokens like: "if true; then echo true; else echo false; fi". More like bash.
  • NSH: Add a break command that can be executed with a loop to terminate the loop immediately.
  • system/inifile: A simple .INI file parser.
  • system/vi: Add support for a tiny, VI work-alike editor. This is a minimal full screen editor that works with a terminal emulator that using VT100 commands.
  • Efforts In Progress. The following are features that are partially implemented but present in this release.
  • kconfig-fronted Configuration:
  • Conversion of old configurations to use the kconfig-frontends tool is an ongoing effort that will continue for some time. At this time, only 53% of the configurations have been converted to use the kconfig-frontends tools.
  • Bugfixes (see the change log for details). Some of these are very important:
  • Core OS:
  • Added missing sem_timedwait() system call.
  • Networking:
  • Prevent tcp_connect callback from being double freed. From Max Holtzberg
  • uiplib: Support new definitions and state passing for network device status. From Maz Holtzberg.
  • File Systems:
  • FAT: (1) A correction to FAT cluster allocation, and (2) Fix to some root directory logic that was conditionally done only for FAT 32. Apparently this needs to done for all FAT types. Both from Andrew "Tridge" Tridgell via Lorenz Meier.
  • Binary Formats:
  • Fix a small memory leak when attempting to load a program from a file.
  • Cortex-A8/9:
  • Fix some errors in the cache invalidation logic (only seem to matter for Cortex-A8).
  • Add more nop's after enabling the MMU. The cortex-a8 seems to need these
  • Graphics:
  • Fix a typo that caused a compilation error when CONFIG_NXCONSOLE_BPP < 8. From Librae
  • ARMv7-M:
  • Correct alignment of RAM vector table.
  • Interrupt handling: Do not disable and enable the IRQ on each entry, (2) this interferes with controlling the IRQ interrupt setting from interrupt handlers, and (3) up_disable_irq() does not work anyway so that this has never done anything.
  • Fix all implementations of up_disable_irq() for all Cortex-M3 and M4 architectures: To enable an interrupt on the Cortex-M3/4 CPU, you need to set a bit in the ISER register. To disable the interrupt, you need to set a bit in the ICER register. Existing logic was trying to disable interrupts by clearing the bit in the ISER register. That will not work; writing a '0' to the ISER register has no effect. That means that up_disable_irq() was doing nothing! It turns out that that is not really important because up_disable_irq() is not really used for that purpose. But some spurious STM32 ADC interrupts have been reported to me and this turned out to be the cause in that case. Thanks to Manuel Stühn for the tip.
  • STMicro STM32:
  • Fix configuration and pin definitions that would prevent building USB for the connectivity and performance lines.
  • STM32L15xx: Fix a typo in USB pin definitions
  • Fix pin definition names for SPI2 MOSI and MISO. Noted by Brian Webb
  • Various fixes for STM32F103ZE SPI3 pin mapping definitions. From Steve Redler IV
  • STMicro STM32 Boards:
  • Olimex STM32-P107: Failed to build if SPI3 for UEXT is not remapped. From Max Holtzberg
  • x86 Boards:
  • Add a configuration option to select the -m32 compiler option when building for a 32-bit target on a native 64-bit compiler. So far, only used for the qemu/i486 configuration.
  • Patch from Matt Campbell to fix 'Error: .size expression for idle_stack does not evaluate to a constant".
  • Library:
  • strftime(): Needs null termination on the generated string. From Max Holtzberg.
  • Typo in ctype.h macro name: iscntrl(), not iscontrol().
  • If there are no arguments (argc == 1), then getopt() will leave the optind variable in an undefined state (2014-1-20).
  • ARMv7-M memcpy(): Assembler changes with the gcc-47 distribution from ARM mean that we need to be explicit about branch sizes; one or more of the wide branch opcodes results in bad table branching. From Mike Smith.
  • Configuration/Build System:
  • Fixes for some tools/ for Windows build issues from Max Holtzberg.
  • Config.mk: cypath must be called if we are using a Windows native toolchain with the Cygwin make to convert paths to proper Windows paths. From Richard Cochran.
  • ARM Makefile: Dependency directory list is now computed from the VPATH. From Richard Cochran.
  • builtin/Makefile: Fixes for native Windows build from Max Holtzberg.
  • Refactor some configuration dependencies: NSH networking features should depend on netutil selections; netutil selections, in turn, should depend on networking selections.
  • Applications:
  • NSH: Modified the df -h logic to eliminate truncating numbers in conversion (like 7900 -> 7M). From Ken Pettit.

New in version 6.32 (December 7th, 2013)

  • General:
  • Extension and standardization of stack debug logic. Now includes coloration of the IDLE and interrupt stacks as well as the heap. Suggested by David Sidrane.
  • Audio Subsystem and Audio Drivers:
  • I2S interface definition. Integrates with audio sub-system.
  • VS1053 worker thread stack size is now configurable and assigned a name via pthread_setname_np(). From Ken Pettit.
  • Networking / Network Drivers:
  • Updates and adaptations to support for TI CC3000 wireless module from David Sidrane. These updates include multi-threading support and interface and header file changes to integrate more seamlessly with NuttX applications.
  • File Systems:
  • procfs: Add support for a tiny procfs/ file system. The initial offering is little more that a proof of concept but may be developed further in subsequent releases.
  • NXFFS: An initial attempt was made to integrate NXFFS with the NAND MTD driver. Changes were made to handle bad blocks. However, I later realized that NXFFS cannot handle NAND because the way that it re-writes blocks is incompatible with the NAND ECC handling. These changes were backed-out so as not to introduce turmoil, but can be re-enabled if needed via configuration option.
  • NXFFS: Make the start up scan of the media a configuration option. It just takes to long and is not really necessary! Those rare cases where the scan was helpful can be fixed using flash_eraseall().
  • General Drivers:
  • I2S: A simple character driver was added to support I2S accesses. This driver in its current state is intended only to support I2S testing and would not be appropriate to used for any real driver application.
  • MTD Drivers:
  • Add a container for an MTD device that can be used to provide a simple, lightweight interface to configuration data storage that resides on some storage media that is wrapped as an MTD device. From Ken Pettit.
  • New interface definition for lower half NAND drivers.
  • MTD Nand: Add MTD NAND driver that will support ONFI devices, non-ONFI devices (via table lookup), bad block checking, software ECC (Hamming), and will interact with the lower-half, hardware-specific, NAND driver. Based on BSD-compatible Atmel sample code.
  • MTD geometry structure is now packed so that it can support larger erase block sizes needed by NAND without increasing the size of the geometry structure.
  • SST25: Add another SST25 SerialFlash driver, sst25xx.c. This one differs from sst25.c in that it supports larger SST25 parts: In the larger parts support page write instead of byte/word writes like the smaller parts. From Ken Pettit.
  • USB Drivers:
  • STM32 F1 USB Device: Add support for decoded USB trace strings. From David Sidrane.
  • ARM:
  • Add more ARM9 cache management functions to flush and invalidate D-Cache for DMA support.
  • Atmel AT91 SAMA5D3x Drivers:
  • Many new drivers including CAN, PWM, and SSC/I2S
  • PCK: Add support for programmable clock outputs.
  • NAND: Driver with hardware ECC and DMA support
  • Atmel AT91 SAMA5D3x Boards:
  • SAMA5D3x-EK: Add support for the apps/examples/i2schar test.
  • SAMA5D3x-EK: Provides board-specific memory controller initialization for NAND flash.
  • SAMA5D3x-EK: Add support for "auto-mounting" NAND MTD block driver or NXFFS file system.
  • Atmel AT91 SAM3/4 Boards:
  • Basic support for the Atmel SAM4E family. From Mitko.
  • STMicro STM32:
  • Added support for the STM32F429. From Ken Pettit.
  • Added support for GPIOK and GPIOJ. From Ken Pettit.
  • STMicro STM32 Drivers:
  • STM32 F4 OTG FS/HS Device: OTG FS device and host drivers extended so that they can support either the OTG FS peripheral or the OTG HS peripheral (in FS mode). This was done as a quick way to get USB support on the STM32F429 which has only OTG HS. From Ken Pettit.
  • Added header files and driver framework for the STM32F429 LTDC framebuffer driver. From Ken Pettit.
  • STMicro STM32 Boards:
  • Support for the Spark board was completely by Davide Sidrane. The Spark configuration includes integrated CC3000 wireless support, FAT file system on the SerialFlash and a composite device that can be used both to export the FAT file system and to provide a serial interface.
  • The Mikroe-stm32f4 now uses /dev/config for configuration data storage. From Ken Pettit.
  • Added support for the STM32F429I-Discovery board from Ken Pettit.
  • Added board support for the ViewTool STM32F103/F107 board with the STM32F107VCT6 installed.
  • NXP LPC31xx Drivers:
  • USB ECHI HCD: Add a driver for the LPC31xx's low-/full-/high-speed variant of the EHCI host controller.
  • NXP LPC31xx Boards:
  • Board-specific USB host support for the Embedded Artists EA3131 board. (Missing PCA9532 controls).
  • Add support for the Olimex LPC-H3131 board. Including USB host support (which does not depend on a PCA9532 interface).
  • Kinetis KL Drivers:
  • PWM driver for the Freescale Kinetis KL family from Alan Carvalho de Assis.
  • Kinetis KL Boards:
  • Freedom-KL25Z: Add PWM support from Alan Carvalho de Assis.
  • TI Stellaris LM3S:
  • Don't initialize .data in start-up logic if not running from FLASH.
  • Applications:
  • apps/platform: A new home for platform-specific application code.
  • Define a common interface that can be used to manage platform-specific configuration data. From Ken Pettit.
  • apps/examples/configdata: A unit test for the MTD configuration data driver from Ken Pettit.
  • Aapps/platform/mikroe-stm32f4: Add platform-specific storage of configuration data for the Mikroe-stm32f4. From Ken Pettit.
  • apps/examples/cc3000: Fine tuning of memory usage from David Sidrane.
  • apps/system/nxplayer: Play thread stack size is now configurable. All NxPlayer threads now have names assigned via pthread_setname_np(). From Ken Pettit.
  • apps/examples/i2schar: The I2S test based on the I2S character driver.
  • apps/examples/hidkbd/hidkbd_main.c: Now calls a function named arch_usbhost_initialize() that must be provided by the platform-specific code.
  • NSH:
  • hexdump: Add skip= and count= options to the hexdump command. From Ken Pettit.
  • Allow USB trace without a USB console. From David Sidrane.
  • mount command updates from Ken Pettit.
  • Add an option to the mkfatfs command to specify FAT12, FAT16, or FAT32.
  • Tools:
  • tools/mkctags.sh: A script for creating ctags from Ken Pettit.
  • Efforts In Progress. The following are features that are partially implemented but present in this release.
  • kconfig-fronted Configuration:
  • Conversion of old configurations to use the kconfig-frontends tool is an ongoing effort that will continue for some time. At this time, only 50% of the configurations have been converted to use the kconfig-frontends tools.
  • Bugfixes (see the change log for details). Some of these are very important:
  • File Systems:
  • FAT: In one error return case, the error return value was not being set, making the failure look like success. From David Sidrane.
  • mount: SMART FS must be included in the conditional compilation for the set of file systems that require block drivers. From Daniel Palmer.
  • SmartFS: Fixed a minor bug with SMART partition number reporting that would only be seen if both partition support and multi-root directory support are enabled at the same time. From Ken Pettit.
  • Deadlock: The inode semaphore must be re-entrant. Here is the re-entrant path that I found: (1) USB host connects to FLASH drive and creates /dev/sda, (2) /dev/sda is mounted, (3) the FLASH drive is removed but /dev/sda is not destroyed because there is still a reference on the device because of the mount, (4) umount() is called, taking the inode semaphore. Now the driver tries to destroy the block driver by calling unregister_blockdriver(). But (5) unregister_blockdriver() also takes the inode semaphore causing a deadlock if the inode semaphore is not re-entrant.
  • FAT: Fix a typo in the FAT16 formatting logic. Was this ever able to format a FAT16 volume before?
  • MTD Drivers:
  • MTD Partitions: Fix erase block vs page block confusion. From Ken Pettit
  • SST25 Serial Flash: Improved write performance by fixing a bug that prevented operation in the faster write mode. From David Sidrane.
  • USB Drivers:
  • USB MSC Device: pthread_join() does not work if called from a different task group than the pthread. This is correct behavior, but still a problem for USB MSC. The correct solution would be configure the USB MSC thread to a task. However, this workaround from David Sidrane plugs the hole for now.
  • USB CDC/ACM, USB MSC, and Composite Device Classes: Un-initialization logic caused re-use of a stale pointer. Changed to a two pass un-initialization for the case of the composite driver: Memory resources are not freed until the second un-initialization pass. From David Sidrane.
  • STMicro STM32 Drivers:
  • STM32 F1 USB Device: Fix some errors that cause crashes when the USB was disconnected. From David Sidrane.
  • STM32 F1 USB Device: Correct EP0 state handling logic when buffers larger than the EP0 packet size are sent. From David Sidrane.
  • STM32 F1 USB Device: The long outstanding bug involving the handling of OUT SETUP commands has been fixed in the STM32 F1 USB device driver by David Sidrane.
  • Kconfig: Add missing setup of CAN TSEG1 and TSEG2 values. From Martin Lederhilger.
  • Tools:
  • tools/mkconfig.c: SMART FS must be included in the conditional compilation for the set of writable file systems. Noted by Daniel Palmer.
  • Applications:
  • apps/platform/Makefile: Was not dealing with the bin/ sub-directory correctly.
  • `apps/system/composite/composite_main.c: The wrong handle was getting nullified. From David Sidrane.

New in version 6.31 (October 29th, 2013)

  • General:
  • Standardized stack checking logic so the interfaces can be used by common stack monitoring logic.
  • Audio Subsystem and Audio Drivers:
  • Ken Pettit has finally released his long awaited audio subsystem. This is a generic audio subsystem that is appropriate for the deeply embedded MCU. Current testing has, however, been focused on the VS1053 CODEC chip.
  • Ken Pettit's VS1053 audio CODEC driver is now functional.
  • Networking / Network Drivers:
  • Add the prefix ETH0 to all PHY configuration selections. This will allow us to support to Ethernet MAC drivers with two different PHYs (identified with ETH0 and ETH1). Enabled with CONFIG_NETDEV_MULTINIC.
  • Add MII/RMII PHY definitions for the Micrel KSZ8051 PHY.
  • Add GMII/GRMII PHY definitions for the Micrel KSZ9021/31 PHY.
  • New network-optimized, higher-performance sendfile() implementation from Max Holtzberg.
  • Added a simple routing table. This table is currenly only used (1) when we need to look-up an Ethernet device based on an IP address, and (2) in the ARP logic when we need to request the MAC address of the router, vs the MAC address of the peer.
  • Make net_close() nonblocking and free unestablished connections if no free connections available. From Max Holtzberg.
  • Changed the meaning of the uip_\*input functions. They now return success when a packet is dropped; This is needed for the ENCX24J600 driver that must make a decision to return the packet or not: It should not retry dropped packets. From Max Holtzberg.
  • David Sidrane has completed integration of the CC3000 networking. This is much more than a network driver: It is a complete replacement for the NuttX networking with off-chip networking support in the CC3000.
  • Numerous enhancements to the ENCX24J600 driver from Max Holtzberg.
  • Other Common Drivers:
  • The SST25 serial FLASH MTD driver now includes support for the SST25VF016B. From David Sidrane.
  • Add a preflight method to the SDIO interface to support the STM32 DMA usage model. From Mike Smith.
  • Enhanced the MMC/SD SDIO driver to perform DMA preflight operations and fail DMA read/write requests that fail preflighting. From Mike Smith.
  • Add an ioctl command that can be used to trigger ADC/DAC conversion under application control.
  • File Systems:
  • Enhanced the FAT32 filesystem code to understand DMA preflight failures, and to use the file sector buffer as a bounce buffer when a user-supplied buffer is not suitable for DMA. From Mike Smith.
  • Atmel AT91 SAMA5D3x:
  • Add support so that subsets of the total DRAM (and other external memory) can be added to the heap, leaving other memory reserved for other purposes (like the LCDC framebuffers).
  • Atmel AT91 SAMA5D3x Drivers:
  • Use more descriptive task names when starting the EHCI and OHCI monitor tasks.
  • Added a 10/100Base-T Ethernet (EMAC) driver.
  • Added a 1000Base-T Ethernet (GMAC) driver.
  • Added a Real Time Clock (RTC) driver and integrated with the NuttX system time logic.
  • Added support for /dev/random using the SAMA5D3x True Random Number Generator (TRNG).
  • Added a Watchdog Timer (WDT) driver.
  • Added a Timer/Counter (TC) library with interface that make be used by other drivers that need timer support.
  • Added an ADC driver that can collect multiple samples using the sequencer, can be trigger by a timer/counter, and supports DMA data transfers.
  • Added a touchscreen driver based on the special features of the SAMA5D3 ADC peripheral.
  • Added an LCD controller (LCDC) frame buffer driver.
  • Added a CAN driver. However, testing has been delayed because of cabling issues.
  • Basic header file support is available for the Image Sensor Interface (ISI) camera interface. Work on the camera driver is underway and is expected in the next release.
  • Atmel AT91 SAMA5D3x-EK Development Boards:
  • Add OS test support for the FPU test.
  • Enable the task name feature board configuration sto provide prettier ps command output.
  • Added NX and NxWM configurations to verify the LCD and touchscreen. There are still some outstanding issues with the NxWM configuration as of this release.
  • The TRNG and /dev/random are now enabled by default in the demo configuration.
  • Atmel AT91 SAM3/4 Boards:
  • Add configuration to select revision 3 of the Arduino Due which has some small but important differences. Suggested by gdi AT embedders.org.
  • STMicro STM32:
  • Add support for the STM32F207ZE chip. From Martin Lederhilger.
  • STMicro STM32 Boards:
  • Add configuration for the Spark Core. The initial check-in is basically the Maple Mini board and subsequent development by David Sidrane is his special Spark emulation hardware. The configuration should be very mature when actual Spark hardware is available.
  • Support for the Olimex STM32 P207 board added by Martin Lederhilger.
  • Configuration for the Mikroe STM32F4 board configuration updated for audio support by Ken Pettit.
  • NXP LPC17xx Boards:
  • zkit-arm-1769: LED1 is now user controllable after booting. From Rashid Fatah.
  • Kinetis KL Drivers:
  • PIT and TPM register definitions header files for the from Alan Carvalho de Assis.
  • Added low-level getc() function for operation with no file system. The KL25Z can now support NSH in a very minimal system that does not even have a file system.
  • Kinetis KL Boards:
  • A new configuration called minnsh was added is an experiement to see how small we can get the NuttX footprint and still support NSH. From Alan Carvalho de Assis..
  • TI Calypso Phones:
  • Basic board support for the Motorola C139 (Compal E86) phone. From Craig Comstock.
  • Applications:
  • Moved several useful examples from apps/examples to apps/system. This includes USB MSC, USB CDC/ACM, and USB Composite.
  • New addroute and delroute commands added to NSH in order to manage the network routing table.
  • Numerous enhancements and updates to the CC3000 example from David Sidrane.
  • Add a new stack monitor daemon that can be used to constantly monitor stack usage by all threads.
  • Numerous changes to get NSH working with no file system. Basically this suppresses I/O redirection and replaces file I/O with calls to low-level console read/write functions. Suggested by Alan Carvalho de Assis.
  • apps/system/nxplayer: A new, command-line media player called 'nxplayer' from Ken Pettit.
  • apps/examples/random: Add a simple test that dumps values from /dev/random.
  • apps/examples/adc: Add support so that a ADC driven by software triggering can be tested.
  • Build System:
  • The MKDEP tools now support a new argument that identifies the object file path.
  • Efforts In Progress. The following are features that are partially implemented but present in this release.
  • kconfig-fronted Configuration:
  • Conversion of old configurations to use the kconfig-frontends tool is an ongoing effort that will continue for some time. At this time, only 48% of the configurations have been converted to use the kconfig-frontends tools.
  • Bugfixes (see the change log for details). Some of these are very important:
  • Initialzation and Scheduling:
  • IDLE thread initialization logic should not call group_setupidlefiles() if there are no file descriptors (and, hence, no file system).
  • Fix some cornercase error handling logic: If sched_releasetcb() is called as part of a failed pthread startup before the flags field in the TCB has been initialized, then a crash occurs. Pointed out by David Sidrane.
  • Networking / Network Drivers:
  • Look up of a device using subnet will fail if the packet is being sent out of our subnet (via a router). The fallback here is just to use the only device (eth0) if the subnet lookup fails (this logic was extended to handle multiple Ethernet devices by adding a simple routing table).
  • Fix some backward conditional logic in send() that enabled the check if the ARP address is in the ARP table. From Max Holtzberg.
  • Notify the socket layer from the network monitor if a connection is lost before the monitoring callback has been registered. From Max Holtzberg.
  • send(): Reset the send timeout when the data is ACKed, not when the data is sent. Remove conditions on checking for timeout. From Max Holtzberg.
  • Correct how the TCP/IP initial minimum MSS is calculated. Max Holtzberg.
  • TCP state machine: Move tcp connection into SYN_RCVD state after aception instead of bypassing and moving directly into ESTABLISHED. From Max Holtzberg.
  • Numerous fixes to the ENCX24J600 driver from Max Holtzberg.
  • USB Drivers:
  • Change naming of SELFPOWERED and REMOTEWAKEUP to avoid name collisions. Prepend the name of the driver (for example CDCACM_SELFPOWERED).
  • CDC/ACM class driver: Change the interval for the interrupt endpoint from 0xff (invalid) to 10. This is not a critical change but will avoid a complaint from the Linux driver when it overrides the 0xff value.
  • ARM Cortex-A5:
  • Fix an error in data cache clean and invalidate functions: Fix of addresses to cache line boundaries.
  • Atmel AT91 SAMA5D3x Drivers:
  • Correct some inconsistencies in the way that USB configuration settings are used. This caused compilation errors in SAMA5 OHCI when USB debug was ON but USB host tracing was off.
  • When 480MHz UPLL is used to drive OHCI, it should have a divider of 10. However, that does not work. A divider of 5 does. Why?.
  • OHCI HCD: Fix a place where DMA-related data needed to be flushed to data cache; Fix another where a virtual address was being used in a register where a physical address was required.
  • HSMCI Driver: TX DMA disabled. It is just not reliable. No idea why. RX DMA is still used.
  • STM32F103C pinmapping corrections from David Sidrane.
  • Atmel SAMA5D3x-EK Board:
  • Increase the number of pre-allocated watchdog timers. The default number of 4 was easily being exhausted in the more complex configurations.
  • STMicro STM32:
  • STM32 F4 DMA definitions: Typo fixes for UART7 and UART8 DMA configs. From Mike Smith.
  • DMA priority configuration corrections from Mike Smith.
  • Changes to the stm32_dmacapable() API. In order to correctly verify that a buffer can be transferred, the transfer count and the CCR value are required. Implemented stm32_dmacapable for STM32F1xx devices. Enhanced stm32_dmacapable() for STM32F2xx and STM32F4xx devices to check for additional conditions that will cause DMA to fail or lose data.
  • STM32 F1 DMA fix from David Sidrane: The DMA_CNDTRx register cannot be modified if the DMA channel is disabled.
  • STMicro STM32 Drivers:
  • Fix compilation errors from bad bit definitions in ADC and PWM register. From Martin Lederhilger.
  • DMA-related fixes to the SPI driver from Ken Pettit.
  • NXP LPC17xx Drivers:
  • Remove undefined spi_select() prototype. This was causing compile time warnings.
  • NXP LPC17xx Boards:
  • zkit-arm-1768: MMC/SD is on SPI, not SSP0. From Rashid Fatah.
  • C Library:
  • scanf() fixes from kfrolov: 1) sscanf() function hangs in the following example: sscanf("2", "%u,%u,%u,%u", ...), 2) sscanf() returns incorrect number of parsed numbers if some arguments can't be parsed: sscanf("=2", "%u,%u,%u,%u",...) == 1 instead of 0, and 3) using of char* instead of const char* in vsscanf function leads to warnings from GCC.
  • Build System:
  • Dependency generation generation was broken for directories that keep objects in a sub-directory. The MKDEP tools now support a new argument that identifies the object file path.
  • tools/define.sh: cut no longer works as it once did. Script adapted to observed behavior.
  • Applications:
  • Remove a warning from the NSH library when DHCP is not enabled.
  • Default NSH IP address should be 0x0a000001 (10.0.0.1), not 0xa0000001 (160.0.0.1). Ditto for the gateway.
  • Add some missing options to the OS test Kconfig file
  • Fix some bad conditional compilation in the USB monitor.
  • Fix default I2C frequency used by the I2C tool: 400KHz instead of 4MHz. Suggested by Max Kriegleder.
  • Increase stack size for the system/info command. Ken Petit reports that this simple command can exceed its 768 stack size under certain conditions. The size is marginal and has been increased to 1024 by default but is also now configurable.
  • apps/Makefile: Needs to include external/Make.defs if we want allow external applications to participate in the NuttX configuration. Suggested by gdi AT embedders.org.
  • apps/netutils/telnetd: Missing argument to debug statement can cause crashes in certain error conditions. From David Sidrane.
  • apps/examples/can: Correct an error in a debug statement. From Martin Lederhilger.

New in version 6.30 (September 17th, 2013)

  • Post Release Patches:
  • back-out-romfs-change.patch: Backs out part of a ROMFS change introduced just before release. Without this change, there will be ROMFS compilation errors.
  • Additional new features and extended functionality:
  • Common Drivers:
  • Extended TERMIOS support for serial and CDC/ACM drivers. From Mike Smith, Andrew Tridgell and Lorenz Meier.
  • Added option to disable serial port reordering. From Lorenz Meier.
  • Several changes to the USB host control interface and extensions to common USB host logic to handle host controllers with multiple downstream ports in the root hub.
  • USB device tracing: Extended decoding and stringifying of USB trace output to include trace output from class drivers.
  • USB host tracing: Added support for USB host tracing similar in some ways to USB device tracing: Stringification is an inherent part of the trace decoding (not an option). Only available in the SAMA5 USB host drivers now.
  • Networking / Network Drivers:
  • Support for the Microchip ENCX24J600 Ethernet driver from Max Holtzberg
  • CC3000 Networking. Initial support for the TI CC3000 network module on the Freescale Freedom-KL25Z board from Alan Carvalho de Assis. This is still a work in progress.
  • ARMv7-A, Cortex-A5:
  • Restructured some MMU-related logic and header files.
  • Hooks added for Cortex-A8, but not yet used.
  • STM32 Drivers:
  • STM32 SPI: nbits() interface extended to control bit order as well as bit width (from Teemu Pirinen)
  • STM32 Boards:
  • Olimex STM32-P107: Incorporate ENCX24J600 networking for the Olimex STM32 P107 board.
  • LeafLabs Maple Board: Add board support for the LeafLabs Maple and Maple Mini boards. From Librae.
  • Atmel AT91 SAMA5D3x:
  • Added support for the SAMA5 DMAC controllers.
  • DMA-capable drivers for the SAMA5 SPI peripherals.
  • DMA-capable HSCMCI 0/1/2 drivers.
  • Support for PIO interrupts
  • Utilities for intelligent conversions between physical and virtual addresses.
  • Added USB host controller drivers for both the OHCI (low- and full-speed) peripheral and the ECHI (high-speed) peripheral.
  • Added USB device controller for the SAMA5 UDPHS peripheral (full- and high-speed).
  • Added a Two Wire (TWI) driver. This is a variant of I2C.
  • Atmel AT91 SAMA5D3x-EK Development Boards:
  • Now supports onboard SDRAM. Modified heap initialization logic to include SDRAM if configured.
  • Integrated a FAT file system on the on-board SPI-based AT25 serial FLASH.
  • Integrated HSMCI0 and HSMCI1 support for the microSD and full file SD card slots. Includes PIO interrupts for card detection events.
  • Integrated USB OHCI and ECHI host and high-speed peripheral support. File system on AT25 now exported via Mass Storage Class. Includes PIO VBUS controls.
  • Integrated the TWI driver and the I2C tool. Added support for an external AT24 serial EEPROM.
  • Applications:
  • apps/examples/cc3000: Initial support for the TI CC3000 network module on the Freescale Freedom-KL25Z board from Alan Carvalho de Assis. Includes the test to verify the CC3000.
  • apps/examples/usbmsc: apps/examples/usbstorage renamed usbmsc for consistency. Change submitted by CCTSAO.
  • apps/system/usbmonitor: The USB monitor has been extended so that it can be used with USB device or host trace data.
  • Efforts In Progress. The following are features that are partially implemented but present in this release.
  • CC3000 Networking:
  • CC3000 Networking. Initial support for the TI CC3000 network module on the Freescale Freedom-KL25Z board from Alan Carvalho de Assis. This is still a work in progress.
  • kconfig-fronted Configuration:
  • Conversion of old configurations to use the kconfig-frontends tool is an ongoing effort that will continue for some time. At this time, only 46% of the configurations have been converted to use the kconfig-frontends tools.
  • Bugfixes (see the change log for details). Some of these are very important:
  • File Systems:
  • ROMFS: Fix an error where long (>15) file names were read incorrectly from a ROMFS file system. From Mike Smith
  • NXFFS: Clean up some compiler warnings.
  • Common Drivers:
  • MMC/SD driver: Correction for a bad return value when multiple block SDIO transfers are suppressed. By Andrew Tridgell.
  • USB HID keyboard and mass storage host-side class drivers: Fix some compilation errors and warnings when pre-allocated data structures are used.
  • USB device-side class drivers: Fix some compilations errors when DUALSPEED (i.e., full- and high-sped) support is enabled.
  • CDC/ACM and PL2303: Don't use max packetsize assigned to the endpoint when allocating request buffers; the default value of the endpoint max packetsize may be incorrect because the endpoint has not yet been configured. Really only an issue for dual-speed endpoints.
  • USB Host Mast Storage Class: Fixed a problem that was causing some devices to fail to initialize: If device is returning fatal transfer errors while attempting to initialize, don't bother with the startup retries; abort immediately so that the device will be reset and we can try again with a better ready device.
  • USB Host Mast Storage Class: Correct a reference counting error: When an MSC device transfer fails while waiting for UnitTestReady, the reference count on the class was not being decremented. The end result is a memory leak as can be seen by the USB device numbers incrementing: sda, sdb, sdc, ...
  • USB Device CDC/ACM: Fix backward conditional compilation in the CDC/ACM driver with regard to remote wakeup and self-powered capabilities. From the PX4 team via Lorenz Meier,
  • Networking / Network Drivers:
  • ARP IP harvesting: Correct backward condition in netmask task. From Max Holtzberg.
  • Network connection monitor: Fixes a race condition where a loss of connection may not be detected when the connection is lost before it has been accepted (from Max Holtzberg).
  • TCP/IP Backlog: Fix a critical bug in the TCP/IP backlog initialization: Only the first backlog buffer was getting added to the free list. From Max Holtzberg.
  • ENC28J60: Fixes and improvements back-ported from the ENCX24J600 to the ENC28J60 by Max Holtzberg.
  • STM32 Drivers:
  • STM32 I2C fixes for the STM32 F3 family from John Wharington.
  • STM32 I2C Correct an error that crept into the STM32 F1 I2C driver with some recent changes. From Librae
  • STM32 F4: Added some missing CONFIG_SERIAL_TERMIOS support; Fixed some STM32 F4 Timer 8 pin configurations. From CCTSAO.
  • STM32 SDIO: If CONFIG_SDIO_BLOCKSETUP defined, OS would crash. Now Generate an error if CONFIG_SDIO_BLOCKSETUP is defined; that option is not yet supported by the STM32 SDIO driver. From CCTSAO
  • STM32 I2C Timers: Some CCER bit settings changed. Submitted by CCCTSAO.
  • STM32 CAN: Fix access to CAN filter registers. From the PX4 team via Lorenz Meier.
  • STM32 Kconfig: Fix STM32 UART7/8 Kconfig names and UART DMA. From the PX4 team via Lorenz Meier.
  • LPC17xx Drivers:
  • Fix #endif with missing #if in USB host header file. Reported by Andrew Bradford,
  • SAM3/4 Boards:
  • Corrected DMA-related problems: Bad register definitions, parameters reversed in a function call.
  • Correct a race condition in the HSMCI driver when an interrupt occurs before the wait for the interrupt begins.
  • Peripheral clock setup: Correct a typo in a register name.
  • Atmel AT91 SAMA5D3:
  • Order of some operations changed in boot-up logic to defer enabling of caching of memory regions until SDRAM is initialized.
  • Correct handling of spurious interrupts.
  • Freescale KL25Z Drivers:
  • KL25Z SPI: Correct typo in name of a function. From Alan Carvalho de Assis.
  • Applications:
  • apps/examples/composite: Fix a typo that can cause a configuration error. From CCTSAO.
  • apps/examples/pwm: Clean-up some configuration confusion.
  • apps/netutils/dhcpd/dhcpd.c: Fixed calculation of the next lease address. From Paolo Messina.
  • apps/examples/usbmsc: Don't try to control USB trace if we are an NSH built-in task. In that case our attempts are inadequate and only interfere with with other logic that is attempting to to do the same thing (in NSH or in the USB monitor).
  • apps/examples/usbmsc: IMPORTANT bug fix: Change how the msconn works. Because of recent changes the msconn command was hanging. This was because the USB MSC start-up logic creates a pthread; Now waitpid() will wait until all members of the task group exit. So NSH was hanging in waitpid when msconn started even though msconn returned. The USB MSC logic really should not use a pthread, but we are stuck with that for now. The work-around is the msconn now daemonizes itself so that it so that the pthread is created in a different task group.
  • apps/nshlib: Fix NSH listing output for the case of a single file. From the PX4 team; provided by Lorenz Meier.

New in version 6.29 (August 1st, 2013)

  • New board support: Atmel SAMAD5D3x-EK and Arduino Due.
  • Extended board support: SAM4L Xplained I/O1, LCD1, and OLED1 modules; SAM4S Xplained on-board 1MB SRAM; SAM3U-EK Touchscreen.
  • Freedom KL25Z SDI and TSI.
  • New applications: Zmodem file transfers.

New in version 6.2 (June 15th, 2013)

  • arch/arm/src/lpc17xx/lpc17_i2c.c: Interrupts were not being re-enabled in the I2C intialization function (2013-4-30).
  • net/sendto.c: Added skeleton of implementation of send timeouts for UDP. However, this functionality really does not make sense, so it is disabled in the code (2013-4-30).
  • drivers/mtd/mtd_partition.c: Support capability to clone one MTD driver into several, MTD partition drivers, each of which can manage a sub-region of the FLASH (2013-4-30).
  • configs/sim/nxffs: Converted to use the kconfig-frontends tools (20130-4-30).
  • configs/sim/mtdpart: A new configuration to test MTD partitions (2013-4-30).
  • configs/sim/mkroe-stm32f4: Support for the MikroElektronika Mikromedia for STM32F4 development board (from Ken Pettit, 2013-4-30).
  • fs/smartfs: Add Ken Pettit SMART FS (2013-4-30).
  • include/nuttx/mtd.h and most MTD drivers: Add support for (optional) method to perform byte oriented writes if so configured (2013-5-1).
  • arch/arm/src/kl/chip/kl25z128_pinmux.h: Corrections fo the pin multiplexing definitions from Alan Carvalho de Assis (2013-5-2).
  • drivers/mtd/mtd_partition.c: Fix a few bugs and add support for the (option) byte write method (2013-5-3).
  • arch/arm/src/kl: Repartitioning of definitions in header files from Alan Carvalho de Assis (2013-5-3).
  • drivers/mtd/smart.c, fs/smart, and other files: SMART file system now makes use of the MTD byte write capabilities when present (from Ken Pettit, 2013-5-3).
  • drivers/mtd/m25px.c: Some rearchitecting to use the byte write capability (when possible) and to use 4KB sectors for the erase block size when the part supports it (Ken Pettit, 2013-5-3).
  • configs/pirelli_dpl10: Adds a configuration for the Pirelli phone (from Craig Comstock via Alan Alan Carvalho de Assis, 2013-5-3).
  • arch/arm/src/calypso: Fix some compilation warnings (2013-5-5).
  • configs/pirelli_dpl10/nsh_highram: Converted to use the kconfig-frontends tools (2013-5-5).
  • drivers/lcd/mio283qt2.c: LCD was not being selected in the setpower method (also not being deselected in hwinitialize function) (2013-5-6).
  • arch/arm/src/kl/kl_gpio.c and .h, configs/freedom-kl25z/src/freedom-kl25z.h, and configs/freedom-kl25z/src/kl_led.c: Fixes LEDs on the Freedom KL25Z board (2013-5-6).
  • arch/arm/src/kinetis/kinetis_pin.c and arch/arm/src/kinetis/kinetis_internal.h: The Kinetis GPIO logic had some of the same issues as did the Kinetis L (2013-5-6).
  • arch/arm/src/stm32/stm32_idle.c: Add an option to conditionally disable the "wfi" sleep mode. This is needed with certain JTAG debuggers to to prevent the debug session from begin disconnected. From Ken Pettit (2013-5-7).
  • configs/mikroe-stm32f4/fulldemo/, nx/, nxlines/, and nxtext/: Add more configurations for the Mikroelektronika Multimedia STM32-M4 board. From Ken Pettit (2013-5-7).
  • `configs/mikroe-stm32f4/src/up_mio283qt2.c and other files: Integrate the MIO283QT2 display on the Mikroelektronika Multimedia STM32-M4 board. From Ken Pettit (2013-5-7).
  • arch/arm/src/lpc17xx/lpc17_i2c.c: Fix for lpc17xx i2c single byte read timeout error problem from M.Kannan (2013-5-8).
  • arch/arm/src/stm32/stm32_adc.c: Typo in F2/F4 specific logic: ACD_ instead of ADC_. From Ken Pettit (2014-5-8).
  • configs/olimex-lpc1766stk/tools: Tweaks to support OpenOCD-0.70 (2013-5-10).
  • configs/mikroe-stm32f4: Changes to get the Mikroelektronika MultiMedia STM32 F4 touchsceen working. From Ken Pettit (2013-5-11).
  • configs/*/nxwm: Default priorities for NxWidget and NxWM threads should be 100, not 50, to be consistent with other default priorities.
  • configs/hymini-stm32v/buttons, nsh, and nsh2: Configurations converted to use the kconfig-frontends tools (Laurent Latil, 2013-5-14)
  • configs/hymini-stm32v/src: Converted to use the common SSD1289 driver (Laurent Latil, 2013-5-14)
  • configs/hymini-stm32v/ostest and usbnsh: Add OS test and USB/NSH configurations (Laurent Latil, 2013-5-14).
  • configs/hymini-stm32v/src/up_nsh.c: Add support for the card detect (CD) interrupt (Laurent Latil, 2013-5-14).
  • configs/hymini-stm32v/src/nx and nxlines: Removed these configurations (Laurent Latil, 2013-5-14).
  • arch/arm/src/stm32/chip/stm32f10xx_dma.h: Fix some bad DMA register definitions. From Laurent Latil (2013-5-15).
  • configs/hymini-stm32v: Enable SDIO in nsh2 configuration; remove warning from src/up_ssd1289.c. From Laurent Latil (2013-5-15).
  • configs/hymini-stm32v/src/up_r61505u.c: Support for the R65105- based LCD that comes with some HY-Mini STM32v board. From Christian Faure (2013-5-16).
  • syscall/syscall_lookup.h: Missing underscore character in SYS_onexit. Reported by Ken Pettit (2013-5-17).
  • nuttx/syscall/syscall.csv: Type of first parameter of on_exit() is wrong. Reported by Ken Pettit (2013-5-17).
  • configs/mikroe-stm32f4/kernel/, kostest/ and scripts/: Add kernel build support and kernel mode OS test example for the the MikroElektronkia MultiMedia STM32 M4 board. From Ken Pettit (2013-5-17).
  • arch/arm/include/stm32/chip.h and arch/arm/src/stme32/chip/stm32l15xxx_pinmap.h: Beginning of support for the STM32L15X family (2013-5-18).
  • arch/arm/include/stm32/stm32l15xxx_irq.h and arch/arm/src/stm32/chip/stm32l15xxx_vectors.h: Support for STM32L15X interrupt vectors (2013-5-18).
  • `arch/arm/src/stm32/chip/stm32l15xxx_gpio.h and related STM32 GPIO files: Add GPIO support for the STM32L215X (2013-5-18).
  • arch/arm/src/stm32/chip/stm32l15xxx_memorymap.h: STM32L215X memory map (2013-5-18).
  • arch/arm/src/stm32/chip/stm32_pwr.h, stm32fl15xxx_rcc.h, and stm32l15xxx_syscfg.h: More updates for the STM32L152 (2013-5-19).
  • configs/stm32ldiscovey: Configuration for the STM32L-Discovery board. Still does not build on initial check-in (2013-5-19)
  • STM32L15X: Add DMA and UART start. Correctly initialize the heap (2013-5-19).
  • arch/arm/src/stm32/stm32l15xxx_rcc.c chip/stm32_flash.h: Add RCC PLL and FLASH configuration logic for the STM32L152X (2013-5-19).
  • include/nuttx/usb/audio.h: Typo- and bug-fixes from Ken Pettit (2013-5-19)
  • audio/, drivers/audio, include/nuttx/audio.h: Add a new audio subsystem and VS1053 driver to NuttX. Contributed by Ken Pettit (2013-5-19).
  • configs/miroe-stm32f4/: Add audio logic to NSH configuration. From Ken Pettit (2013-5-19).
  • nuttx/arch/arm/src/lm/chip/lm_flash.h and nuttx/arch/arm/src/lm/lm_flash.c: Add support for TI/Stellaris internal FLASH MTD driver. From Max Holtzberg (2013-5-20).
  • arm/src/stm32/chip/stm32l15xxx_vectors.h: After correcting errors in the vector definition file, the STM32L-Discovery NSH port now seems to be fully functional. Also fixed an error that was causing the LEDs to be controlled incorrectly (2013-5-21).
  • arch/arm/src/stm32/chip/stm32_lcd.h: Add definitions for STM32L15X segment LCD (2013-5-21).
  • configs/lm3s6965-ek/discover: Add an example configuration for UDP discovery tool on the lm3s6965-ek board. From Max Holtzberg (2013-5-21).
  • audio/, drivers/audio, include/nuttx/audio: Added a callback interface to the Audio upperhalf driver for dequeueing, reporting async events, etc. Also included is some initial work for the VS1053 driver. From Ken Pettit (2013-5-21).
  • include/nuttx/audio/audio.h: Moved from include/nuttx/ to include/nuttx/audio. (2013-5-21).
  • configs/lm3s6965-ek/tcpecho: This configuration builds the simple TCP echo example based on W.Richard Steven UNIX Programming book to ensure correct usage of the socket API. Contributed by Max Holtzberg (2013-5-22).
  • configs/stm32ldiscovery/src/stm32_lcd.c: Framework for support of the STM32L-Discovery's segment LCD (2013-5-22).
  • fs/fs_poll.c: Poll setup/teardown logic should ignore invalid (i.e., negative) file descriptors. Max Holtzberg (2013-5-23).
  • net/net_poll.c: When readahead data is available, the network poll logic should set POLLIN (or POLLRDNORM), not POLLOUT. Max Holtzberg (2013-5-23)
  • fs/fs_poll.c: Actually, it should also set revents == 0. (2013-5-23).
  • libc/misc/lib_slcdencode.c and lib_slcddecode.c: Add logic to marshal and serialize special SLCD intermixed with normal ASCII data (2013-5-23)
  • configs/stm32ldiscovery/src/stm32_lcd.c: STM32L-Discovery's segment LCD is code complete but completely untested (2013-5-23).
  • include/nuttx/fs/ioctl.h, include/nuttx/lcd/slcd_codec.h, and configs/stm32ldiscovery/src/stm32_lcd.c: Add SLCD ioctl commands to get SLCD geometry, set bars, and manage contrast (2013-5-23).
  • configs/stm32ldiscovery/src/stm32_usb.c: This file and all references to USB removed for the STM32L-Discovery. While the chip supports a USB device, the board does not (2013-5-24).
  • arch/arm/src/stm32/stm32_lse.c: Add support for the STM32L CSR register and for the LSE LCD clock source (2013-5-24).
  • *The STM32L-Discovery segment LCD is now functional and theREADME` file includes instructions for adding the apps/examples/slcd segment LCD test as an NSH "built-in" command (2013-5-24).
  • configs/pcblogic-pic32mx: Converted all configurations to use the kconfig-frontends tool (2013-5-25).
  • configs/pcblogic-pic32mx/src: Renamed files using pic32mx_ vs up_ prefix. Enable building of LCD1602 LCD (2013-5-25).
  • configs/pcblogic-pic32mx/src/pic32mx_lcd1602.c: Now uses SLCD CODEC (2013-5-25)
  • configs/stm32ldiscovery/src/stm32_lcd.c: Now supports ioctl to get cursor position (2013-5-25).
  • include/nuttx/lcd/slcd_ioctl.h: Moved ioctls commands and structures from slcd_codec.h (2013-5-25)
  • libc/misc/lib_slcdencode.c and lib_slcddecode.c: Several encoding and decoding bug fixes (2013-5-26)
  • configs/sure-pic32mx: Converted all configurations to use the kconfig-frontends tools, cleaned up the directory structure and naming to match some of the more recent configurations, and added a segment LCD driver for the board. The initial checkin of the LCD driver is just a clone of configs/pcblogic-pic32mx/src/pic32mx_lcd1602 and it not yet expected to be functional (2013-5-26).
  • include/nuttx/lcd/slcd_ioctl.h and all SLCD drivers: Rename geometry structure to attributes; Move MAX contrast to attributes. Add attribute and ioctl commands to get and set LCD brightness (2013-5-27).
  • configs/sure-pic32mx/pic32mx_lcd1602.c: This driver appears to fully functional (at least to the extent that it has been tested) (2013-5-27).
  • arch/mips/src/pic32mx/pic32mx-usbdev.c: Fix NULL packet handling in the PIC32 USB device driver. Without this fix the CDC/ACM driver cannot be used reliably with the PIC32 USB. With this change the configs/sure-pic32mx/usbnsh configuration works great (2013-5-28).
  • configs/sure-pic32mx/src/pic32mx_nsh.c: The NSH configurations will support the USB monitor applications (2013-5-28).
  • nuttx/arch/arm/include/stm32/chip.h, src/stm32/Kconfig, src/stm32/chip.h, and src/stm32/chip/stm32f103c_pinmap.h: STM32F103C4 and F103C8 chip support from Laurent Latil (2013-5-28)
  • configs/stm32_tiny: Add support for the STM32 Tiny development board based on the STM32 F103C8T6 MCU (2013-5-28).
  • arch/arm/src/stm32/stm32_usbdev.c: Fix an error in NULL packet handling: If the NULL-packet needed flag ever gets set, then it is not cleared and inifinite NULL packets result. This only effects the CDC/ACM class and was the cause of the failure of configs/stm32f3discovery/usbnsh configureation which works great after this change (2013-5-29).
  • drivers/usbdev/cdcacm.c and pl2303.c and include/nuttx/usb/cdcacm.h: Change the default IN request buffer size from 64 to 96. This will avoid requests of exactly MAXPACKET size and, hence, avoid so many NULL packets. Also, fix the OUT request buffers size to exactly the max packet size. It cannot be any other size (2013-5-29).
  • .gitignore: Clean-up of most all .gitignore files: Make scope of ignore to be only the current directory; Ignore .dSYM files in directories where .exe's may be build. Also, inMakefiles, clean .dSYM files in directories where an .exe may be built (2013-5-30).
  • drivers/wireless/nrf24101.c/.h and include/nuttx/wireless/nrf24101.h: Add new driver for the wireless nRF24L01+ transceiver. From Laurent Latil (2013-6-1).
  • drivers/wireless/cc1101: Move files in the cc1101 up one directory. From Laurent Latil (2013-6-1).
  • configs/stm32_tiny: Fix nRF24L01+ driver integration for the STM32 Tiny. From Laurent Latil (2013-6-01).
  • configs/sam3u-ek: All remaining configurations changed to use the kconfig-frontends tools (2013-6-2).
  • arch/arm/src/sam3u/chip: All SAM3U register definition files moved to this subdirectory. Naming of registers changed from SAM3U_ to just SAM_. This is in preparation for a SAM4L port (2013-6-2).
  • arch/arm/src/sam3u: Renamed files to sam_\* vs. sam3u_\*. Eliminated sam3u_internal.h; instead uses individual header files for each SAM interface block (2013-6-2).
  • arch/arm/src/stm32/stm32f20xxx_rcc.c and stm32f40xxx_rcc.c, and configs/mikroe-stm32f4/src/up_clockconfig.c: Correct some bad conditional compilation (CONFIG_ missing from setting name). This affects some STM32 FLASH pre-fetch settings. From Lorenz Meier (2013-6-2).
  • arch/arm/include/sam34 and arch/arm/src/sam34: The old sam3u/ directories were renamed sam34/ to make room in the namespace for the SAM4L (2013-6-2).
  • libc/stdio/lib_dprintd.c and lib_vdprintf.c: Add dprintf() and vdprintf() (the latter from Andrew Tridgell, 2013-6-2).
  • sched/sem_holder.c: Modify assertion that is reported to cause false alarm assertions (2013-6-2).
  • arch/arm/include/sam34/sam4l_irq.h and arch/arm/src/sam34/chip/sam4l_memorymap.h: Add interrupt and memory map definitions for the AT91SAM4L (2013-6-3).
  • arch/arm/src/sam34/chip/sam4l_vectors.h and arm/src/sam34/sam_vectors.S: Add interrupt vector support for the SAM4L family (2013-6-3).
  • arch/include/sam34/chip.h: Add chip definitions for the SAM4L family (2013-6-3).
  • configs/sam4l-xplained: A partial configuration that will (eventually) support the SAM4L Xplained Pro developement board (2013-6-3).
  • arch/arm/src/sam34/chip/sam4l_pinmap.h: Initial cut as SAM4L pin mapping (2013-6-3).
  • arch/arm/src/stm32/stm32_dma.: Add a new interface function, stm32_dmacapable() that can be used to determine if DMA is possible from the specified memory address. From Petteri Aimonen (2013-6-4).
  • arch/arm/src/stm32/stm32_spi.c: If CONFIG_STM32_DMACAPABLE is defined, use stm32_dmacapable() to determine if it is possible to perform DMA from the specified address. This change is important for the STM32 F4 which may have SPI data buffers allocated on the stack in CCM memory which cannot support the DMA. From Petteri Aimonen (2013-6-4).
  • nuttx/arch/arm/src/sam34/sam4l_gpio.h: Created GPIO driver header file for the SAM4L. Also renamed the SAM3U header file to sam3u_gpio.h (2013-6-4).
  • nuttx/arch/arm/src/sam34/sam4l_gpio.c: Created GPIO driver for the SAM4L (2013-6-4).
  • nuttx/configs/sam4l-xplained/src/sam_userleds.c: Added. (2013-6-4).
  • configs/sam4l-xplained/src/sam_userleds.c: Add application LED interfaces (2013-6-5).
  • arch/arm/src/sam34/sam4l_gpio.c and arch/arm/src/sam34/chip/sam4l_gpio.h: Fix GPIO port address; fix compilation errors (2013-6-5).
  • arch/arm/src/sam34/chip/sam4l_flashcalw.h: Add header file for SAM4L FLASH and PICOCACHE definitions (2013-6-5).
  • arch/arm/src/sam34/chip/sam4l_pm.h: Add header file for SAM4L Power Management. Leveraged from AVR32 (2013-6-5).
  • arch/arm/src/sam34/sarm4l_clockconfig.c: SAM4L clock configuration logic (leveraged from AVR32).
  • nuttx/arch/arm/src/sam34/sam4l_periphclks.c/h: Add common logic to enabled/disable SAM4L peripheral clocking (2013-6-5).
  • nuttx/arch/arm/src/sam34/chip/sam4l_bpm.h and sam4l_scif.h: Add register definitions for the SAM4L BMP and SCIF blocks (2013-6-6).
  • nuttx/arch/arm/src/sam34/sam4l_clockconfig.c: Now selects an optimal power scaling mode (2013-6-6).
  • nuttx/arch/arm/src/stm32/stm32_serial.c and nuttx/include/termios.h: Change for hardware flow control support for STM32. It also fixes incorrect operation of USART2 and UART5 in current master. Submitted by Lorenz Meier but includes changes by Mike Smith (2013-6-6).
  • nuttx/arch/arm/src/stm32/stm32_otgfshost.c: A backward conditional prevent detection of disonnection events. Reported by Scott (2013-6-6).
  • nuttx/arch/arm/src/sam34/chip/sam4l_bscif.h: Add registers definitions for the SAM4L BSCIF module (2013-6-6).
  • nuttx/arch/arm/src/sam34/sam4l_clockconfig.c and chip/sam4l_wdt.h: Finally finished the SAM4L clock configuration logic; Added a WDT register definition header file (2013-6-8).
  • nuttx/arch/arm/src/sam34/chip/sam4l_usart.h and sam4l_picouart.h: Add UART/USART register defintion files for the SAM4L (2013-6-8).
  • arm/src/sam34/chip/sam3u_periphclks.h: More macros and definitions to generalize peripheral clocking and to hide differences between the SAM3U and the SAM4L (2013-6-8).
  • configs/sam4l-xplained/ostest: The SAM4L now passed the OS test (2013-6-9).
  • configs/sam4l-xplained/nsh: Added an NSH configuration for the SAM4L Xplained Pro board (2013-6-9).
  • configs/sam4l-xplained/src/sam_cxxinitialize.c: Added C++ support to the SAM4L Xplained Pro board configuration (2013-6-9).
  • arm/src/sam34/chip/sam_irq.c: Extend IRQ support to handle the larger number of NVIC interrupts used by the SAM4L (2013-6-9).
  • arch/arm/src/sam45/chip: Beginning updates of SAM3U header files to include support for the SAM4S: WDT, SUPC, EEFC, MATRIX, PMC, UARTs, USARTs, HSMCI, SPI (2013-6-10).
  • arch/arm/src/chip/sam4s_memorymap.h, sam4s_irq.h, and sam4s_vectors.h: Add SAM4S memory map and interrupt definitions (2013-6-10)
  • configs/sam4s-xplained: Add framework for the SAM4S Xplained board. There is not much there on initial checkin (2013-6-10).
  • arch/arm/src/sam34: SAM3S support: GPIO, chip characteristics, peripheral Kconfig (2013-6-11).
  • arch/arm/src/sam34/chip/sam4s_pinmap.h: Add SAM4S pin configuration definitions (2013-6-11).
  • arch/arm/src/sam34/sam4s_periphclks.h: Add macros to manage SAM4S peripheral clocks (2013-6-11).
  • configs/sam4s-xplained: Configuration builds error-free (2013-6-11).
  • configs/sam4s-xplained/nsh: Added an NSH configuration for the SAM4S Xplained board. Both the OS test and the NSH configurations no execute error-free. Delay loops calibrated for both the SAM4L and SAM4S boards (2013-6-12).
  • Standardize on CONFIG_NSH_BUILTIN_APPS`: Remove all other variants of the build-as-an-NSH-application configuration settings (2013-6-12).
  • arch/arm/src/sam34/sam_periphclks.h: A header file that just includes the right header file. This cleans up the messy logic in all of the C files and puts the mess in one place (2013-6-12).
  • arch/arm/src/arm*/Toolchain.mk, Kconfig (and lots of configuration files): Add support for a generic Windows EABI toolchain (2013-6-13).
  • apps:
  • apps/examples/mtdpart: Provides a simple test of MTD partitions.
  • apps/nshlib/nsh_mntcmds.c: Add a -h option to the df command to show the volume information in human readable form (Ken Petit, 2013-4-30).
  • apps/nshlib/nsh_fscmds.c: Add support for the mksmartfs command. (Ken Petit, 2013-4-30).
  • apps/system/flash_eraseall: Add an interface to erase FLASH using a flash_eraseall NSH command (Ken Pettit, 2013-5-1).
  • apps/examples/flash_test and apps/examples/smart_test: Add tests of the SMART block driver and file system (Ken Pettit, 2013-5-1).
  • apps/examples/mtdpart: Extended the test. The original test coverage was superficial (2013-5-3).
  • apps/examples/smart: This is an adaptation of the NXFFS stress test for the SMART file system (Ken Pettit, 2013-5-3).
  • apps/examplex/nxtext: Remove the CONFIG_EXAMPLES_NXTEXT_NOGETRUN option. The test logic was bad for the case where this options is not selected. Also, complete the empty Kconfig file (2013-5-7).
  • apps/NxWidgets/Kconfig: Updated to match NxWidgets/Kconfig by Ken Pettit (2013-5-11).
  • apps/examples/helloxx: C++ name mangling was occurring when this example is built as an NSH built-in application. (2013-5-16).
  • apps/netutils/discover: Added a runtime configuration for the UDP discover utility. From Max Holtzberg (2013-5-21).
  • apps/examples/tcpecho: Added a simple single threaded, poll based TCP echo server based on W. Richard Stevens UNIX Network Programming Book. Contributed by Max Holtzberg (2013-5-22).
  • apps/examples/slcd: Add an example for testing alphanumeric, segment LCDs (2013-5-24).
  • apps/examples/slcd: Extend SLCD test to handle multi-line displays (2013-5-26).
  • apps/examples/slcd: This test now sets the SLCD brightness level to the mid-point as part of its initialization (2013-5-27).
  • .gitignore: Clean-up of most all .gitignore files: Make scope of ignore to be only the current directory; Ignore .dSYM files in directories where .exe's may be build. Also, in Makefiles, clean .dSYM files in directories where an .exe may be built (2013-5-30).
  • apps/examples/nrf35l01_term: Add an example application to demo the nRF24L01 driver. From Laurent Latil (2013-6-1).
  • apps/nshlib/Kconfig: Add some missing NSH configuration values. From Lorenz Meier (2013-6-2).
  • Standardize on CONFIG_NSH_BUILTIN_APPS: Remove all other variants of the build-as-an-NSH-application configuration settings (2013-6-12).

New in version 6.27 (April 30th, 2013)

  • This version adds verified kernel build support.
  • In this (optional) buildmode, NuttX is built as a monolithic kernel.
  • NuttX is built as a separate kernel mode "blob", and the applications are built as a separate user mode "blob".
  • Extended platform support includes support for the WaveShare Open1788 (NXP LPC1788) with the LCD frame-buffer driver, SDRAM, and DMA SD card support, and support for the Kinetis L Cortex-M0+ family and a (minimal) port for the Freedom KL25Z board.
  • Architecture support for the STMicro STM32F4727/737 has been added.

New in version 6.26 (March 16th, 2013)

  • drivers/serial/serial.c: Correct some race conditions when checking for disconnection of a removable serial device.
  • *sched/task_posixspawn.c, task_spawn.c, task_spawnparms.c and spawn_internal.h\: Create new interfacetask_spawn()that is likeposix_spawn(), but uses entry point addresses liketask_create()`.
  • Corrected all argv[] arguments: Should be char * const *, not const char **.
  • sched/pthread* and include/nuttx/sched: Move pthread join data and pthread key calculation data into the "task group" structure.
  • *sched/atexit.c, on_exit.c, task_exithook.c and include/nuttx/sched.h\: Moveatexitandon_exit` data structures to task group. These callbacks are only issued now when the final member of the task group exits.
  • *sched/waitpid.c, task_exithook.c and include/nuttx/sched.h\: Movewaitpiddata data structures to task group. Callers ofwaitpid()` are now only awakened when the final thread of the task group exits.
  • sched/mq_descreate.c, mq_open.c, mq_remove.c, group_leave.c, and include/nuttx/sched.h: Move list of opened message queues to the task group structures. Now all message queues opened by members of the group are closed when the last member of the group exits.
  • *includes/nuttx/sched.h and Lots of files*\: Change name of_TCBtostruct tcb_s` so that (1) it is consitent with other NuttX naming and so that (2) the naming can handle some upcoming changes.
  • includes/nuttx/sched.h and sched/: There are three TCB structures: struct tcb_s is a generic common version, struct task_tcb_s is a version for tasks and kernel threads and pthread_tcb_s is a version for pthreads. By dividing the TCB structure into these variants, pthreads do not have to be burdened by task-specific data structures (and vice versa).
  • sched/task_exithook.c and group_create.c: Fix an error, the task within the task group may exit early leaving a pthread to exit the task group last. In this case, we need to remember the the PID of the main task in the task group and use that PID for signalling SIGCHILD to the parent task group.
  • included/nuttx/sched.h and sched/sig*.c: Numerous changes to the signal deliver logic so that the delivery of signals to threads within a task group will be compliant with delivery of signals to threads within a POSIX process.
  • sched/mq_recover.c and task_exithook.c: Add logic to handle the case where a task is deleted (or pthread canceled) while it is waiting on a message queue. task_delete() and pthread_cancel() are dangerous interfaces. This is only one feeble recovery measure of many that would be needed to do this safely.
  • *sched/group_killchildren.c, task_recover.c, group_foreachchild.c,sched/restart.c,sched/task_delete.c, and others*\: Beef up logic to better support task deletion and pthread cancellation. Needed to pass need OS test case fortask_restart()`.
  • sched/include/sched.h and all timed functions in sched/: Move timer from local variables to TCB. This is needed so that if a task is canceled or restarted while it is waiting for a timed event, we can gracefully recover. We can't let the timer expire after the task has been deleted.
  • arch/arm/include/stm32 and arch/arm/src/stm32: Add support for the STM32 F3 family (still missing some things).
  • configs/stm32f3discovery: This will (eventually) be support for the STM32F3Discovery board.
  • *STM32 F3 and STM32F3Discovery port is complete a ready for test.
  • arch/arm/src/lpc17xx: Add support for the Cortex-M4 FPU and Mikes "common vector" logic. The LPC1788 is going to need these things.
  • arch/arm/src/stm32/stm32_spi.c: Fix SPI DMA logic that does not work if sem_wait() is interrupt by a signal. From Petteri Aimonen.
  • drivers/input/max11802.c: MAX11802: Fix a timing bug that corrupted coordinates. From Petteri Aimonen.
  • drivers/mmcsd/mmcsd_spi.c: Use SPI locking so that MMC/SD can exist on the same bus as other SPI devices. From Petteri Aimonen.
  • graphics/nxfonts/nxfonts_sans17x22.h: Small mod to hyphen in sans17x22 font. The hyphen did not have any space on its sides. This caused it to run together with other characters so that for example "+-" would look weird. From Petteri Aimonen.
  • mm/mm_mallinfo.c: Take MM semaphore in mm_mallinfo. From Petteri Aimonen.
  • configs/stm32f3discovery/nsh/defconfig: Disable SPI. It is not used.
  • drivers/mtd/sst39vf: Add a driver for the SST29VF NOR FLASH parts.
  • sched/os_start.c: Add an additional call-out to support board-specific driver initialization during the start phase*\: IfCONFIG_BOARD_INITIALIZEis defined, then an additional initialization function calledboard_initialize()will be called just afterup_initialize()` is called and just before the initial application is started.
  • arch/arm/src/stm32/stm32_otgfsdev.c, drivers/usbdev/usbdev_trprintf.c, and include/nuttx/usb/usbdev_trace.h: Add logic to support decoding of device-specific trace events to make the trace ouput more readable. From Petteri Aimonen.
  • arch/arm/src/stm32/stm32_otgfsdev.c: Need to manually set CNAK in the case where we are waiting for a SETUP command with DATA. Otherwise, the core may NAK further transactions. From Petteri Aimonen.
  • arch/arm/src/stm32/stm32_otgfsdev.c: Add logic to prevent premature to IDLE state. This change (plus the previous) was necessary to get the CDC/ACM driver working the certain STM32 F4 hardware (but not others). These changes appear to prevent certain race conditions that may or may not cause USB problems. From Petteri Aimonen.
  • arch/arm/include/armv6-m and arch/arm/src/armv6-m: First cut at support for the Cortex-M0
  • *configs/nutiny-nuc120, arch/arm/include/nu1xx, and `arch/arm/src/nuc1xx: Support for Nuvoton NuTiny NUC120.
  • 2013-02-22: the Cortex-M0, NuvoTron NUC1xx, and NuTiny-SDK-NUC120 port is code complete and ready for testing.
  • configs/ekk-lm3s9b96/ostest and nsh: All EKK-LM3S9B96 configurations converted to use the mconf configuration tool.
  • configs/zkit-arm-1769: Add support for Zilogic System's ARM development Kit, ZKIT-ARM-1769. From Rashid.
  • configs/zkit-arm-1769/hello: Add a "Hello, World!" configuration for the KBIT-ARM-1769 board. From Rashid.
  • configs/zkit-arm-1769/thttpd: Add a THTTPD configuration for the KBIT-ARM-1769 board. From Rashid.
  • 2013-02-27: All configurations for the Cortex-M0 NuTINY-SDK-NUC120 appear to be functional and stable.
  • configs/zkit-arm-1769/nsh: Add an NSH configuration for the KBIT-ARM-1769 board. From Rashid.
  • arch/arm/src/stm32/stm32_otgfsdev.c: Fixes from Petterri Aimonen related to corner cases that can cause infinite interrupts.
  • drivers/usbdev/usbmsc_scsi.c: Change to allow the full name in the USB descriptor but a truncated, 8-byte name in the SCSI field. From Petteri Aimonen.
  • arch/arm/src/stm32/stm32_spi.c: Need to clear error flags to prevent corruption of subsequent transfers. Also, bit count should not be changed while the SPI peripheral is enabled. From Petteri Aimonen.
  • drivers/mmcsd/mmcsd_spi.c: When bus is shared, the speed has to be set every time. Also SD cards require a few dummy clocks to react into CS release. From Petteri Aimonen.
  • configs/lm4f120-launchpad: In initial configuration for testing the LM4F120 LaunchPad port. This is to support testing only and is not yet a functional board port (as of 2013-03-01).
  • *arch/arm/include/lm/lm4f_irq.h and `arch/arm/src/lm/chip/lm4f_vector.h: Add interrupt vector/IRQ number definitions for the LM4F120.
  • arch/arm/src/stm32f20xxx_dma.c and stm32f40xxx_dma.c: Fix a typo in assigned base register addresses for each DMA channel. From Yan T.
  • Build Fixes: Several build fixes from Mike Smith were incorporated. These were mostly compilation errors introduced into the system because of the large number of recent changes with broad scope (2013-03-04).
  • configs/zkit-arm-17969/src/up_can.c: Add CAN support to the Zilogics Technologies ZKIT-ARM-1769 board (From Rashid Fatah, (2013-03-04)).
  • arch/arm/src/lpc17/lpc17*_clockconfig.c: The WaveShare Open1788 board now boots and passes the OS test. This is the work of Rommel Marcelo (2013-03-04).
  • *arch/arm/src/lm/lm_gpio.c, lm_gpio.h, and `chip/lm4f_pinconfig.h Extend GPIO logic to handle LM4F. Add LM4F pin configuration header file (2013-03-04).
  • configs/open1788: Enable LED support in all configurations. (2013-03-04)
  • configs/open1788/nsh: NSH configuration verified function. By Rommel Marcelo (2013-03-05).
  • configs/open1788/src/lpc17_nsh.c: Use the SD card interface, not SPI to interface with SD cards (2013-03-05.
  • arch/arm/src/lpc17xx/lpc17_sdcard.c and header files: Clone the STM32 SD card interface to the LPC1788. It appears to be the same IP. (2013-03-05)
  • libc/wqueue: Work queue logic moved from sched/ to libc/wqueue. It is not really core OS functionality and this move helps prepare for user-space work queues. (2013-03-05)
  • libc/wqueue: Implemented user-space work queues. These will not get tested until the next time I attempt a NuttX kernel build. (2013-03-05).
  • arch/arm: Correct some bad syscall dispatching logic. This change cannot be fully tested until there is a fielded NuttX kernel build. (2013-03-06).
  • net/net_poll.c: Correct logic that checks if the socket is disconnected when the poll is setup. That is bad logic: Listen sockets, for example, are not connected. In that case, the purpose of the poll is to wait for connection events. As a result of this, poll/select would return immediately with POLLHUP with it was used to detect connection events. This fix for now was to check instead if the socket is closed (meaning that it was connected at one time but was closed by the remote peer). That excludes the listen socket which was never connected. This does introduce a new problem, however. If the socket was not closed, but lost the connection through an abnormal event, then poll/select will hang. That needs to be revisited. (2013-03-07)
  • fs/fs_select.c: Was not checking if the timeout parameter was NULL but would, instead, setup a bogus timeout based on whatever it found at address zero. Also, improved some of the memory allocation logic so that it will not use so much memory. (2013-03-07)
  • net/net_poll.c: Handle the missing case. Now tests for not connected AND not listening. I think that now covers all of the cases including the missing case noted above. (2013-03-07)
  • mm/: Move all memory manager globals into a structure. A reference to this structure is now passed internally between mm APIs. This change will (eventually) support multiple heaps and heap allocators. (2013-03-08).
  • mm/ and include/nuttx/mm.h: Implement support for multiple heaps. (2013-03-08).
  • arch/*/src: xyz_addregion() needs to call kmm_addregion, not mm_addregion. (2013-03-08).
  • sched/kmm*.c: Move this garbage kmm*.c file to mm/. until I decide what to do with them (which is probably to just delete them). (2013-03-08).
  • mm/mm_test.c and Makefile.test: Deleted the memory test. This was a good test and helped me a lot when I wrote the memory manager, but now it is in the way and paralyzing other efforts. So the memory unit test was deleted. (2013-03-08)
  • sched/sched_free.c: Rename sched_free() to sched_ufree(); Add sched_kfree() to handler deferred kernel heap allocations. (2013-03-10)
  • arch/: User user-accessible heap to allocate all stacks. (2013-03-10)
  • arch/arm/src/sam3u: The AT91SAM3U will now support a kernel heap if so configured. (2013-03-10)
  • configs/sam3u-ek/knsh: This configuration was converted to use the kconfigs-frontends build tool. (2013-03-10)
  • configs/*/include/user_map.h and include/nuttx/userspace.h: Remove the very kludgy user_map.h file and replace it with a header that is expected at the beginning of the user-space blob. (2013-03-10)
  • configs/sam3u-ek/kernel/up_userspace.c: This is the header for the SAM3U-EK's user space. (2013-03-10)
  • sched/os_bringup.c: In the kernel build, os_bringup() now uses the user-space header to automatically start the user-space work queue, if so configured. (2013-03-10)
  • arch/arm/src/lpc17xx/lpc17_mpuinit.c and lpc17_userpace.c: Add support for the MPU and kernel build for the LPC17xx family. (2013-03-11)
  • configs/open1788/kernel and knsh: Add kernel build support and a kernel NSH configuration for the WaveShare Open1788 board. (2013-03-11)
  • configs/sam3u_ek/kernel, knsh, and scripts: Move some files around for better supportability. (2013-03-11)
  • configs/open1788/kernel, knsh, and scripts: Add a kernel mode build configuration for the WaveShare Open1788 board. (2013-03-11)
  • arch/arm/src/armv7-m/up_mpu.c: Several fixes to MPU logic. (2013-03-12).
  • arch/arm, configs/sam3u-ek, configs/open1788: Fix memory map for kernel mode build; Some regions were overlapping. (2013-03-13).
  • arch/: Rename g_heapbase to g_idle_topstack. This is the same value however: The top of the IDLE stack is the same as the base of the heap in the flat build. But not in the kernel build: The base of the heap is elsewhere so the naming was wrong. (2013-03-13).
  • libc/stdlib/lib_itoa.c: Implementation of itoa() contributed by Ryan Sundberg. (2013-03-14).