NuttX

Software Screenshot:
NuttX
Software Details:
Version: 7.9 updated
Upload Date: 10 May 15
Developer: Gregory Nutt
Distribution Type: Freeware
Downloads: 53

Rating: 4.0/5 (Total Votes: 1)

NuttX is an open source, deterministic and free real-time embedded operating system (RTOS), designed from the offset to be usable in deeply embedded, resource constrained environments. It has a small footprint that is usable in micro-controller environments, and it’s fully scalable from tiny (8-bit) to moderate embedded (32-bit) systems.

It also aims to be fully compliant to standards, to be fully real time, and to be totally open. NuttX has a rich feature OS set, a modular design, it is highly scalable and configurable, as well as standards compliant. It is distributed with a non-restrictive BSD license. It is often dubbed by its developers as "Tiny Linux."

Features at a glance

Key features include core task management, BSD socket interface, memory allocators (shared memory, standard heap memory allocation, protected build with MPU, flat embedded build, per-process heaps, granule allocator and dynamically sized), memory configurations, porting guide, fully preemptible, tickless operation, on-demand paging and system logging.

In addition, the project comes with extensions to manage pre-emption, per-thread, built-in CPU load measurements, comprehensive documentation, optional tasks that contain address environments, ANSI-like and POSIX-like task controls, clocks, pthreads, environment variables, signals, named message queues, timers, filesystem and counting semaphores.

Among other features, we can mention round-robin scheduling, FIFO, support for priority inheritance, support for the SoC architecture, support for board architectures, support for new processor architectures, watchdog timers, VxWorks-like task management, I/O redirection and transmitted “controlling terminals.”

Supported platforms

NuttX supports a wide variety of hardware platforms, among which we can mention numerous ARM processors, including ARM Cortex-M3, ARM926EJS, ARM7TDMI, ARM Cortex-M4, ARM Cortex-M0, ARM920T and ARM Cortex-A5, as well as the Atmel 8-bit AVR, Freescale M68HCS12, AVR32 Atmel AVR platforms.

Additionally, it also supports various Intel platforms, such as MicroChip PIC32MX (MIPS), 80c52 and 80×86, Zilog platforms, including Zilog Z80, Zilog Z16F, Zilog Z8Encore! and Zilog eZ80 Acclaim!, and the Renesas/Hitachi SuperH and Renesas M16C/26 platforms.

What is new in this release:

  • 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().

What is new in version 7.8:

  • 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().

What is new in version 6.33:

  • 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 Stuhn 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.

What is new in version 6.32:

  • 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.

What is new in version 6.31:

  • 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.

What is new in version 6.30:

  • 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.

What is new in version 6.29:

  • 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.

What is new in version 6.2:

  • 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).

What is new in version 6.27:

  • 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.

What is new in version 6.26:

  • 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).

What is new in version 6.25:

  • OS Initialization:
  • Removed support for CONFIG_BUILTIN_APP_START. This is not really a useful feature and creates a violation of the OS layered architecture.
  • Task Creation:
  • Implement a simple vfork()). In NuttX-6.25, this interface is available only for ARM7/9, ARMv7-M (Cortext-M3/4), and MIPS32 (PIC32MX) platforms.
  • exec() now sets the priority of the new task to the same priority as the parent task (instead of the arbirtrary value of 50).
  • New, partially complient implementations of execv() and execl(). These are only partially compliant because they do not overlay any existing "process space" but rather create the new task and exit().
  • Add a complete implementation of posix_spawn(). This standard interface is a better match for an MMU-less architecture than are vfork()) plus execv() or execl().
  • Add a task start hook that will be called before the task main executes. This can be used, for example, to schedule C++ static constructors to run automatically in the context of the new task.
  • Task Parentage:
  • Repartitioned tasking data structures. All shared resources are now collected together in a "task group". A "task group" includes the resource for the original task that are shared with all of the pthreads created by the task.
  • Added support for remember the parent "task group" when a new task is started.
  • Added optional support to record the membership of each thread in the "task group".
  • Implement support for retaining child task status in the "task group" after the child task exists. This is behavior required by POSIX. But in NuttX is only enabled with CONFIG_SCHED_HAVE_PARENT and CONFIG_SCHED_CHILD_STATUS.
  • Add internal logic to "reparent" a task. This is useful, for example, where the child task is created through a trampoline task that redirects I/O. Reparenting allows the caller of posix_spawn() to be reparented for the eventual child thread.
  • Added support for SIGCHLD. Sent to all members of the parent "task group" when the finall member of the child task group exits.
  • If SIGCHLD and retention of child task exist status are enabled, then a more spec-compliant version of waitpid() is enabled.
  • New interfaces waitid() and wait() are also enabled when SIGCHLD is enabled.
  • File System:
  • dup() and dup2() can new be used with opened files in a mounted file system. This supports re-direction of output in NSH to files.
  • The binfs file system was moved from apps/builtin to fs/binfs. The binfs file system was extended to support execution of "builtin applications" using exec(), execv(), execl(), or posix_spawn().
  • Added logic based on SIGCHLD to automatically unload and clean-up after running a task that was loaded into memory.
  • Binary Formats:
  • Much of the logic for "builtin applications" was moved from apps/builtin to nuttx/binfmt/libbuiltin. Includes some extensions contributed by Mike Smith.
  • A binary loader was added for builtin applications to support execution of "builtin applications" using exec(), execv(), execl(), or posix_spawn().
  • Drivers:
  • Added logic to marshal and serialized "out-of-band" keyboard commands (such as cursor controls and key release events) intermixed with normal ASCII keypress data. The encoding is partially integrated in the HID keyboard driver and the decoding is fully integrated into the apps/examples hidkbd/ and keypadtest/ (the latter contributed by Denis Carlikli).
  • Driver for the UG-2864HSWEG01 OLED contributed by Darcy Gong.
  • Add support for removable serial devices (like USB serial). This support is enabled by CONFIG_SERIAL_REMOVABLE.
  • ARMv7-M:
  • Added an option to use the BASEPRI register to disable interrupts (instead of the PRIMASK register). This eliminates some innocuous hardfaults that interfere with some debug tools. You need to switch to the BASEPRI method only if you have such tool interference.
  • STM32 Drivers:
  • Bring STM32 F1 DMA capabilities up to par with the STM32 F2/F4 (contributed by Mike Smith).
  • Add support for USART single wire mode (Contributed by the PX4 team).
  • Updates to support for SPI DMA on the STM32 F1/F2/F4. From Petteri Aimonen.
  • STM32 Boards:
  • New configuration to support the UG-2864HSWEG01 OLED on the STM32F4Discovery board.
  • Added a posix_spawn() test configuration for the STM32F4Discovery.
  • LM3S/LM4F:
  • Files and directories repartitioned to support both LM3S and LM4F using the STM32 organization as a model.
  • Partial definitions for the LM4F contributed by Jose Pablo Carballo (this is still a work in progress).
  • LM3S Boards:
  • Added scripts and documentation to use OpenOCD with the LM3S (from Jose Pablo Carballo).
  • LPC176x/LPC178x:
  • Files and directories repartitioned to support both LPC175x/LPC176x and the LPC177x/LPC178x families using the STM32 organization as a model. The LPC1788 port is a work in progress by Rommel Marcelo.
  • LPC176x/LPC178x Boards:
  • Added a configuration to support the Wave Share Open1788 board. This is still a work in progress by Rommel Marcelo.
  • LPC2148 Boards:
  • Add basic support for the The0.net ZP213x/4xPA board (with the LPC2148 and the UG_2864AMBAG01 OLED).
  • Add an nxlines configuration for the ZP213x/4xPA (with the LPC2148 and the UG_2864AMBAG01).
  • Simulator:
  • Add an nxlines configuration for the simulator.
  • Networking:
  • Add logic to work around delayed ACKs by splitting packets (contributed by Yan T.).
  • Split net_poll() to create the internal interface psock_poll().
  • LCDs:
  • Added support for LCD1602 alphanumeric LCD (HD4468OU controller).
  • Graphics:
  • Added 5x8 monospace font. This tiny font is useful for graph labels and for small bitmapped display. Contributed by Petteri Aimonen.
  • Build System:
  • Add an options to better manage toolchain prefixes.
  • Redesigned how the context targer works in the apps/ directory. The old design caused lots of problems when changing configurations because there is no easy way to get the system to rebuild the context. This change should solve most the problems and eliminate questions like "Why don't I see my builtin application in NSH?"
  • Kconfig Files:
  • There are several new configurations that use the kconfig-frontends tools and several older configurations that have been converted to use these tools. There is still a long way to go before the conversion is complete:
  • configs/sim/nxwm
  • configs/sim/nsh
  • configs/stm3220g-eval/nxwm
  • configs/stm32f4discovery/posix_spawn
  • configs/olimex-lpc1766stk/nsh
  • configs/olimex-lpc1766stk/hidkbd
  • configs/olimex-lpc1766stk/nettest
  • configs/open1788/ostest
  • configs/stm32f4discovery/nsh
  • configs/stm32f4discovery/usbnsh
  • configs/lm326965-ek (all configurations)
  • configs/mcu123-214x/nsh
  • configs/ubw32/ostest
  • Tools:
  • tools/kconfig.bat: Kludge to run kconfig-frontends from a DOS shell.
  • tools/configure.c: configure.c can be used to build a work-alike program as a replacement for configure.sh. This work-alike program would be used in environments that do not support Bash scripting (such as the Windows native environment).
  • tools/configure.bat: configure.bat is a small Windows batch file that can be used as a replacement for configure.sh in a Windows native environment. configure.bat is actually just a thin layer that executes configure.exe if it is available. If configure.exe is not available, then configure.bat will attempt to build it first (assumes the MinGW-GCC is available).
  • Applications:
  • New and modified examples:
  • apps/examples/wlan: Remove non-functional example.
  • apps/examples/ostest: Added a test of vfork()). Extend signal handler test to catch death-of-child signals (SIGCHLD). Add a test for waitpid(), waitid(), and wait().
  • apps/exampes/posix_spawn: Added a test of posix_spawn().
  • NSH:
  • NSH now supports re-direction of I/O to files (but still not from).
  • The block driver source argument to the mount command is now optional for file systems that do not require a block driver.
  • NSH can now execute a program from a file system using posix_spawn().
  • Added support for a login script. The init.d/rcS script will be executed once when NSH starts; the .nshrc script will be executed for each session: Once for a serial console, once for each USB connection, and once for each Telnet session.
  • Supports a new daemon that can be used to monitor USB trace outpout.
  • Removed non-functional wlan example.
  • Bugfixes (see the change log for details). Some of these are very important:
  • Tasking:
  • Fixed a critical task exit bug. Here is the failure scenario: (1) sched_lock() is called increments the lockcount on the current TCB (i.e., the one at the head of the ready to run list), (2) sched_mergepending() is called which may change the task at the head of the ready-to-run list, then (3) sched_unlock() is called which decrements the lockcount on the wrong TCB. The failure case that I saw was that pre-emption got disabled in the IDLE thread, locking up the whole system.
  • Signals:
  • sigtimedwait() would return a bad signal number if the signal was already pending when the function was called.
  • Drivers:
  • Some SD cards will appear busy until switched to SPI mode for first time. Having a pull-up resistor on MISO may avoid this problem, but this fix from Petteri Aimonen makes it work also without pull-up.
  • STM32 Drivers:
  • STM32 FLASH driver counting error (from Freddie Chopin).
  • STM32 F4 maximum SPI frequency was wrong (corrected by Petteri Aimonen).
  • STM32 Boards:
  • Due to cloning of untested code, the logic to control on-board LEDs did not work on any STM32 boards.
  • Serial devices number /dev/ttyS0-5 is there is a serial console, but /dev/ttyS1-6 if there is no serial console.
  • Binary Formats:
  • C++ static constructors execute now using a start taskhook so that they execute in the context of the child task (instead of in the context of the parent task).
  • File Systems:
  • Several FAT-related bugs fixed by Petteri Aimonen.
  • Networking:
  • Fix poll/select issure reported by Qiang: poll_interrupt() must call net_lostconnection() when a loss of connection is reported. Otherwise, the system will not remember that the connection has been lost and will hang waiting on a unconnected socket later.
  • Similar issues corrected for recvfrom() and send().
  • Telnetd would hang in a loop if recv() ever returned a value

