| NuttX 9.1 has not been released yet. These Release Notes are a work-in-progress in preparation for the next release of NuttX. |
If you have are building NuttX for a custom board, you must make the following two changes in build-related files for your board:
In your custom board's scripts/Make.defs file, rename EXTRADEFINES to EXTRAFLAGS.
See git commit # 459ad9937377a42785692098ff0d73baaa9551e6 in the main NuttX repository.
If you forget to do this, memory allocations on the heap probably won't work and your user tasks won't start.
To see why, tools/Config.mk assigns a value to KDEFINE such that the preprocessor symbol __KERNEL__ will be defined when certain source files are compiled. KDEFINE is passed to nested invocations of 'make' as EXTRAFLAGS. If your board's scripts/Make.defs still attempts to use EXTRADEFINES, the preprocessor symbol __KERNEL__ will not be defined in some of the places that it should be. Suppose you're building a FLAT build. In this case, include/nuttx/mm/mm.h will not define MM_KERNEL_USRHEAP_INIT like it should, which will cause nx_start.c not to call up_allocate_heap() at startup. Therefore, any attempt to allocate memory on the heap will fail.
This item pertains only to custom boards that are developed in-tree, meaning under the NuttX boards/ subdirectory. Out-of-tree boards are not affected.
If your custom board directory is in-tree and in a board family that uses a 'boards/ARCH/FAMILY/common' directory (such as boards/arm/stm32/common, boards/arm/cxd56xx/common, etc), then you'll need to make two minor changes to your custom board's src/Makefile:
(1) Rename it from src/Makefile to src/Make.defs, and
(2) Near the end of that file, replace this line, which usually appears at the end:
include $(TOPDIR)/boards/Board.mk |
with these three lines:
DEPPATH += --dep-path board VPATH += :board CFLAGS += $(shell $(INCDIR) $(INCDIROPT) "$(CC)" $(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src$(DELIM)board$(DELIM)board) |
See git commit # 6ca46520df38854bf660f9be54957cceede39ded in the main NuttX repository.
If you forget to do this, 'make' will report an error, "no rule to make libboard.a," and the build will fail.