DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
Work In Progress
Work In Progress
What's New In This Release
Major Changes to Core OS
New Features
Bug Fixes
Major Changes to the Build System
New Features
Bug Fixes
Architectural Support
New Architecture Support
Driver Support
Bug Fixes
New Driver Support
Drivers With Significant Improvements
Board Support
Significant Improvements
New Board Support
Boards With Significant Improvements
File System
Bug Fixes
Significant Improvements
Networking
Applications
Improvements
Bug Fixes
Security Issues Fixed In This Release
Compatibility Concerns
Changes to Build System
In Apps, Change $(TOPDIR) to $(APPDIR)
In the 'apps' repo, Makefiles are now using $(APPDIR) instead of $(TOPDIR).
In your custom app's Makefile, it is recommended to change $(TOPDIR) to $(APPDIR).
Replace this line:
include $(TOPDIR)/Make.defs
With this:
include $(APPDIR)/Make.defs
See PR-326, git commit # deaa6c5b7bf8445b4a300691525f60aa506be0d7 in the NuttX 'apps' repository.
Custom Boards Don't Need ARCHINCLUDES and ARCHXXINCLUDES Definitions
As part of an effort to unify support for uClibc++ and libc++, the C/C++ include search path definitions ARCHINCLUDES and ARCHXXINCLUDES are now defined in one central place in tools/Config.mk. It is no longer necessary to define these in every board's scripts/Make.defs. Boards included in the NuttX repository have been updated, but if you are building NuttX for a custom board and are using C++, you may want to make the following changes:
In your board's configuration, ensure that you have enabled either CONFIG_UCLIBCXX or CONFIG_LIBCXX as appropriate.
In your custom board's scripts/Make.defs file, remove lines like these:
CINCPATH := ${shell $(INCDIR) -s "$(CC)" $(TOPDIR)$(DELIM)include}
CXXINCPATH := ${shell $(INCDIR) -s "$(CC)" $(TOPDIR)$(DELIM)include$(DELIM)cxx}
ARCHINCLUDES += $(CINCPATH)
ARCHXXINCLUDES += $(CINCPATH) $(CXXINCPATH)
In case your scripts/Make.defs uses different names, such as ARCHINCLUDESXX instead of ARCHXXINCLUDES, you'll need to find all uses of that variable and update them to use ARCHXXINCLUDES.
See PR-1396, git commit #d32e9c38dfb0659a7f3c0cf586ba1584cd7eb3d6 in the main NuttX repository.
See also PR-1399, git commit #6abd03d53ff9164fb17ea4aca701a49fbbf751c0.
Custom Boards Don't Need HOSTCC and HOSTCFLAGS Definitions
The NuttX build system uses several binary utilities that it compiles and runs on the host computer. To build these binaries, it needs to know the host C compiler and C flags. Previously, every board's scripts/Make.defs file had to provide this information via HOSTCC and HOSTCFLAGS Definitions. As part of an effort to simplify the build system, these definitions are now automatically provided by logic in tools/Config.mk. Boards included in the NuttX repository have been updated, but if you are building NuttX for a custom board, you may want to make the following changes:
In your custom board's scripts/Make.defs file, remove lines like these:
HOSTCC = gcc HOSTCFLAGS = -Wall -Wstrict-prototypes -Wshadow -Wundef -g -pipe
Sometimes they may look like this:
ifeq ($(CONFIG_WINDOWS_NATIVE),y) HOSTCC = mingw32-gcc.exe else HOSTCC = gcc endif
Note: These changes are OPTIONAL.
You may still set these definitions in your board's scripts/Make.defs, and your definitions will override the ones in tools/Config.mk.
Also, you may override these definitions for a single run by providing them on the make command line. This is useful if, for example, you wish to build debug versions of these host binaries: define HOSTCFLAGS with -g on the command line.
See PR-1398, git commit #ee875b2a260cb4cc532b8ca303c2515e24c39b4e in the main NuttX repository.
Removal of Unused ARCHCCVERSION and ARCHCCMAJOR
The ARCHCCVERSION and ARCHCCMAJOR variables are unused. Historically they were defined in many boards' scripts/Make.defs. These were removed from all boards in the NuttX repository, but if you are building NuttX for a custom board, you may want to remove this unnecessary boilerplate.
In your custom board's scripts/Make.defs file, remove lines like these:
ARCHCCVERSION = ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
ARCHCCMAJOR = ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
See PR-1344, git commit #f5311de6b42466ab5c6ef299dab0ecc417131bbe in the main NuttX repository.
Custom Boards May Not Need EXTRA_LIBS and EXTRA_LIBPATHS Definitions
The EXTRA_LIBS and EXTRA_LIBPATHS make variables were previously defined in many boards' scripts/Make.defs files. These are now defined in a more central location: arch/*/src/*/Toolchain.defs. Your board's scripts/Make.defs usually includes this file. Boards included in NuttX have been updated, but if you are building NuttX for a custom board, you may need to update your board's scripts/Make.defs file to ensure you build with the correct definitions.
If you have lines like these:
EXTRA_LIBPATHS = -L "${shell dirname "$(LIBSUPXX)"}"
EXTRA_LIBS = -lsupc++
You may want to do one of the following:
- If they are redundant to the definitions provided in the included
arch/*/src/*/Toolchain.defs, remove these lines, or - If they contain additional needed libraries and paths not present in
arch/*/src/*/Toolchain.defs, remove any redundant definitions and change the assignment '=' to '+='.
See PR-1404, git commit #4910d43ab0fc360dbddb1f8a31db2a3ee383b46d in the main NuttX repository.
Custom Boards May Not Need CC, CXX, CPP, LD, STRIP, AR, NM, OBJCOPY, and OBJDUMP Definitions
These make variables were previously defined in many boards' scripts/Make.defs files with copy-paste duplication spanning many hundreds of files. These are now defined in a more central location: arch/*/src/*/Toolchain.defs. Your board's scripts/Make.defs usually includes this file. Boards included in NuttX have been updated, but if you are building NuttX for a custom board, you may need to update your board's scripts/Make.defs file to ensure you build with the correct definitions.
If you have lines that define CC, CXX, CPP, LD, STRIP, AR, NM, OBJCOPY, and OBJDUMP, such as these:
CC = $(CROSSDEV)gcc CXX = $(CROSSDEV)g++ CPP = $(CROSSDEV)gcc -E -P -x c LD = $(CROSSDEV)ld STRIP = $(CROSSDEV)strip --strip-unneeded AR = $(ARCROSSDEV)ar rcs NM = $(ARCROSSDEV)nm OBJCOPY = $(CROSSDEV)objcopy OBJDUMP = $(CROSSDEV)objdump
You may want to do one of the following:
- If they are redundant to the definitions provided in the included
arch/*/src/*/Toolchain.defs, remove these lines, or - If they are different from the definitions in
arch/*/src/*/Toolchain.defs, leave them as-is and they will take precedence.
See PR-1426, git commit #b329e2377dd8816f37ad0408279926829efdf85d in the main NuttX repository.
Known Problems In This Release
More Information
How to Download
Release artifacts for all current and past NuttX releases can be downloaded at:
How to Clone the Git Repository
The Apache NuttX project uses Git SCM as its version control system.
There are two primary repositories:
- nuttx - The real time operating system itself.
- apps - Optional applications and example programs for the operating system. You can use this repository or make your own custom one.
The main "Single Source of Truth" repositories are hosted by the ASF:
- https://gitbox.apache.org/repos/asf?p=incubator-nuttx.git
- https://gitbox.apache.org/repos/asf?p=incubator-nuttx-apps.git
These are synchronized with repositories hosted at GitHub:
How to Contact the Community
The main forum for project communication, to ask a question, get involved, or contribute to NuttX, is our mailing list, dev@nuttx.apache.org. The list is publicly archived and searchable at https://lists.apache.org/list.html?dev@nuttx.apache.org. For more information, see NuttX Community.
Enthusiastic Contributors Welcome!
NuttX is a free open-source project. If you'd like to participate, whether it's to enhance documentation (even these release notes) or dive into the nitty gritty of some low-level drivers, please join us! You can join the conversation at our dev mailing list by emailing dev-subscribe@nuttx.apache.org. The mailing list is open to the public and archived. You can browse older messages at https://lists.apache.org/list.html?dev@nuttx.apache.org.