What is new in version 6.24:

  • arch/arm/src/stm32: Support for STM32F100 high density chips added by Freddie Chopin.
  • configs/stm32f100_generic: Support for generic STM32F100RC board contributed by Freddie Chopin.
  • arch/arm/src/stm32_otgfsdev.c: Partial fix from Petteri Aimonen.
  • *drivers/lcd/ug-2864ambag01.c and `include/nuttx/lcd/ug_2864ambag01.h: LCD driver for the Univision OLED of the same name (untested on initial check-in).
  • configs/stm32f4discovery/nxlines: Configure to use mconf/Kconfig tool.
  • configs/stm32f4discovery/src/up_ug2864ambag01.c: Board-specific initialization for UG-2864AMBAG01 OLED connecte to STM32F4Disovery.
  • libxx/libxx_stdthrow.cxx: Exception stubs from Petteri Aimonen.
  • configs/stm32f4discovery/src/up_ug2864ambag01.c: Driver has been verified on the STM32F4Discovery platform. Some tuning of the configuration could improve the presentation. Lower resolution displays are also more subject to the "fat, flat line bug" that I need to fix someday. See http://www.nuttx.org/doku.php?id=wiki:graphics:nxgraphics for a description of the fat, flat line bug.
  • libc: Renamed nuttx/lib to nuttx/libc to make space for a true lib/ directory that will be forthcoming. Also rename libraries: liblib.a -> libc.a, libulib.a -> libuc.a, libklib.a -> libkc.a, liblibxx.a -> libcxx.a. (I will probably, eventually rename libxx to libcxx for consistency)
  • Makefile, lib/: A new, empty directory that will hold generated libraries. This simplifies the library patch calculations and lets me get rid of some bash logic. The change is functional, but only partially complete; additional logic is needed in the arch/*/src/Makefile's as well. Right now that logic generate multiple library paths, all pointing to the lib/ directory.
  • arch/*/src/Makefile: Now uses only the libraries in lib/ Replace bash fragments that test for board/Makefile.
  • Makefile.win: The beginnings of a Windows-native build. This is just the beginning and not yet ready for prime time use.
  • configs/stm32f4discovery/winbuild: This is a version of the standard NuttX OS test, but configured to build natively on Windows. Its only real purpose is to very the native Windows build logic.
  • tools/mkdeps.bat and tools/mkdeps.c: mkdeps.bat is a failed attempt to leverage mkdeps.sh to CMD.exe. It fails because the are certain critical CFLAGvalues that cannot be passed on the CMD.exe command line (like '='). mkdeps.c is a work in progress that will, hopefully, replace both mkdeps.sh and mkdeps.bat.
  • tools/Config.mk: Centralize the definition of the script that will be used to generated header file include paths for the compiler. This needs to be centralized in order to support the Windows native build.
  • tools/incdir.bat: A replacement for tools/incdir.sh for use with the the Windows native build.
  • Makefile.unix: The existing top-level Makefile has been renamed Makefile.unix.
  • Makefile: This is a new top-level Makefile that just includes either Makefile.unix or Makefile.win
  • configs/stm3240g-eval/src: Qencoder fixes from Ryan Sundberg.
  • arch/arm/src/stm32/stm32_qencoder.c: TIM3 bug fix from Ryan Sundberg.
  • tools/mkromfsimg.sh: Correct typo in an error message (Ryan Sundberg)
  • arch/*/src/Makefile: Remove tftboot install and creation of System.map for Windows native build. The first is a necessary change, the second just needs re-implemented.
  • configs/mirtoo: Update Mirtoo pin definitions for Release 2. Provided by Konstantin Dimitrov.
  • Fixed an uninitialized variable in the file system that can cause assertions if DEBUG is on (contributed by Lorenz Meier).
  • Config.mk: Defined DELIM to be either / or \, depending upon CONFIG_WINDOWS_NATIVE. This will allow me to eliminate a lot of conditional logic elsewhere.
  • nuttx/graphics: One a mouse button is pressed, continue to report all mouse button events to the first window that received the the initial button down event, even if the mouse attempts to drag outside the window. From Petteri Aimonen.
  • nuttx/graphics/nxmu/nx_block.c: One more fix to the NX block message logic from Petteri Aimonen.
  • include/nuttx/wqueue.h: Some basic definitions to support a user-space work queue (someday in the future).
  • graphics/nxmu: Add semaphores so buffers messages that send buffers will block until the buffer data has been acted upon.
  • graphics/nxmw: Extended the blocked messages to cover mouse movement and redraw events. These will also cause problems if sent to a window while it is closing.
  • arch/several: Change UARTs are enabled for i.MX, LM3S, ez80, and M16C to match how they are enabled for other architectures.
  • configs/ez80f910200kitg: Convert to use mconf configuration.
  • sched/pause.c: Implements the POSIX pause() function.
  • ez80: Lots of changes to ez80 configurations and build logic as I struggle to get a clean Windows build (still not working).
  • configs/cloudctrl: Darcy Gong's CloudController board. This is a small network relay development board. Based on the Shenzhou IV development board design. It is uses the STM32F107VC MCU.
  • arch/arm/src/stm32_serial.c and stm32_lowputc.c: Added optional RS-485 direction bit control. From Freddie Chopin.
  • Lots of build files: ARMv7-M and MIPS32 Make.defs now include a common Toolchain.defs file that can be used to manage toolchains in a more configurable way. Contributed by Mike Smith
  • configs/stm32f4discovery/winbuild and configs/cloudctrl: Adapted to use Mike's Toolchain.defs.
  • tools/configure.sh: Adapted to handle paths and setenv.bat files correctly for native Windows builds.
  • More of build files: AVR and AVR32 Make.defs now include a common Toolchain.defs file that can be used to manage toolchains in a more configurable way. Contributed by Mike Smith
  • tools/incdir.sh and incdir.bat: Add -s option to generate system header file paths.
  • nuttx/arch/arm/src/arm/Toolchain.defs: Add support for more ARM toolchains (from Mike Smith).
  • arch/arm/src/stm32/stm32f40xxx_rcc.c: Enabled FLASH prefetch (from Petteri Aimonen).
  • graphics/nxtk/nxtk_filltrapwindow.c: Correct an offset problem (from Peterri Aimonen).
  • graphics/nxglib/nxglib_splitline.c: Fix error in drawing of near horizontal lines (from Peterri Aimonen).
  • sched/task_exithook.c: Missing right bracket with certain conditional compilation (thanks James Goppert).
  • arch/arm/srch/stm32/stm32_otgfshost.c: Replace timeout handling; use system tick instead of frame counter. The frame counter gets reset to zero at 0x3fff making it error prone.
  • arch/arm/src/stm32/stm32f20xx_rcc.c and stm32f40xx_rcc.c: Added option CONFIG_STM32_FLASH_PREFETCH. FLASH prefetch will now only be enabled if this option is selected.
  • confgs/ez80f910200zco/ostest: Now uses Kconfig/mconf configuration tool. Updated to build in native Windows environment. Other ez80f910200zco build scripts also updated.
  • configs/z8f64200100kit/ostest: Update to same level as ez80 configurations.
  • nuttx/configs/z8f64200100kit/scripts/setenv.bat: Add support for native Windows build.
  • nuttx/arch/arm/src/lpc17xx/lpc17_i2c.c: Resources not being released when I2C is uninitialized.
  • cloudctrl/src/up_chipid.c and shenzhou/src/up_chipid.c: Add functions to get chip ID. Contributed by Darcy Gong. These should not be board-dependent, but should be in arch/arm/src/stm32 where they can be used from any board.
  • sched/work_thread.c: Fix backward conditional compilation. This might has caused a memory leak. From Freddie Chopin.
  • configs//Make.defs: Fix typo -wstrict-prototypes should be -Wstrict-prototypes (From Denis Carilki).
  • arch/arm/src/calapyso/calypso_keypad.c: Add Calypso keypad driver. From Denis Carilki.
  • z8encore000zco/ostest and z8f64200100kit/ostest: Converted to use Kconfig/mconf configuration tool.
  • arch/arm/src/armv7-m/up_exception.S: Missing curly braces for push/pop. From Freddie Chopin.
  • z8encore000zco/ostest and z8f64200100kit/ostest: Can now be modified to support the Windows native builds (see corresponding README.txt files).
  • configs/z16f2800100zcog: All configurations updated to use the ZDS-II 5.0.1 toolchain.
  • *configs/z16f2800100zcog - All configurations updated to useKconfig/mconf` configuration tools.
  • configs/z16f2800100zcog/ostest: Now supports a native Windows build (other ZNEO configs may also support the native build, but this has not been verfiied).
  • include/nuttx/input/keypad.h, arch/arm/src/calypso/calypso_keypad.c, and configs/compal_e99/nsh_highram: First cut at a standard keypad interface definition. Contributed by Denis Carikli.
  • libc/stdlib/lib_rand.c: Always add one to result congruential generators to avoid the value zero. Suggested by Freddie Chopin.
  • tools/b16.c: Fixed precision math conversion utility.
  • graphics/nxglib/nxglib_splitline.c: Fix the "fat, flat line bug"
  • arch/z80/src/*/Toolchain.defs: Add dummy Toolchain.defs files for the z80 family.
  • configs/z80sim/ostest: Converted to build with the Kconfig/mconf tool. Current configuration failed to build for me (Ubuntu 12.10, SDCC 3.2.0 pre-built for Linux) due to a glibc memory corruptionerror in SDCC.
  • configs/z80sim/ostest: Default is now the Windows native build. See configs/z80sim/README.txt for instructions to convert back to a Linux or Cygwin build.
  • arch/z80/src/Makefile.sdccw: Renamed makefiles with extensions zdiil, zdiiw, sdccl, and sdccw for the ZDS-II vs SDCC compilers and for the POSIX vs Windows native builds.
  • nuttx/drivers/mtd/ftl.c: Fix for the flash translation layer. Short unaligned writes were buggy. From Petteri Aimonen.
  • nuttx/libc/math/lib_round*.c: Add rounding functions to the math library. Contributed by Petteri Aimonen.
  • include/cxx/cstdlib: Add stroul(). From Petteri Aimonen.
  • arch/*/include/limits.h: Change signed minimum values from, for example, (-128) to (-127 - 1) to avoid overflows under certain conditions. From Peterri Aimonen.
  • graphics/nxtk/nxtk_subwindowmove.c: Previously it was very difficult to do e.g. "scroll by dx, dy". When given the full window area, nxtk_subwindowmove() would clip the offset always to 0,0. It makes more sense for it to clip the source area and not modify the offset. From Petteri Aimonen.
  • graphics/nxtk/nxtk_getwindow.c: Clipping would change the offset of returned data, and caller has no way to know what the new offset would be. This messes up font drawing when the text is partially out of window, e.g. when scrolling. Also from Petteri Aimonen.
  • include/stdbool.h: Can now be disabled for C++ files if CONFIG_C99_BOOL8 is defined. CONFIG_C99_BOOL8 indicates (1) that the sizeof(_Bool) is one in both C and C++, and (2) tat the C compiler is C99 and supports the _Bool intrinsic type. Requested by Freddie Chopin.
  • include/stdlib/lib_rand.c: Various additional changes so that the integer value zero can be returned. Requested by Freddie Chopin.
  • arch/z80/src/Makefile.sdcc*, z80/up_mem.h: Redesign Z80 build so that it no longer depends on Bash scripts.
  • configs/z80sim/nsh and pashello: Converted to (1) use the kconfig-frontends configuration tool, and (2) to build natively under Windows. The NSH configuration is verified; the pashello configuration needs a more TLC.
  • tools/copydir.sh: Rename tools/winlink.sh to tools/copydir.sh
  • tools/link.bat, unlink.bat, and copydir.bat: Add Windows counterparts to the link.sh, unlink.sh, and copydir.sh Bash scripts.
  • configs/z80sim/pashello: Now builds correctly.
  • configs/xtrs/ostest, nsh, and pashello: Converted to (1) use the kconfig-frontends configuration tool, and (2) to build natively under Windows.
  • drivers/serial/Kconfig and sched/Kconfig: Two names for same configuration: CONFIG_LOWLEVEL_CONSOLE is bogus and CONFIG_DEV_LOWCONSOLE is in the wrong Kconfig file. Moved to drivers/serial/Kconfig replacing CONFIG_LOWLEVEL_CONSOLE.
  • arch/z80/include/z180: Add header files for z180 chips. Initial versions are just clones of z80 header files.
  • arch/z80/src/z180: Add source files for z180 chips. Initial versions are just clones of z80 source files.
  • include/nuttx/arch.h: Add address environment control interfaces (for use with CPUs the provide MCUs and support process-like address environments).
  • arch/z80/src/z180/z180_mmu.*: Add MMU support for z180 tasks.
  • configs/p112: Add very basic board support and an examples/ostest configuration for the venerable P112 board.
  • sched/os_bringup.c: If CONFIG_PATH_INITIAL is defined, then the initial environment of the task started by os_bringup() will have the PATH environment variable defined to be that string.
  • binfmt/binfmt_exepath.c: If CONFIG_BINFMT_EXEPATH is defined, then this file will be built. It contains logic to search for regular files at the absolutes paths found in the current PATH environment variable setting. This is untested and not yet hooked into the binfmt exec() logic on initial check-in
  • binfmt/binfmt_loadmodule.c: load_module() will now traverse the PATH variable to locate files from their relative path.
  • include/nuttx/arch.h and arch/z80/src/z180/z180_mmu.c: Restructure the address environment interfaces so that they will better integrate with binfmt/.
  • binfmt/libelf/*, binfmt/libnxflat/* and other files: Integrate the address environment interfaces. If CONFIG_ADDRENV=y, then binfmt/ will now create an address environment for new tasks (instead of just malloc'ing the task memory).
  • configs/stm32f4discovery/elf: Enable support/test of the PATH to find executables using a relative path.
  • apps/examples/ostest/roundrobin.c: Replace large tables with algorithmic prime number generation. This allows the roundrobin test to run on platforms with minimal SRAM (Freddie Chopin).
  • apps/nshlib/nsh_dbgcmds.c: Add hexdump command to dump the contents of a file (or character device) to the console. Contributed by Petteri Aimonen.
  • apps/examples/modbus: Fixes from Freddie Chopin
  • apps/examples/modbus/Kconfig: Kconfig logic for FreeModBus contributed by Freddie Chopin.
  • Makefile, */Makefile: Various fixes for Windows native build. Now uses make foreach loops instead of shell loops.
  • apps/examples/elf/test/*/Makefile: OSX doesn't support install -D, use mkdir -p then install without the -D. From Mike Smith.
  • apps/examples/relays/Makefile: Reduced stack requirement (Darcy Gong).
  • apps/nshlib and apps/netutils/dhcpc: Extend the NSH ifconfig command plus various DHCPC improvements(Darcy Gong).
  • apps/nshlib/nsh_apps.c: Fix compilation errors when CONFIG_NSH_DISABLEBG=y. From Freddie Chopin.
  • Rename CONFIG_PCODE and CONFIG_FICL as CONFIG_INTERPRETERS_PCODE and CONFIG_INTERPRETERS_FICL for consistency with other configuration naming.
  • apps/examples/keypadtest: A keypad test example contributed by Denis Carikli.
  • apps/examples/elf and nxflat: If CONFIG_BINFMT_EXEPATH is defined, these tests will now use a relative path to the program and expect the binfmt/ logic to find the absolute path to the program using the PATH variable.

What is new in version 6.23:

  • New features and extended functionality:
  • RTOS: If both atexit() and on_exit() are enabled, use on_exit() to implement atexit(). Updates for RGMP 4.0.
  • Binfmt: Add support for loading and executing ELF binary modules from a file system.
  • Drivers: Maxim MAX11802 touchscreen controller (Petteri Aimonen)
  • STM32 Driver: Implementation of /dev/random using the STM32 Random Number Generator (RNG).
  • STM32 Boards: ADC support for the Shenzhou IV board. Relay support for the Shenzhou IV board (both by Darcy Gong).
  • C++ Standard Library: Support is now included for the add-on uClibc++ C++ standard library support. This includes support for iostreams, strings, STL, RTTI, exceptions -- the complete C++ environment. uClibc++ is provided as a separate add-on package due to licensing issues. Contributed by Qiang Yu and David of the RGMP team.
  • Add support for __cxa_atexit().
  • C Standard Library:Optimized generic and ARM-specific memcpy() function.Optimized memset() function.Add support for ferror()), feof()), and clearerror()).
  • Standard Math Library:Port of the math library from Rhombus OS by Nick Johnson (Darcy Gong).
  • Applications:
  • New NSH commands: ifup, ifdown, urlencode, urldecode, base64enc, bas64dec, and md5 (Darcy Gong). Extensions to the ifconfig command (Darcy Gong), Add support for NSH telnet login (Darcy Gong). Enancements to NSH ping command to support pinging hosts with very long round-trip times.
  • Many extensions to the webclient/wget and DNS resolver logic from Darcy Gong. SON, Base64, URL encoding, and MD5 libraries contributed by Darcy Gong.
  • New examples: ELF loader, JSON, wgetjson, cxxtest, relays.
  • Bugfixes:
  • Drivers: W25 SPI FLASH
  • STM32 Drivers: ADC reset
  • Fraphics: Missing implementation of the blocked method (critical, Petteri Aimonen).
  • C Library: Floating point numbers in printf and related formatting functions (Mike Smith),

What is new in version 6.22:

  • New features and extended functionality:
  • RTOS: Application entry point is no longer user_start, but can be configured using CONFIG_USER_ENTRYPOINT. NuttX now supports two work queues: A lower priority work queue (for extended processing) and a higher priority work queue (for quick, high priority operations).
  • Memory Management: Added a new granule-based allocated that can be used to manage, aligned and quantized DMA memory.
  • File System: Add hooks to allocate I/O memory with and external allocated (need if required by DMA).
  • Networking: ENC28J60 driver is (finally) verified.
  • Drivers: Add hooks USB device drivers to allocate I/O memory with and external allocated (need if required by DMA). Driver for the Windbond SPI FLASH family (W25x16, W25x32, W25x64, and others). ADS7843E driver extended for TSC2046 and XPT2046 and verified.
  • ARMv7-M: Added logic to reset the MCU using the NVIC.
  • STM32: Add support for STM32F103VET6.
  • STM32 Drivers: Add logic to re-initialize UARTs a second time in order to enable DMA (Mike Smith). I2C driver error recovery (Mike Smith).
  • STM32 boards: Support for USB host added add to several configurations (or at least explained in README files). Support for the Shenzhou STM32F107 board (see www.armjishu.com). Support for M3 Wildfire STM32F103 board (v2 and v3).
  • Build System: Kconfig string de-quoting logic. Remove comments from defconfig files (Kate). Add tool to create NuttX-style symbol tables. Numerous changes to configuration logic as needed for the new mconf-based configuration (much of this from Richard Cochran). Refactor common Make.defs logic into tools/Config.mk (Richard Cochran). Entry point name is now configurable. Make now supports a verbose option (V=1, Richard Cochran).
  • NOTE: This change does introduce a minor backward incompatibility. For example, if your application uses NSH as its start-up program, then your build will now fail because it will be unable to find user_start. The fix for this link failure is to add the following to your configuration file: CONFIG_USER_ENTRYPOINT="nsh_main".
  • Library: Configurable terse output from strerror(). Added perror() (Kate). Add \%n format to sscanf() (Kate).
  • Applications: Numerous changes and extensions to the old uIP web server (from Kate and Max Holtzberg, see the ChangeLog for specific extensions). UDP network discovery utility (Max Holtzberg). Embeddable Lightweight XML-RPC Server (http://www.drdobbs.com/web-development/an-embeddable-lightweight-xml-rpc-server/184405364, Max Holtzberg).
  • Bugfixes (see the change log for details). Some of these are very important (marked critical):
  • RTOS: Fixes to priority inheritance logic (critical). waitpid() critical section. Assertion in work_cancel() (Mike Smith). mmap() (Kate).
  • FAT File System: Improper Boolean expression caused un-necessary writes and performance issues (critical, Ronen Vainish).
  • Networking: Remove an un-necessary delay from recvfrom(). This greatly improves network performance (critical, Max Holtzberg).
  • Graphics: NX parameter checking errors.
  • Drivers: Fix double release of memory in SDIO-based, MMC/SD driver (Ronen Vainish).
  • LPC17xx: Ethernet driver fixes needed for certain PHYs (Kate).
  • AVR: Fix build error (Richard Cochran).
  • STM32: USB OTG FS host driver NAKing an retries. Power management compilation errors (Diego Sanchez). Missing SPI3 remap logic.
  • STM32 Drivers: Fix for Ethernet errata for STM32F107 (critical). Ethernet buffer alignment check. Add "kludge" to Ethernet driver to handle DM9161 PHY which (at least on the Shenzhou board), sometimes does not come up correctly.
  • Applications: THTTPD (Kate). NSH ping when IP address is on a different network (Darcy Gong).
  • Library: fread(), fflush(), fdopen(): Fix error handling logic (Ronen Vainish). Fix some field-width handling issues in sscanf()

What is new in version 6.20:

  • This version includes continued progress for the NuttX power management demo and has new support for the Microchip PIC32MX1/2 families (and the "Mirtoo" modules from Dimitech) and for the entire NXP LPC43xx line (and the LPC4330-Xplorer board from NGX Technologies).
  • Board support for the TI/Stellaris EKK-LM3S9B96 is also included.

What is new in version 6.19:

  • This version features NFS client support.
  • This will allow the tiniest of MCUs to connect to an NFS server and have access to a large network filesystem.
  • Additional changes include complete support for the Mikroelektronkia PIC32MX7 MMB board.

What is new in version 6.17:

  • This version includes support for the Calypso CPU used by the Osmocom-bb project, adds NxConsole (which allows execution of multiple NSH sessions in different NX graphics windows), and extends support for the STMicro STM32 and Microchip PIC32 platforms.

What is new in version 6.15:

  • This version features a new FTP server, a new encapsulation of Telnet so that a Telnet session can serve as a "controlling terminal", and a new SYSLOGging infrastructure.
  • In addition to these headlines, there are also driver extensions (CAN, PWM, Ethernet).

What is new in version 6.13:

  • This version includes the completed port for the Microchip PIC32MX family.
  • It also includes many new drivers for the STMicro STM32 family (Ethernet, ADC, DAC, PWM, and CAN) and corrects two critical bugs.

What is new in version 6.12:

  • STM32. Basic support added for the STM32 F4 family. Board support verified for
  • the STMicro STM3250G-EVAL board.
  • FAT. Enhanced partition handling.
  • SDIO-Based SD Card support. Add support for large (>4Gb) devices
  • NX Graphics. Added four new small sans serif fonts.
  • Drivers. Fix a banding problem with the R61580 LCD.
  • Bugfixes, order roughly on decreasing criticality include:
  • FAT. Fix errors in how the first entries in the root directory are added. Fix
  • errors in FAT date/time handling.
  • Signals. Fix bug in certain sig_timedwait() error handling.
  • Drivers. Fix cloned errors in poll() handling in several drivers.
  • Message Queues. errno was not being set correctly by mq_notify().
  • C Library. wchar_t is a built-in type for C++

What is new in version 6.10:

  • This version adds support for a CDC ACM serial USB device and support for various touchscreen devices.
  • However, the most important changes in this release are some critical bugfixes against the FAT filesystem and message queues.

What is new in version 6.9:

  • This version adds infrastructure to support Power Management for controlling reduced power states and for DAC drivers.
  • It has a new I2C tool application plus several new drivers and some important bugfixes.

What is new in version 6.8:

  • This version adds initial support for the FreeScale Kinetis parts (Cortex-M3), expands CAN support, and introduces a new ADC infrastructure.
  • Several bugs were fixed, including a critical bug related to signal handling.

What is new in version 6.7:

  • This version has support for VFAT long file names and many extensions to the graphics sub-system.
  • Additional new features and bugfixes are detailed in the ChangeLog.

What is new in version 6.6:

  • This is primarily a bugfix release, but also includes some minor feature additions.
  • Most of the work was focused on the NX graphics subsystem and on the STM3210E-EVAL development board.

What is new in version 6.5:

  • This version adds initial support for some members of the AVR 8-bit MCU family, including ATMega and AT90USB parts.

What is new in version 6.4:

  • This version adds several new features and has some bugfixes.
  • Major new features include support for a full-featured FTP client, PIC32 support, and support for new wireless and network devices.

What is new in version 6.1:

  • The primary purpose of this release is to correct certain build-related problems introduced in 6.0.
  • In addition, this release includes support for building a standalone NuttX micro-kernel and new MCU drivers and capabilities.

What is new in version 6.0:

  • lib/lib_fopen() -- fopen() was not returning the correct errno value when the
  • underlying open() failed.
  • include/net/uip/uip-arch.h -- The uIP interface has been extended slightly so that
  • drivers can be concurrenly filling and sending packet buffers. This capability was
  • needed by the SLIP driver.
  • drivers/net/slip.c -- Several corrections and some re-design of of the driver.
  • apps/ChangeLog.txt -- the apps/ directory now has its own ChangeLog.
  • configs/vsn:
  • IDLE LED blinking fix
  • Added board power off function
  • arch/arm/src/stm32/stm32_gpio.c and stm32_internal.h -- Fixed PullUp/Down Input
  • Configuration.
  • arch/arm/src/lpc17xx/lpc17_serial.h -- Now supports Auto-RTS and Auto-CTS
  • modes. This is needed to support SLIP.
  • drivers/net/slip.c -- SLIP is now basically functional on the LPC17xx with some
  • caveats as described in the TODO list under LPC17xx.
  • arch/x86/include/i486/irq.h -- Fix irqrestore() macro... it was not correctly
  • re-enabling interrupts.
  • arch/x86/src - Fix numerous problems with i486/QEMU context switching. Basically,
  • the logic was missing the cases to handle the differing stack frames when a priority
  • change occurs and when no priority change occurs.
  • configs/qemu-i486/ostest and nsh -- The QEMU i486 port is complete. it now passes
  • the OS test and supports the NuttShell (NSH).
  • misc/drivers -- Created a new directory to hold non-BSD licensed drivers that may be
  • added into NuttX via an installation script.
  • drivers/usbhost/usbhost_rtl8187.c -- A decision was made to incorporate code
  • taken from the Linux kernel. That changes the licensing on this module to GPL. To avoid
  • licensing contamination, this driver was moved to misc/drivers/rtl8187x prior to
  • adding any of the GPL logic. There is an INSTALL.sh script at the location where the GPL
  • driver(s) can be re-installed into the NuttX source tree. By re-installing the driver, you
  • agree to the GPL licsensing and all of its implications.
  • Makefile, apps/Makefile, tools/configure.sh -- add logic to copy configs/
  • //appdir to apps/.config and to simply the application configuration logic.
  • examples/nsh and apps/nshlib - Move the core NuttShell (NSH) logic out of the
  • exemples directory and into the apps/ directory where it belongs.
  • apps/Makefile and configs/*/appconfig - Use '=' as the delimiter instead of '/' so
  • that sub-directories in apps/ can be used.
  • apps/vsn - Move all VSN apps to apps/vsn.
  • nuttx/examples moved to apps/examples.

