You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 14 Next »

Work In Progress

Work In Progress

NuttX 10.2 has not been released yet. These Release Notes are a work-in-progress in preparation for the next release of NuttX.  There is a board tracking the PRs that need to be looked at to add to this doc for the OS TODO ADD LINK and for the Apps TODO ADD LINK

What's New In This Release

Highlights

  • Feature 1
  • Feature 2
  • Feature 3

Major Changes to Core OS

New Features

Bug Fixes

Major Changes to the Build System

New Features

Bug Fixes

Architectural Support

New Architecture

Architectures with significant improvements

ARM

  • #4522 arch/arm: Add ARCH_CORTEXM55 Kconfig for cortex-m55
  • #3759 arm/v7-a/fpu: add VFP-v3 D32 support

CXD56XX

STM32

  • #3543 feat(esp32c3): Support esp32c3 ble function
  • #3761 ET-STM32 Stamp: An STM32F103RET6 target for NuttX

STM32L4

STM32L5

S32K1XX

  • #3850 UCANS32K146 add support for B revision

IMX6

IMXRT

RP2040

  • #4049 Raspipico smp
  • #3996 Support for Waveshare Pico-LCD-1.x module
  • #3917 arm/rp2040:USB device controller support

RTL8720C

  • #4076 AmebaZ2: Add soc src code

NRF52

STM32H7

STM32F7

Renesas

RX65N

Risc-V

  • #3770 Add support for PolarFire SoC and icicle board
  • #3846 risc-v/rv32m1: Basic port to rv32m1 ri5cy
  • #4146 risc-v/bl602: add boardctl support
  • #3911 Add i2c driver to PolarFire SoC and Icicle board
  • #3905 Add SPI driver to PolarFire SoC and Icicle board
  • #3933 riscv/mpfs: add i2c reset handler
  • #3920 add dma support for PolarFire SoC

RV64

ESP32C3

BL602

Xtensa

ESP32

Minor changes

Simulator

New Features

Bug Fixes

Documentation

New Features

  • #3970 libc: Implement fesetround & fegetround for arm

Improvements

Driver Support

  • #3842 Added automatic log rotation, when log file is opened.
  • #3837 SYSLOG channel add functions return handle to the channel.
  • #3848 Syslog file rotations number is configurable.
  • #3808 Ramlog: recover last crash log from ram buffer.

Bug Fixes

New Driver Support

  • #3727 Add basic support for MCP23017 I/O Expander
  • #3859 Add Holtek HT16K33 14-segment display driver

Board Support

New Board Support

Boards With Significant Improvements

ARM

CXD56

  • #3833 Spresense new memorymap

IMX6

IMXRT

  • #3982 boards/arm/imxrt/teensy-4.x: added board level support for GPIO driver
  • #3929 Added encoder support for Teensy 4.x
  • #3980 FlexPWM support for iMXRT MCU

LPC17XX_40XX

NRF52

RP2040

  • #3917 arm/rp2040:USB device controller support  
  • #3857 boards: rp2040: Add user gpio driver

SAM34

  • #3732 board: Add support for Adafruit Circuit Express
  • #3840 Add ST7789 LCD controller support for SAMV71 XPlained Ultra board

STM32

  • #4350 arch/arm/src/stm32l4/Kconfig: add new STM32L4+ chip types
  • #3944 boards/arm/stm32/nucleo-f446re: added support for DAC driver
  • #3880 boards/arm/stm32/nucleo-f446re: added support for GPIO driver
  • #3909 Added basic support for nucleo-g431kb board.
  • #3922 Adds PWM example to nucleo-g431kb board.
  • #3914 oards: added support for EMW3162 Wi-Fi board Add FOC support for B-G431-ESC1 board #3878

STM32L4

STM32F4

STM32F7

STM32H7

KINETIS

RISC-V

BL602

C906