What is new in version 5.20:

  • lib/lib_fopen() -- fopen() was not returning the correct errno value when the underlying open() failed.
  • include/net/uip/uip-arch.h -- The uIP interface has been extended slightly so that drivers can be concurrenly filling and sending packet buffers. This capability was needed by the SLIP driver.
  • drivers/net/slip.c -- Several corrections and some re-design of of the driver.
  • apps/ChangeLog.txt -- the apps/ directory now has its own ChangeLog.
  • configs/vsn:
  • IDLE LED blinking fix
  • Added board power off function
  • arch/arm/src/stm32/stm32_gpio.c and stm32_internal.h -- Fixed
  • PullUp/Down Input Configuration.
  • arch/arm/src/lpc17xx/lpc17_serial.h -- Now supports Auto-RTS and
  • Auto-CTS modes. This is needed to support SLIP.
  • drivers/net/slip.c -- SLIP is now basically functional on the
  • LPC17xx with some caveats as described in the TODO list under LPC17xx.
  • arch/x86/include/i486/irq.h -- Fix irqrestore() macro... it was not correctly re-enabling interrupts.
  • arch/x86/src - Fix numerous problems with i486/QEMU context switching. Basically, the logic was missing the cases to handle the differing stack frames when a priority change occurs and when no priority change occurs.
  • configs/qemu-i486/ostest and nsh -- The QEMU i486 port is complete. It now passes the OS test and supports the NuttShell (NSH).
  • misc/drivers -- Created a new directory to hold non-BSD licensed drivers that may be added into NuttX via an installation script.
  • drivers/usbhost/usbhost_rtl8187.c -- A decision was made to incorporate code taken from the Linux kernel. That changes the licensing on this module to GPL. To avoid licensing contamination, this driver was moved to misc/drivers/rtl8187x *prior* to adding and of the GPL log. There is an INSTALL.sh script at the location where the GPL driver(s) can be re-installed into the NuttX source tree. By re-installing the driver, you agree to the GPL licsensing and all of its implications.
  • Makefile, apps/Makefile, tools/configure.sh -- add logic to copy configs///appdir to apps/.config and to simply the application configuration logic.
  • examples/nsh and apps/nshlib - Move the core NuttShell (NSH) logic out of the exemples directory and into the apps/directory where it belongs.
  • apps/Makefile and configs/*/appconfig - Use '=' as the delimiter instead of '/' so that sub-directories in apps/ can be used.
  • apps/vsn - Move all VSN apps to apps/vsn.
  • nuttx/examples moved to apps/examples

What is new in version 5.19:

  • This version includes the beginnings of many new features including an Intel 486SX QEMU port, a new framework for application support, SLIP network support, and numerous other minor feature enhancements and bugfixes.

What is new in version 5.17:

  • This release extends the USB host features.
  • These extensions include low-speed device support and interrupt endpoint support.
  • A USB host HID keyboard class driver is also included.

What is new in version 5.16:

  • This version adds initial support for USB hosts.
  • An LPC176x OHCI host controller driver and a USB host mass storage driver are included.

What is new in version 5.15:

  • This version extends support for the NXP LPC176x by adding a USB device driver and support for SPI-based micro-SD cards.
  • Additionally, important bugfixes are also included in this release.

What is new in version 5.14:

  • configs/olimex-lpc1766stk/nettest - Add examples/nettest configuration to verify the LPC17xx ethernet driver currently under development.
  • arch/arm/src/lpc17xx/lpc17xx_ethernet.c/.h - Began development of the LPC17xx Ethernet driver. Driver in CVS functional after 2010-11-23.
  • sched/timer_settime.c - Fix an error in set-up of a one-shot POSIX timer. It was using the repititive timer value (which is zero in the one-shot case), always resulting in a 10Ms timer! Found and fixed by Wilton Tong.
  • arch/arm/src/lpc17xx/lpc17_vector.S, stm32/stm32_vector.S, lm3s/lm3s_vector.S, sam3u/sam3u_vector.S
  • Fixed a hard fault problem that can occur if certain types of interrupts are pending at the time another interrupt returns (SYSTICK). This has not been verified on all plaforms, but is a critical fixed that is needed by all Cortex-M3 NuttX users.
  • configs/olimex-lpc1766stk/thttpd - Add a THTTPD configuration for the Olimex LPC2766-STK board. Verified successfully.
  • net/uip/uip_tcpappsend.c - Correct an important logic bug in some uIP state data the is used to manage retransmissions. The uIP logic was incompatible
  • with the retransmission logic of net/send.c in one place. The final error was that the final packet in a sequence of packets was too large! In the THTTPD example, this would leave some garbage at the bottom of the display (or worse). I don't know why I haven't see this bug before???
  • net/uip/uip_tcpinput.c -- The change to uip_tcpappsend.c unmasked an additional error in the TCP sequence number handling. This sympom was that the send() function would hang with outstanding, unacknowledged data (with no re-transmit requests). The was due to differences in sequence number handling in send() and in uip_tcpinput.c; uip_tcpinput.c thought (incorrectly) that all of the bytes were acknowledged; send.c knew that they were not.

What is new in version 5.13:

  • lib/lib_strnlen.c -- Added POSIX 2008 strnlen() function. Contributed
  • by Michael Hrabanek.
  • Fix wild, consistent naming error. For some reason, I called the at32uc3 parts at91uc* everywhere. Fixed by changing lots of files and directories.
  • configs/avr32dev1/ostest - The AVR32 port now successfully passes the
  • examples/ostest. We have a good AVR32 port!
  • configs/avr32dev1/nsh - Added a configuration to support the NuttShell
  • (NSH). As of this writing, here is a problem receiving serial data (this
  • is, very likely, my hardware setup).
  • lib/lib_open.c - Fix an error in fdopen when a valid file desciptor does
  • not refer to an open file.
  • configs/olimex-lpc1766stk - Add support for the Olimex LPC1766-STK
  • development board. The OS test and NSH configurations (only) have been
  • verified.

What is new in version 5.12:

  • This version corrects an important bug in the signal trampoline logic.
  • Essentially, an interrupt was left enabled and, under certain conditions, stack corruption could occur.
  • This release also includes a full port for the AVR32 UC3.
  • This port, however, is not fully tested because of the need to get the critical bugfix out.

What is new in version 5.11:

  • Added new configuration item CONFIG_PAGING_BINPATH. If CONFIG_PAGING_BINPATH is defined, then it is the full path to a file on a mounted file system that contains a binary image of the NuttX executable.
  • Pages will be filled by reading from offsets into this file that correspond to virtual fault addresses. up_fillpage.c implements logic to perform page files using the CONFIG_PAGING_BINPATH file.
  • configs/mbed - Add configuration to support the mbed.org LPC1768 board (Contributed by Dave Marples).
  • sched/sem_wait.c and sem_waitirq.c - Eliminate a race condition that can occur when a semaphore wait is interrupt by a signal. (see email thread: http://tech.groups.yahoo.com/group/nuttx/message/530)
  • drivers/mtd/at45db.c - Add a driver for the Atmel AT45DB161D 4Mbit SPI FLASH part (untested on initial check-in).
  • arch/arm/src/lm3s and arch/arm/include/lm3s - Corrections for the lm3s8962 port contributed by Larry Arnold. That port is purported to work correctly with these changes in place.
  • examples/ostest/prioinherit.c - Need to reinitialize globals if test is ran repeatedly in a loop.
  • configs/ez80f910200zco - Updated to used ZDS-II 4.11.1

What is new in version 5.10:

  • This version adds support for the TI/Luminary LM3S9B96 and LM3S8962.
  • The new on-demand paging now passes its first level of testing (more needs to be done).
  • There are several bugfixes.

What is new in version 5.8:

  • configs/nucleus2g/src/up_nsh.c and up_ssp.c - Add support for SPI-based MMC/SD cards and integrate into the NSH example.
  • arch/arm/src/lm3s/lm3s_vectors.S - Correct vectors for GPIOC & D interrupts.
  • arch/arm/src/lpc17xx/lp17_clockconfig.c - Power was not being provided to GPIO module. This is a critical bugfix!
  • arch/arm/src/lpc17xx/lpc17_serial.c - Improved logic to handle missed TX interrupts.
  • arch/arm/src/lpc17xx/lpc17_ssp.c - Fix a hard fault during SSP initialization.
  • configs/nucleus2g/src/up_led.c - Change how LEDs are controlled so that they can be used both for NuttX instrumentation and by application software.
  • include/net/uip/igmp.h and uip-igmp.h - Add header files ini preparation for NuttX IGMP support
  • net/uip/uip_igmp*.c - Add IGMP support (untested on initial checkin).
  • examples/igmp - Add a trivial test for IGMP (much more is needed)
  • configs/nucleus2g/usbserial and usbstorage - Add USB configurations for testing purposes.
  • arch/arm/src/common/up_internal.h, cortexm3/up_assert.c, */*_vectors.S - Correct compilations errors when CONFIG_ARCH_INTERRUPTSTACK is enabled (feature still not tested)

What is new in version 5.7:

  • configs/nucleus2g - Add ostest configuration for the Nucleus 2G LPC1768 board from 2G Engineering (http://www.2g-eng.com/)
  • arch/arm/src/lpc17xx - Added basic LPC17xx boot-up logic, interrupt handling, and GPIO configuration.
  • configs/nucleus2g/ostest - Completed bring-up of LPC1768 on the Nucleus2G board using the examples/ostest
  • configs/nucleus2g/nsh - Added and verified a NuttShell (NSH) configuration for the LPC1768 on the Nucleus2G board.

What is new in version 5.3:

  • This release suport for one new achitecture:
  • A basic port for the NXP LPC2378 MCU on the Olimex-LPC2378 development board was contributed by Rommel Marcelo.
  • And extensions to two existing architures:
  • David Hewson contributed a dual-speed (full/high) USB device-side driver for the NXP LPC3131 on the Embedded Artists EA3131 development board.
  • A DMA driver and a high speed MCI driver for the Atmel AT91SAM3U are included (but not fully tested in this release).
  • Two important bugfix was also included:
  • An important fix to the USB mass storage driver was contributed by David Hewson.
  • A serious error in the AT91SAM3U PIO handling was fixed.

What is new in version 5.2:

  • Add an enumeration argument to the SPI chip select and status methods so
  • 687 that the interface can handle more than one device.
  • 688 eZ80Acclaim!: Add a generic SPI driver for all eZ80 boards.
  • 689 Add a setmode() method to the SPI interface to handle parts with differing
  • 690 mode requirements.
  • 691 include/nuttx/i2c.h: Defined a standard I2C interface
  • 692 eZ80Acclaim!: Add an I2C driver.
  • 693 eZ8Encore!: Add an I2C driver.
  • 694 Add support for the Freescale i.MX1/L architecture and a configuration for
  • 695 the Freescale MX1ADS development board.
  • 696 examples/helloxx: Added a simple C++ hello world example
  • 697 include/css: Added std header files
  • 698 libxx: New C++-only directory provides support for minimal C++ applications
  • 699
  • 700 0.4.6 2009-05-19 Gregory Nutt
  • 701
  • 702 Change SPI interface so that is can accomodate interfaces where the
  • 703 number of bits per word is greater an 8 (such as with many 9-bit display
  • 704 interfaces). -- this might have broken a few things which will need to
  • 705 be retested!
  • 706 arch/arm/src/imx: Added i.MX SPI driver
  • 707 SPI: Add a method to set the number of bits per word. Also add an
  • 708 alternative interface for so that (eventually) I can phase the sndblock
  • 709 and recvblock methods and replace them with a single exchange method
  • 710 Build: objcopy fails with toolchains that use newer GCC and binutils. The
  • 711 following arguments need to be included in the objcopy command line "-R .note
  • 712 -R .note.gnu.build-id -R .comment" This has bin fixed in arch/arm/src/Makefile,
  • 713 but other architectures may have the same problem. Thanks to Dave Marples
  • 714 for verifying this.
  • 715 configs/eagle100/ostest: Added support for the MicroMint Eagle100 board.
  • 716 This board has a Luminary LM3S6918 Cortex-M3. Added a configuration to build
  • 717 examples/ostest.
  • 718 arch/arm/src/lpc214x: Add configuration option to enable fast GPIO (vs.
  • 719 legacy, "slow" GPIO) for LPC214x.
  • 720 arch/arm: Restructured the arch/arm directory structure to better suppor ARM
  • 721 and Cortex-M3.
  • 722 sched/: pthread_create() must return a (non-negated) errno value on failure.
  • 723 configs/eagle100/nsh: Add a NuttShell (NSH) configuration for the Eagle-100
  • 724
  • 725 0.4.7 2009-05-29 Gregory Nutt
  • 726
  • 727 arch/arm/src/lm3s: Added an Ethernet driver for the LM3S6918
  • 728 configs/eagle100/nettest: Added an examples/nettest configuration for the
  • 729 Micromint Eagle100 board.
  • 730 Documentation/NuttxPortingGuide.html: Added a section on NuttX device drivers.
  • 731 configs/eagle100/httpd: Added an examples/uip configuration for the
  • 732 Micromint Eagle100 board.
  • 733 arch/arm/src/lm3s: Added an SSI driver for the LM3S6918
  • 734 examples/nsh: Added MMC/SD support for the LM3S6918
  • 735 arch/arm/src/lm3s: Fix logic for setting and clearing output GPIOs (critical
  • 736 fix!).
  • 737 drivers/mmcsd: Found numerous errors in current MMC/SD SPI driver. Bad frequency
  • 738 calculation based on CSD settings, inappropriate timeouts, odd code that looks like
  • 739 a bad search and replace. Also needs support for SDHC ver 2.x. New MMC/SD is
  • 740 largely redesigned and probably non-functional in the first check-in.
  • 741 drivers/mmcsd: Changes verified on 4Gb Kingston microSHDC card and on a 2Gb
  • 742 SanDisk microSDC card on the Eagle100 platform.
  • 743 fs/fat: With the 4Gb card, the first tests of FAT32 were (finally) performed.
  • 744 Found and corrected a problem that prevented use of FAT32: It was not updating
  • 745 the sector cache before checking the FAT32 FSINFO sector.
  • 746 configs/eagle100/*/Make.defs: Added configuration options that should make
  • 747 it possible to build NuttX for the Eagle100 using CodeSourcery 2009q1 toolchain
  • 748 and the devkitARM GNU toolchain.
  • 749 configs/mcu123-lpc214x/src: Corrected some logic in the LPC2148 SPI receive block
  • 750 logic. Re-verified SDC ver1.x support with 1Gb Toshiba SDC, 1Gb PNY SDC, and
  • 751 4Gb Kingston SDHC. There are CMD0 issues with the 2Gb SanDisk SDC on this board.
  • 752 fs/fs_mount.c: Corrected error handling that could cause a deadlock on certain
  • 753 mount() failures.
  • 754
  • 755 0.4.8 2009-06-13 Gregory Nutt
  • 756
  • 757 lib/lib_*stream.c: Extend internal stream logic to support incoming streams.
  • 758 arch/arm/src/str71x: Serial output is now correct and timer interrupts are
  • 759 working. The test at configs/olimex-strp711/ostest passes. This means that
  • 760 the basic STR-P711 port is complete.
  • 761 configs/olimex-strp711/nsh: Add and verifed a NuttShell (NSH) configuration
  • 762 for the STR-P711.
  • 763 arch/arm/str71x/str71x_serial.c: The STR711 interrupt driven serial driver
  • 764 finally works after some extradinary measures to handle missed interrupts.
  • 765 NSH is fully functional on the Olimex STR-P711 board.
  • 766 example/nsh: Moved architecture specific files from NSH directory to board-
  • 767 specific directories.
  • 768 config/olimex-strp711/src/up_nsh.c: Add an NSH board specific directory for
  • 769 for the Olimex STR7P11 board.
  • 770 Fixed build of LM3X6918 using the CodeSourcery Windows native toolchain. There
  • 771 were lots of issues with Cygwin paths and Cygwin symbolic links. These changes
  • 772 may work with the devarmKIT as well, but that remains untested.
  • 773 The NXP LPC2148 and STR711 targets can now also be built using the CodeSourcery
  • 774 or devkitARM Windows native toolchains.
  • 775
  • 776 0.4.9 2009-06-26 Gregory Nutt
  • 777
  • 778 Add strtoll() and strtoull(); Add macros for atol() and atoll().
  • 779 dup() and dup2() will now clone socket descriptors
  • 780 All socket descriptors ar now cloned when when a new task is started
  • 781 via task_create().
  • 782 Add configuration options to suppress or eliminate cloning of file
  • 783 and/or socket descriptors when a new task is started by task_create():
  • 784 CONFIG_FDCLONE_DISABLE, CONFIG_FDCLONE_STDIO, CONFIG_SDCLONE_DISABLE.
  • 785 Use of C++ reserved word 'private' in C header files causes problems
  • 786 for C++ that include them.
  • 787 Added 'binfmt' support to allow execution of programs in a file system,
  • 788 binding to NuttX symbols. A custom format call NXFLAT is used; this
  • 789 derives from http://xflat.sourceforge.net. At present is supports on
  • 790 XIP execution from ROMFS file systems. Initial check-in is untested
  • 791 and probably breaks many builds.
  • 792 examples/lib: Added qsort()
  • 793 examples/nxflat: Added support for symbol tables
  • 794 Correct logic that creates compiler include paths. On Cygwin, the
  • 795 include paths for Cygwin-based GCC were being converted to windows
  • 796 native paths. That causes many problems -- breaking dependencies
  • 797 for one.
  • 798 Fixed an important bug in ROMFS. The initial XIP offset was set
  • 799 incorrectly so if sector zero was read first, there was a bad read.
  • 800 I don't know how it worked before.
  • 801 arch/arm/src/common/up_use_stack.c. Fixed a fatal stack setup error.
  • 802 This file has been around for a long time, but I don't think it has
  • 803 every been used before (i.e., prior to the NXFLAT logic)
  • 804
  • 805 0.4.10 2009-08-08 Gregory Nutt
  • 806
  • 807 lib/: Added some basic regex-subset, pattern matching functions
  • 808 lib/: Greatly simplified mktime() and gmtime_r(). The Gregorian and
  • 809 Julian time calculations were interesting, but not necessary in the
  • 810 typical embeddd system.
  • 811 sched/: Added gettimeofday(). This implementation is simply a thin
  • 812 wrapper around clock_gettimer().
  • 813 lib/: Add gmtime(), localtime(), and strftime()
  • 814 binfmt/: Add exec(). This is just a wrapper that executes both
  • 815 load_ and exec_module() in a more familiar manner. It is not consistent
  • 816 with more standard exec() functions, however, because (1) it returns
  • 817 and (2) it requires symbol table arguments.
  • 818 lib/: Add fileno()
  • 819 examples/ostest: Several of the tests used a big, hard-coded stack size
  • 820 when creating test threads (16Kb stacksize). The stack size should
  • 821 be controlled by the .config file or the OSTest won't work on platforms
  • 822 with memory constraints.
  • 823 netutils/thttpd: An initial port of Jeff Poskanzer's THTTPD HTTP server.
  • 824 See http://acme.com/software/thttpd/.
  • 825 examples/thttpd: A basic test program for THTTPD
  • 826 configs/eagle100/thttpd: A build configuration for THTTPD on the Micromint
  • 827 Eagle-100 LMS6918 (Cortex-M3) board.
  • 828 configs/ntosd-dm320/thttpd: A build configuration for THTTPD on the Neuros
  • 829 DM320 platform.
  • 830 lib/: Added strstr() and strpbrk().
  • 831 net/recvfrom.c and net/accept(): Sockets now support some non-blocking
  • 832 operations, specifically for (1) TCP/IP read operations when read-ahead
  • 833 buffering is enabled, and (2) TCP/IP accept() operations when TCP/IP
  • 834 connection backlog is enabled.
  • 835 fs/fs_fcntl.c and net/net_vfcntl.c: Minimal support provided for fcntl().
  • 836 It can, at least, be used to mark sockets as blocking or non-blocking.
  • 837 net/net_close.c: Fix bug in close(). If reference count not set to zero
  • 838 then uip_tcpfree() will assert when DEBUG is enabled.
  • 839 net/accept.c: Fix bug in accept(). The logic expected parts of the
  • 840 return address structure to be initialized or it would return an error.
  • 841
  • 842 0.4.11 2009-09-16 Gregory Nutt
  • 843
  • 844 fs/fs_read.c and fs/fs_write.c. read() and write() to socket is the
  • 845 same as recv() and send() with flags = 0. Fixed!
  • 846 net/recvfrom.c: Fix errors in return value from non-blocking socket read.
  • 847 lib/lib_strcasecmp.c and lib/lib_strncasecmp.c. Use of post-incremented
  • 848 argument to macro caused strcasecmp() and strncasecmp() to fail.
  • 849 lib/lib_strstr.c: Length of substring off by one causes false alarm
  • 850 sub-string matches.
  • 851 arch/arm/src/lm3s/lm3s_ethernet.c: Fix errors in LMS6918 FIFO length
  • 852 handling. (1) The incorrect size of the ethernet header was being
  • 853 subtracted on outgoing messages (4 vs 14), which caused outgoing messages to
  • 854 be a little too long. (2) The size of incoming FIFO messages is 6 bytes
  • 855 larger than it expected (2 for the length and 4 for the FCS). The unhandled
  • 856 extra two bytes of length cause the driver to sometimes read one too many
  • 857 words from the received FIFO (corrupting the next queued receive packet,
  • 858 if any).
  • 859 net/net_poll.c and net/uip/uip_tcpbacklog.c. Fixed an important race condition
  • 860 bug in polling for connections. The logic worked if the poll was inplace
  • 861 before the connection was received; but the poll failed to awaken if the
  • 862 connection was already pending in the backlog when poll() was called.
  • 863 net/net_close.c. Fixed another important TCP/IP race condition bug: If
  • 864 the host closes the TCP connection just before the target calls close(), then
  • 865 the close operation may hang indefinitely!
  • 866 net/net_tcppoll.c. Removed an unnecessary check for outstanding, un-ACKed
  • 867 data. The NuttX socket layer keeps track of ACKs and doesn't need this check;
  • 868 removing the check should improve write throughput
  • 869 Add DEBUG configuration option to enable debug console output without disabling
  • 870 optimization (and vice versa)
  • 871 Changed lots of occurrents of debug macro dbg() to lldbg(). dbg() uses
  • 872 stdout to output debug data. That works fine unless (1) the dbg() macro
  • 873 is interrupt logic and the interrupted task has redirected stdout! Most
  • 874 changes were in uIP.
  • 875 net/uip/uip_tcpinput.c. Connection reference count was not being set correctly
  • 876 when a socket is created by accepting a new connection. Since the reference
  • 877 count is bad, such sockets are not successfully duplicated when being passed
  • 878 to new tasks.
  • 879 net/net_clone.c. Similarly, after a socket is cloned, its reference count
  • 880 was not being initialized.
  • 881 lib/lib_strstr.c. Improperly incremented pointer could cause comparison
  • 882 failures.
  • 883 net/. Connection reference count must always be set to zero before calling
  • 884 uip_tcpfree() or it could trigger a DEBUGASSERT that verifies that the
  • 885 reference count is zero before freeing a connection structure.
  • 886 net/uip/uip_listen.c. uip_accept() consulted the wrong list to find the
  • 887 listener on a socket. The previous logic worked most of the time, but
  • 888 occasionally picked the wrong listener.
  • 889 net/net_close.c and net/net_sockets.c. Sockets were not being closed
  • 890 when a task exits. If many server tasks are created and exit without closing
  • 891 sockets (such as with CGI tasks), then eventually, you will run out of sockets.
  • 892 netutils/thttpd. Basic functionality of THTTPD is complete. This includes
  • 893 serving up files from a file system and executing NXFLAT-based CGI programs
  • 894 and pipe the stdout back to the HTTP client.
  • 895
  • 896 0.4.12 2009-10-17 Gregory Nutt
  • 897
  • 898 arch/arm/src/stm32 and configs/stm3210e-eval. Added basic support for the
  • 899 STMicro STM32, Cortex-M3 MCU. The specific port is to the STMicro STM3210E-EVAL
  • 900 development board based around the STM32F103ZET6 MCU.
  • 901 configs/stm3210e-eval/RIDE. Added a basic STMicro RIDE7 project that can be
  • 902 used to perform basic STM32 board bring-up (due to RIDE7 size limitations, it
  • 903 cannot be used for the full NuttX bring-up).
  • 904 configs/stm3210e-eval/ostest. The STM32 now passes the basic NuttX OS test
  • 905 at examples/ostest. The rest should be a piece of cake.
  • 906 configs/stm3210e-eval/nsh. Added NuttShell (NSH) example.
  • 907 configs/stm3210e-eval/src/stm32102e-internal.h. Fix on-board LED GPIO definitions.
  • 908 arch/arm/src/stm32/src/stm32/stm32_dma.c. Added DMA channel support for the STM32
  • 909 arch/arm/src/stm32/src/stm32/stm32_spi.c. Added a DMA-based SPI driver for the STM32.
  • 910 arch/arm/src/stm32/src/stm32/stm32_serial.c. Finished interrupt-drivent,
  • 911 USART console driver. This makes NSH work perfectly.
  • 912 Things left to do for the STM32 deferred to the 0.4.13 release: USB device driver,
  • 913 LCD driver and NX bringup on the eval board's display and MicroSD support. An SPI
  • 914 driver was included in the 0.4.12 release, but is not yet tested.
  • 915
  • 916 0.4.13 2009-11-04 Gregory Nutt
  • 917
  • 918 include/nuttx/mtd.h. Added a simple interface definition to support some
  • 919 FLASH, EEPROM, NVRAM, etc. devices.
  • 920 driver/mtd/m25px.c. Added a driver for SPI based FLASH parts M25P64 and M25P128.
  • 921 configs/stm3210e-eval/usbserial. Add a USB serial configuration for the STM32.
  • 922 Depends on the STM32 USB driver.
  • 923 arch/arm/src/cortexm3/up_switchcontext.S & up_svccall.c. Made an improvement
  • 924 to context switching. There are two types of context switches: interrupt
  • 925 context switches and background/user context switches. This change should
  • 926 improve the performance of those background/user context switches by a factor
  • 927 of about two.
  • 928 arch/arm/src/stm32/ - fix several typos in the serial logic. It turns out
  • 929 that these typose don't make any difference as long as you use only one
  • 930 serial port and all uarts are configured the same. But the typos are bugs
  • 931 waiting to happen in any other configuration.
  • 932 arch/arm/src/stm32/ - You have to configure CTS/RTS function pins for USART
  • 933 2 and USART 3 even if you are not using flow control.
  • 934 arch/arm/src/stm32/stm32_usbdev.c - Added a USB device-side driver for the
  • 935 STM32. NOTE: This is an early release of the USB driver. There is at least
  • 936 one known issue. The examples/usbserial test only executes correctly under
  • 937 certain conditions (see the full bug description in the TODO list).
  • 938 arch/arm/src/stm32/stm32_rcc.c - Fixed an error in clock initialization.
  • 939 On some boards (none of mine), the HSE (high speed external clock) delay
  • 940 loop times out if the optimization level is high. The STM32 then falls
  • 941 back to the HSI (internal clock), and the system clock is too slow by a
  • 942 factor of 11.1%. This was fixed by simply add the volatile storage class
  • 943 to the timeout loop counter
  • 944 arch/arm/src/stm32/stm32_irq.c - Fixed a critical bug in the interrupt
  • 945 control logic. The wrong register was being used for interrupts in a
  • 946 certain range. Worked fine until you try to use an interrupt in that
  • 947 range!
  • 948
  • 949 4.14 2009-12-02 Gregory Nutt
  • 950
  • 951 arch/arm/src/stm32/stm32_gpio.c - Add support for configure an input GPIO
  • 952 to generate an EXTI interrupt.
  • 953 config/stm3210e-eval/src/up_buttons.c - Add support for on-board buttons.
  • 954 include/nuttx/rwbuffer.h -- Add generic support for read-ahead buffering
  • 955 and write buffering that can be used in any block driver.
  • 956 include/nuttx/wqueue.h -- Added a generic worker thread that can used to
  • 957 defer processing from an interrupt to a task.
  • 958 include/nuttx/sdio.h -- Defines a generic SD/SDIO interface can can be
  • 959 bound to a MMC/SD driver to provide SDIO-based MMC/SD support.
  • 960 drivers/mmcsd/mmcsd_sdio.c -- Provides a an SDIO-based MMC/SD driver.
  • 961 arch/arm/src/stm32/stm32_sdio.c -- Provides an STM32 implementation of
  • 962 the SDIO interface defined in include/nuttx/sdio.h.
  • 963 fs/fs_mount.c -- Correct error handling logic. If the bind() method
  • 964 fails, then a reserved node is left in the tree. This causes subsequent
  • 965 attempts to mount at the location to fail (reporting that the node
  • 966 already exists). This is a problem for block drivers for removable
  • 967 media: The bind method could fail repeatedly until media is inserted.
  • 968 arch/arm/src/stm32/chip.h & stm32_dma.c -- Fixed several definitions
  • 969 that can cause compilation errors when DMA2 is enabled.
  • 970 arch/arm/src/stm32/stm32_dma.c - Integrated and debugged STM32 DMA
  • 971 functionality that was added in 0.4.12.
  • 972 configs/stm3210e-eval/usbstorage - Add a configuration to exercise
  • 973 the STM32 with the USB mass storage device class example
  • 974 (examples/usbstorage).
  • 975 configs/mcu123-lpc214x/up_usbstrg - Move LPC-specific code from
  • 976 examples/usbstorage to configs/mcu123-lpc214x.
  • 977 configs/stm321e-eval/up_usbstrg - Add STM32-specific logic for the
  • 978 examples/usbstorage test.
  • 979 arch/arm/src/stm32/stm32_usbdev.c - Fix bugs in STM32 USB device-side
  • 980 driver: (1) Need to disconnect after reset received, (2) Status setup
  • 981 to recover from stall on TX endpoint.
  • 982
  • 983 5.0 2009-12-21 Gregory Nutt
  • 984
  • 985 arch/hc: Adding framework to support m68hc11/12
  • 986 configs/demo9s12ne64: Configuration to support Freescale DEMO9S12NE64
  • 987 development board (MC9S12NE64 m68hcs12 processor).
  • 988 drivers/mtd/ftl.c - A FLASH translation layer (FTL) has been implemented.
  • 989 This layer will convert a FLASH MTD interface into a block driver that
  • 990 can be used with any file system. Good performance of this layer will
  • 991 depend upon functioning write buffer support!
  • 992 NOTE: FTL support is untested as of the initial check-in.
  • 993 Numerous minor changes for m68hc12 to eliminate compilation errors and
  • 994 warnings due to the fact that it uses 16-bit integer types and for casts
  • 995 between uint32 (32-bits) and an mc68hc12 pointer (16-bits).
  • 996 sys/types: Size of off_t and blkcnt_t should not depend on size of
  • 997 int in the architecture; Removed non-standard type STATUS
  • 998 include/ - Added header files stdint.h, stdbool.h, cxx/cstdint, and
  • 999 cxx/cstdbool
  • 1000 Changed ALL references to non-standard fixed-size types (like uint32,
  • 1001 ubyte, etc.) to standard types (like uint32_t, uint8_t, etc.) from
  • 1002 stdint.h. Use type bool and {true, false} from stdbool. This effected
  • 1003 most of the files in the system! Almost all configurations have been
  • 1004 re-built and many have been re-verified in order to get confidence in
  • 1005 these changes.
  • 1006 graphics/ and examples/nx - Fix numerous build errors that have been
  • 1007 introduced lately. NXGL has suffered some bit-rot from not being used
  • 1008 in some of the most recent ports.
  • 1009 The misc/pascal NuttX add-on package has been updated to use the new
  • 1010 standard types from stdint.h and stdbool.h and re-integrated with NuttX.
  • 1011 The released pascal-2.0 will be the first version that contains the
  • 1012 compatible changes.
  • 1013 arch/arm/src/lm3s/lm3s_ethernet.c - Fixed an important bug in the LM3S
  • 1014 ethernet driver: If full packet is received, the packet-too-big check
  • 1015 will fail because it needs to subtract 6 from the packet size (to
  • 1016 account for the 2-byte packet length and the 4-byte packet FCS in the
  • 1017 FIFO).
  • 1018 net/accept.c - Fixed a bad assertion (only happens when debug is enabled).
  • 1019 net/send.c net/uip/uip_tcpseqno.c - Fixed a critical error in the TCP/IP
  • 1020 logic. The NuttX port of uIP imcludes logic to send data ahead without
  • 1021 waiting for ACKs from the recipient; this greatly improves throughput.
  • 1022 However, the packet sequence number was not being updated correctly and,
  • 1023 as a result, packets were not be ACKed by the recipient and transfers
  • 1024 would sometimes stall. This is a very important bug fix (in fact, I
  • 1025 don't understand how TCP/IP worked at all without this fix???)
  • 1026 include/nuttx/arch.h and arch/*/common/up_udelay.c - Change argument
  • 1027 of up_udelay() to type useconds_t to avoid warnings when sizeof(int)
  • 1028 is 16-bits.
  • 1029 drivers/mmcsd/* - Add casts in contant expressions to avoid warnings

What is new in version 5.1:

  • arch/arm/src/lpc313x and arch/arm/include/lpc313x: Added framework to support the NXP LPC3131 MCU
  • Add configs/ea3131. The LPC3131 port for the Embedded Artist EA3131 (LPC3131) is code complete and waiting for me to get hardware in hand.
  • arch/arm/src/sam3u, arch/arm/include/sam3u, and configs/sam3u-ek - Added the basic framework needed to begin a port for the SAM3U-EK development board.
  • confgs/ea3131/tools: Added a tool to create a image suitable for use with the LPC313x bootloader.
  • configs/sam3u-3k/ostest - Completed verification of the basic NuttX OS test for the SAM3U.
  • arch/arm/src/common/up_createstack - stack was always been cleared when it was allocated. This is a good feature for monitoring the stack during debug, but really hurts thread start-up performance. Clearing is now done if CONFIG_DEBUG=y only. Changes was only made for arm, but really should be made for all architectures.

What is new in version 0.4.12:

  • This release adds basic support for the STMicro STM32, Cortex-M3 MCU. The port is to the STMicro STM3210E-EVAL development board based around the STM32F103ZET6 MCU. It is planned to extend this basic STM32 port for the 0.4.13 NuttX release.

What is new in version 0.4.11:

  • This release includes the port of Jeff Poskanzer's THTTPD HTTP server to NuttX.
  • This includes execution of CGI executables.
  • NXFLAT executables on a ROMFS file system are supported.
  • A standard CGI interface is used:
  • Information is pasted to the CGI program via POST commands and via environment variables.
  • CGI socket I/O is redirected to stdin and stdout so that the CGI program only needs to printf() to send its content back to the HTTP client.

What is new in version 0.4.9:

  • Support for a new binary format call NXFLAT that can be used to execute separately linked programs in place in a file system. See http://www.nuttx.org/NuttXNxFlat.html.
  • Several important bugs were files related to networking and ROMFS (see the ChangeLog for a complete list).

What is new in version 0.4.8:

  • Support for the Olimex STRP711 board. That board is based on the STMicro STR711 MCU (ARM7TDMI). Integration is complete on the basic port (boot logic, system time, serial console). Two configurations have been verified: (1) The board boots and passes the OS test with console output visible on UART0, and the NuttShell (NSH) is fully functional with interrupt driven serial console. An SPI driver is available but untested (because the Olimex card slot appears to accept only MMC cards; I have only SD cards). Additional needed: USB and driver, MMC integration.
  • Support for the CodeSourcery and devkitARM Windows-native GNU toolchains. Makefiles have been modified for the LM3S6918, LPC2148, and STR711 to support these toolchains under Cygwin.

What is new in version 0.4.7:

  • arch/arm/src/lm3s: Added an Ethernet driver for the LM3S6918
  • configs/eagle100/nettest: Added an examples/nettest configuration for the Micromint Eagle100 board.
  • Documentation/NuttxPortingGuide.html: Added a section on NuttX device drivers.
  • configs/eagle100/httpd: Added an examples/uip configuration for the Micromint Eagle100 board.
  • arch/arm/src/lm3s: Added an SSI driver for the LM3S6918
  • examples/nsh: Added MMC/SD support for the LM3S6918
  • arch/arm/src/lm3s: Fix logic for setting and clearing output GPIOs (critical fix!).
  • drivers/mmcsd: Found numerous errors in current MMC/SD SPI driver. Bad frequency calculation based on CSD settings, inappropriate timeouts, odd code that looks like a bad search and replace. Also needs support for SDHC ver 2.x. New MMC/SD is largely redesigned and probably non-functional in the first check-in.
  • drivers/mmcsd: Changes verified on 4Gb Kingston microSHDC card and on a 2Gb SanDisk microSDC card on the Eagle100 platform.
  • fs/fat: With the 4Gb card, the first tests of FAT32 were (finally) performed. Found and corrected a problem that prevented use of FAT32: It was not updating the sector cache before checking the FAT32 FSINFO sector.
  • configs/eagle100/*/Make.defs: Added configuration options that should make it possible to build NuttX for the Eagle100 using CodeSourcery 2009q1 toolchain and the devkitARM GNU toolchain.
  • configs/mcu123-lpc214x/src: Corrected some logic in the LPC2148 SPI receive block logic. Re-verified SDC ver1.x support with 1Gb Toshiba SDC, 1Gb PNY SDC, and 4Gb Kingston SDHC. There are CMD0 issues with the 2Gb SanDisk SDC on this board.
  • fs/fs_mount.c: Corrected error handling that could cause a deadlock on certain mount() failures.

What is new in version 0.4.6:

  • Change SPI interface so that is can accomodate interfaces where the number of bits per word is greater an 8 (such as with many 9-bit display interfaces). -- this might have broken a few things which will need to be retested!
  • arch/arm/src/imx: Added i.MX SPI driver
  • SPI: Add a method to set the number of bits per word. Also add an alternative interface for so that (eventually) I can phase the sndblock and recvblock methods and replace them with a single exchange method
  • Build: objcopy fails with toolchains that use newer GCC and binutils. The following arguments need to be included in the objcopy command line "-R .note -R .note.gnu.build-id -R .comment" This has bin fixed in arch/arm/src/Makefile, but other architectures may have the same problem. Thanks to Dave Marples for verifying this.
  • configs/eagle100/ostest: Added support for the MicroMint Eagle100 board. This board has a Luminary LM3S6918 Cortex-M3. Added a configuration to build examples/ostest.
  • arch/arm/src/lpc214x: Add configuration option to enable fast GPIO (vs. legacy, "slow" GPIO) for LPC214x.
  • arch/arm: Restructured the arch/arm directory structure to better suppor ARM and Cortex-M3.
  • sched/: pthread_create() must return a (non-negated) errno value on failure.
  • configs/eagle100/nsh: Add a NuttShell (NSH) configuration for the Eagle-100

What is new in version 0.4.5:

  • The basic port for the FreeScale ARM920T i.MX1 processor on the Freescale MX1ADS board. Coding is complete for this port, but it is has not yet fully integrated
  • Extended I2C and SPI interface definitions
  • Add basic support for C++ applications. Very simple C++ applications can now be built against NuttX without any external libraries. At present, only the most primitive C++ programs are supported, but it is hoped that this support will be extended in future releases.

What is new in version 0.4.4:

  • examples/nsh: A debug option was left on that can (and does) cause infinite loops and stack overflows.
  • net/uip: Correct calculation of checksum on ICMP ping response.
  • examples/dchpd: Added a tiny DHCP server example
  • net/uip: Correct UDP bind behavior. It should select a valid port number if it receives a port number of zero.
  • netutils/dhcpd: Corrrect for ZDS compiler. Fix issue with re-use of a port number. Fixed a number of broadcast-related problems.
  • eZ80Acclaim!: Add a tiny webserver configuration
  • eZ80Acclaim!: Fixed an important bug in the EMAC Tx timeout logic. It was always timing out when the load was heavy and worse, for some reason, resetting the Tx function caused unexpected registers to be reset in the Rcv function was well.
  • Z80: Patch incorported: "[2696648] Z80: interrupt flag stored in parity bit" (submitted by JPelletier). The is the same fix that was needed for the eZ80 and fixed in 0.4.2.
  • netutils: Added logic to support a simple wget() function
  • examples/wget: Added a test for wget() (untested -- see NOTE)
  • lib/strncasecmp: Fix cut'n'paste error in function name.
  • NSH: Added wget command (untested -- see NOTE).
  • examples/sendmail: A simple sendmail example (untested -- see NOTE)
  • NOTE: Features related to wget and sendmail are not tested on the target platform in this release and, hence, most likely have problems. I don't have the correct network network setup to perform that testing now (I'm in a hotel).