ESP32C3

  • #3794 risc-v/esp32c3: Support ESP32-C3 RTC driver
  • #3883 risc-v/esp32c3: Support ESP32-C3 RSA accelerator
  • #3881 risc-v/esp32c3: Support ESP32-C3 efuse
  • #3935 risc-v/esp32c3: Support ESP32-C3 SHA accelerator
  • #3882 riscv/esp32c3: Use the RTC memory as another heap.
  • #3945 boards/esp32c3: Add romfs configuration
  • #3925 risc-v/esp32-c3: Adds I2C polled support
  • #3823 risc-v/esp32-c3: Add support for HW flow control.
  • #3822 ESP32-C3: Add DMA support for SPI Slave

XTENSA

ESP32

  • #3940 xtensa/esp32: Support ESP32 RTC driver
  • #4003 xtensa/esp32: Adds support for SERIAL_TXDMA.
  • #3912 xtensa/esp32: Adds I2C polled support.
  • #3803 Add support to ESP32-S2 and ESP32S2-SAOLA-1 Board
  • #3824 xtensa/esp32-s2: Add support for serial HW flow control.

TIVA

Minor Board Changes

ARM

CXD56

Xtensa

File System

Bug Fixes

Significant Improvements

Networking

Improvements

Bug Fixes

Security Issues Fixed In This Release

Compatibility Concerns

Changes to Kconfig

The names of some Kconfig settings have been changed to improve the naming consistency. Here is the list:

OldNew
LIB_BOARDCTLBOARDCTL
LIB_CRC64_FASTLIBC_CRC64_FAST
LIB_ENVPATHLIBC_ENVPATH
LIB_HEX2BINLIBC_HEX2BIN
LIB_HOMEDIRLIBC_HOMEDIR
LIB_HOSTNAMELIBC_HOSTNAME
LIB_KBDCODECLIBC_KBDCODEC
LIB_RAND_ORDERLIBC_RAND_ORDER
LIB_SLCDCODECLIBC_SLCDCODEC
LIB_USRWORKLIBC_USRWORK
LIB_USRWORKPRIORITYLIBC_USRWORKPRIORITY
LIB_USRWORKSTACKSIZELIBC_USRWORKSTACKSIZE
LIB_ZONEINFOLIBC_ZONEINFO
LIB_ZONEINFO_ROMFSLIBC_ZONEINFO_ROMFS

When they appear in code, these identifiers begin with a CONFIG_* prefix (e.g., CONFIG_LIB_BOARDCTL is renamed to CONFIG_BOARDCTL).

All in-tree boards have been updated, but users who maintain their own out-of-tree boards will have to update all instances of these identifiers.

See PR-4266 https://github.com/apache/incubator-nuttx/pull/4266 and PR-4267 https://github.com/apache/incubator-nuttx/pull/4267 in the main NuttX repository.

See also PR-820 https://github.com/apache/incubator-nuttx-apps/pull/820 and PR-821 https://github.com/apache/incubator-nuttx-apps/pull/821 in the NuttX apps repository.

Changes to MTD subsystem

MTDIOC_XIPBASE, MTDIOC_FLUSH and MTDIOC_PARTINFO is removed and replace with BIOC_XIPBASE, BIOC_FLUSH and BIOC_PARTINFO:

  • Simplify the general driver(e.g. partition, flt) implementation
  • Reduce the confusion with the same IOCTL in the different layer

See PR-4325 https://github.com/apache/incubator-nuttx/pull/4325

Changes to Build System

LD Now Called Through GCC

When building NuttX with GCC toolchains, the linker is now called through $(CROSSDEV)gcc rather than $(CROSSDEV)ld. This requires all linker options to be prefixed with -Wl, (dash, capital W, lower-case L, comma). All boards in the NuttX tree have been updated, but any custom out-of-tree boards will need to apply this change in the relevant parts of their build scripts.

The reason for this change is that GNU Binutils 2.36.x has added new error checking on command line arguments. This has had the effect that the NuttX build suddenly broke on host OS distributions that updated to the 2.36.x release line. Reports included Arch, Manjaro, and Ubuntu. Other host OSes are likely to be affected as well.

Symptoms

Your toolchain and board are affected if you see errors from LD like:

arm-none-eabi-ld: Error: unable to disambiguate: -nostartfiles (did you mean --nostartfiles ?)

or (following this change in NuttX) errors from GCC like:

arm-none-eabi-gcc: error: unrecognized command line option '--gc-sections'; did you mean '--data-sections'?

What to change

The most common change expected to affect most boards:

Change:

NXFLATLDFLAGS1 = -r -d -warn-common
NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -no-check-sections

to:

NXFLATLDFLAGS1 = -r -Wl,-d -Wl,-warn-common
NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -Wl,-no-check-sections

If doing a kernel build, you may need changes in your board's kernel/Makefile like:

Change:

USER_LDFLAGS = --undefined=$(ENTRYPT) --entry=$(ENTRYPT) $(USER_LDSCRIPT)

to:

USER_LDFLAGS = -Wl,--undefined=$(ENTRYPT) -Wl,--entry=$(ENTRYPT) $(USER_LDSCRIPT) -nostartfiles -nodefaultlibs

Change:

$(Q) $(LD) -o $@ $(USER_LDFLAGS) $(USER_LIBPATHS) $(OBJS) --start-group $(USER_LDLIBS) --end-group $(USER_LIBGCC)

to:

$(Q) $(LD) -o $@ $(USER_LDFLAGS) $(USER_LIBPATHS) $(OBJS) -Wl,--start-group $(USER_LDLIBS) -Wl,--end-group $(USER_LIBGCC)

Depending on your board's customized build scripts, you may need to look out for other make variables in your board's Makefile or Make.defs.

Some variables to look for:

  • ARCHSCRIPT
  • ARCH_LIBS
  • CCLINKFLAGS
  • EXTRALINKCMDS
  • LDELFFLAGS
  • LDENDGROUP
  • LDFLAGS
  • LDLINKFLAGS
  • LDMODULEFLAGS
  • LDSTARTGROUP
  • NXFLATLDFLAGS1
  • NXFLATLDFLAGS2
  • USER_LDFLAGS

Anything that executes LD, such as:

$(Q) $(LD) --entry=__start $(LDFLAGS) $(LIBPATHS) $(EXTRA_LIBPATHS) \

Anything that processes LD flags, such as:

$(LIBPATHS) "-(" $(LDLIBS) "-)" $(LDFLAGS) -Map="$(TOPDIR)$(DELIM)nuttx.map"

In general, any command line options destined for LD must be prefixed with -Wl, (dash, capital W, lower-case L, comma) since they are now being passed through GCC.

Examples

Change:

EXTRALINKCMDS += @$(TOPDIR)/syscall/syscall_wraps.ldcmd

to:

EXTRALINKCMDS += -Wl,@$(TOPDIR)/syscall/syscall_wraps.ldcmd

Change:

LDFLAGS += -gc-sections

to:

LDFLAGS += -Wl,-gc-sections

Change:

$(LIBPATHS) "-(" $(LDLIBS) "-)" $(LDFLAGS) -Map="$(TOPDIR)$(DELIM)nuttx.map"

to:

$(LIBPATHS) "-(" $(LDLIBS) "-)" $(LDFLAGS) -Wl,-Map="$(TOPDIR)$(DELIM)nuttx.map"

Change:

NXFLATLDFLAGS1 = -r -d -warn-common

to:

NXFLATLDFLAGS1 = -r -Wl,-d -Wl,-warn-common

Change:

ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
  LDFLAGS += -Map="${shell cygpath -w $(TOPDIR)/nuttx.map}" --cref
else
  LDFLAGS += -Map=$(TOPDIR)/nuttx.map --cref
endif

to:

ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
  LDFLAGS += -Wl,-Map="${shell cygpath -w $(TOPDIR)/nuttx.map}" -Wl,--cref
else
  LDFLAGS += -Wl,-Map=$(TOPDIR)/nuttx.map -Wl,--cref
endif

Also, if you have assigned the LD variable, it would need to change as well:

Change:

LD = $(CROSSDEV)ld

to:

LD = $(CROSSDEV)gcc

References

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:

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

  • No labels