What is new in version 0.4.3:

  • This release adds priority inheritance to all NuttX waiting mechanisms in order to avoid priority inversion.
  • It includes major bugfixes for the eZ0Acclaim! platform and an EMAC driver for the eZ80F91 chip.

What is new in version 0.4.2:

  • This release adds integrated support for the ZiLOG eZ80Acclaim! processor and code for the the Renesas M16C/s0 processor (which has not yet been tested).

What is new in version 0.4.0:

  • This release adds graphics support and a tiny windowing subsystem.

What is new in version 0.3.19:

  • This release adds support for poll()/select() and a TCP/IP connection backlog.
  • Support for framebuffer drivers was added, and at least one critical TCP/IP bug was fixed.

What is new in version 0.3.18:

  • The release adds partial support for the STMicro STR71x family and for the Hitachi SH-1.
  • A loop device was added, and the NuttShell was extended with new file handling capabilities.
  • Several important bugs were fixed (especially in the FAT file system).

What is new in version 0.3.17:

  • This release adds an SPI-based MMC/SD driver (with an SPI driver for the NXP LPC2148) and a device-side USB mass storage driver.
  • Numerous bugs were corrected in the NXP LPC2148 USB driver.

What is new in version 0.3.16:

  • The release adds support for device-side USB.
  • It includes drivers for the NXP LPC214x.

What is new in version 0.3.15:

  • This release includes two important new features: support for the ROMFS file system with eXecute In Place (XIP) capability, and board support for the NXP LPC2148 processor.

What is new in version 0.3.14:

  • This release corrects several critical bugs in the NuttX FAT filesystem and the networking logic.
  • Additional minor enhancements were made to the NuttShell (NSH).

What is new in version 0.3.13:

  • This includes some important bugfixes especially related to the FAT filesystem, environment variables, and the TCP/IP stacks.
  • Many new features were added to the Nuttx shell (NSH).

Similar Software

FreeVPS
FreeVPS

3 Jun 15

Moto-Mytouch 4G
Moto-Mytouch 4G

14 Apr 15

Rom SENSATION XL
Rom SENSATION XL

14 Apr 15

GhostBSD MATE
GhostBSD MATE

2 Sep 17

Comments to NuttX

Comments not found
Add Comment
Turn on images!