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

Compare with Current View Page History

« Previous Version 10 Next »

Work In Progress

Work In Progress

NuttX X.Y 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

Major Changes to Core OS

sched

  • #11944 sched: Fix user task exception handling
  • #11498 sched: move etc romfs mount from nsh to sched/init
  • #11846 sched: remove unused group link node
  • #11950 sched: replace some global variables to macro
  • #11769 sched: rw_sem: replace mutex with spinlock
  • #11818 sched.h: fix CPU_EQUAL(s1, s2) write error
  • #11949 sched/cpu: replace up_cpu_index() to this_cpu()
  • #11816 sched/cpuload: remove ciritical_section() to fix recursive
  • #11839 sched/environ: check envcp validity before hold sched_lock()
  • #11848 sched/group: change type of task group member to single queue
  • #11832 sched/group: move task group into task_tcb_s to improve performance
  • #11838 sched/group: replace group_findbypid to task_getgroup
  • #11885 sched/group: set clear flag if the group is not really needed
  • #11971 sched/init: move task list table from data to bss
  • #11542 sched/logging: add task activation/exit logs
  • #11854 sched/pthread: fix memory leak of pthread_tcb_s
  • #11898 sched/pthread/join: refactor pthread join to support join task
  • #11890 sched/pthread/join: remove unused joininfo
  • #11891 sched/pthread: replace pthread_sem_give() to nxsem_post() to unify the post method
  • #11972 sched/signal: merge allocate of signal pool
  • #11916 sched/signal: move unblock signal info to stack
  • #11925 sched/stdio/file: unify group file list to common single queue
  • #11840 sched/task: save argument counter to avoid limit check
  • #11948 sched/tasklist: replace task status list with macro definition
  • #11774 sched/tcb: add preserved tcb flag to support static tcb
  • #11777 sched/tls: inline group info in flat mode to improve performance
  • #11953 sched/wqueue: replace some global variables to macro

mm

  • #11921 mm: Using Macros Instead of Memory to Fill Labels
  • #11884 mm/kconfig: fix typo in MM_DEFAULT_ALIGNMENT

libs

  • #11526 libc.csv: Fix qsort signature with unexpected quotation mark
  • #11977 libc/uname: Add option to disable uname timestamp
  • #11772 libm/newlib: fix support for x86_64
  • #11889 libs/libc/string: fix memmem() boundary case when needle is at end of haystack
  • #11474 libcxx.defs: appease "expr: syntax error" messages with clang
  • #11556 libcxx: Fix CMake compile with correct CMAKE_CXX_STANDARD
  • #11918 libxx: ibcxxabi: Path <cxxabi.h> not found

misc

  • #11486 assert: fix flags type, should be irqstate_t
  • #11796 assert/panic: disable panic message to save the code size
  • #11989 audio: libsrc
  • #11464 binfmt/libelf: adjust log levels of a few binfmt logs
  • #11904 binfmt/loadmodule: replace kmm_free() to lib_free()
  • #11862 binfmt/task/member: remove invaild membership reverse
  • #11733 include/rpmsg/rpmsg.h: remove temporary define
  • #11640 include/threads.h: Fix typo in mtx_timedlock
  • #11466 include/types.h: make 64-bit time_t back to unsigned
  • #11805 list: rename container_of to list_container_of from public header
  • #11903 Revert "assert/panic: disable panic message to save the code size"
  • #11858 Replace PRIxPTR with %p and remove the cast of (uintptr_t)
  • #11686 openamp: Fix void pointer arithmetic in openamp to remove compilation…
  • #11786 tls: report warning if pthread enabled only

Changes to the Build System

Bug Fixes

  • #11914 cmake: add initial KERNEL mode support
  • #11579 cmake: add support for Ubuntu stock toolchain for risc-v
  • #11736 cmake: add target that define in external moduleCMakeLists.txt
  • #11545 cmake: arm/armv8-r: init armv8-r cmake build
  • #11788 cmake: fix empty BASE_DEFCONFIG
  • #11749 cmake: fix external library mode
  • #11893 cmake: fix libxx header file search path issue and enable libxx for CMake build
  • #11745 cmake: fix the problems of using cmake to compile custom board
  • #11667 cmake: Fixed nucleo-u5a5zj-q
  • #11457 cmake: init arch arm64 CMake and qemu-armv8a build
  • #11415 cmake: set NUTTX variable
  • #11488 cmake: some fixes for sim/macOS + cmake + libcxx
  • #11475 cmake: some fixes for cmake build of libcxx
  • #11735 cmake/toolchain: fix compiler warning on ARM32
  • #11624 compiler/tasking: fix unreachable code on tasking toolchain
  • #11202 tools: Allow apps to customize NuttX build time variables
  • #11808 tools: Fix broken exported CMake toolchain file link dependencies
  • #11900 tools: Fix cmake-format wrong execution order
  • #11942 tools: Fix Export.mk
  • #11908 tools: Improve export by adding NuttX current target (arch, chip, board)
  • #11548 tools/export: add Zig support for kernel build on linux host
  • #11920 tools/gdb: memdump: Enhance memdump
  • #11506 tools/link.sh: fix an incorrect variable
  • #11888 tools/minidumpserver.py: support quit with gdb
  • #11448 tools/mkallsyms: support sorting symbol tables by name
  • #11606 tools/nxstyle: can use ',' in the string when declaring it
  • #11710 toolchain/lto: enable lto flags only on GNU toolchain
  • #11711 toolchain/tasking: add dependencies rules for tasking compiler

Architectural Support

New Architecture Support

  • #11707 arch/tricore: add Infineon AURIX TriCore support

Architecture Improvements

Driver Support

New Driver Support

  • #11767 drivers/analog/hx711: Add driver for hx711 weight scale ADC
  • #11868 drivers/can/sja1000: Add SJA1000 CAN driver support
  • #11806 drivers/mtd/mtd_nandram: Adds virtual NAND Flash simulator
  • #11552 drivers/usbhost: Add a USB bluetooth driver

Drivers With Significant Improvements

  • #11589 drivers/alt1250: Notice instance information
  • #11829 drivers/analog/hx711: Fix few issues in hx711 driver
  • #11941 drivers/devicetree: add common FDT utilities APIs
  • #11947 drivers/ioexpander: icjx: add support for multiple pin read/write
  • #11590 drivers/ioexpander: add support for iC-JX expander
  • #11423 drivers/mtd: Add MTD for AT25 eeprom
  • #11886 drivers/mtd: mt_config_fs : update nvs to support align size
  • #11671 drivers/modem/alt1250: Add LTE_CMDID_RESTARTAPI command
  • #11580 drivers/note: fix build with CONFIG_SCHED_INSTRUMENTATION_FUNCTION
  • #11857 drivers/pipe: Change to the block mode by file_ioctl(FIONBIO)
  • #11618 drivers/rpmsg: It should be possible to use ping without rptun being enabled, so striped rptun_ping out of rptun and rename to rpmsg_ping.
  • #11714 drivers/rpmsg: make all rpmsg services depend on RPMSG
  • #11699 drivers/rpmsg/ping: Replace UINT_MAX with CLOCK_MAX
  • #11483 drivers/rpmsg/rpmsgdev_server: do not notify the client when the fds has teardown
  • #11481 drivers/rpmsg/rpmsg_sockif: recv/recvmsg return 0 when peer close
  • #11591 drivers/rpmsgfs: decoupling rpmsgfs server and rpmsg virtio.
  • #11510 drivers/rpmsgfs: synchronous message transfer format
  • #11515 drivers/rpmsgmtd: use fixed length struct to transfer between two cpus
  • #11687 drivers/rptun: add explicit initialization for variable
  • #11537 drivers/rptun: decoupling rptun ping and rptun_virtio_device, rptun ping and rptun.
  • #11712 drivers/rptun: dump: move rptun_dump.c to rptun.c, remove redundant code.
  • #11603 drivers/rptun: extract rptun char to rpmsg/rpmsg.c
  • #11741 drivers/rptun: ioctl: remove rptun_panic and rptun_dump_all
  • #11713 drivers/rptun: ioctl: Strip rpmsg ioctl and rptun ioctl.
  • #11487 drivers/rptun: ping: support data checksum and data transfer rate calculation
  • #11520 drivers/rptun: remove rptun work queue related unused code
  • #11627 drivers/rptun: remove temporarily retained RPTUNIOC_xxx definitions.
  • #11454 drivers/rptun: Select OPENMAP under RPTUN
  • #11536 drivers/rptun: Strip rpmsg and rptun.
  • #11719 drivers/rptun: should initialize the vring da when da == 0 || da == -1
  • #11874 drivers/sensors: add uorb support for lsm9ds1
  • #11628 drivers/sensors: delete warning about argument type in bmi160
  • #11792 drivers/sensors: Remove duplicated defnitions from bmi160.h
  • #11789 drivers/sensors/bmi160: fix compilation errors
  • #11923 drivers/sensors/bmi270: fix accel and gyro data position
  • #11525 drivers/serial/pl011: add support of uart0/2/3 port
  • #11813 drivers/syslog: syslog_rpmsg: handle syslog_rpmsg_transfer() return value
  • #11965 drivers/usbdev/cdcecm: remove duplicate assignment statements
  • #11560 drivers/usbhost: Update USB bluetooth driver
  • #11859 drivers/video: Update for improvement and bug fix
  • #11936 drivers/video/V4l2: header update
  • #11887 drivers/video/v4l2: refactor
  • #11716 drivers/virtio: move metal_init to the virtio_register_drivers()
  • #11478 drivers/virtio-mmio: ack the interrupt as soon as possible
  • #11482 drivers/virtio-mmio: avoid output error log when not found mmio device
  • #11485 drivers/virtio-mmio: use byte to byte in read/write config when length != 1,2,4,8
  • #11592 drivers/wireless: bcmf_driver:wlan interface status reset by unsolicited wpa packet
  • #11617 drivers/wireless: IEEE802.15.4 support for nrf52
  • #11701 drivers/wireless: ieee802154_mac: add TRACEDUMP request
  • #11705 drivers/wireless: mrf24j40: add support for IEEE802154_ATTR_PHY_REGDUMP
  • #11616 drivers/wireless: mrf24j40: minor fixes
  • #11535 drivers/wireless/bluetooth: Prevent btsak from repeatedly showing the same error.

Board Support

New Board Support

  • #11960 boards: add two new gd32f4 boards
  • #11583 boards: Bring up changes from nuttx/pci branch (2nd attempt)
  • #11991 boards: esp32c6 devkitm support
  • #11945 boards: Initial port for i.MX93 and i.MX93EVK board
  • #11879 boards/stm32h7: add Waveshare OpenH743I board
  • #11607 boards/arm/xmc4: add xmc4800-relax to nuttx

Boards With Improvements

  • #11765 boards: Enhance board/board.mk compilation capabilities

  • #11499 boards: Add CONFIG_LIBC_EXECFUNCS and CONFIG_PSEUDOTERM to adb config

  • #11626 boards/arm/cxd56xx: Add geoid to cxd5610 gnss driver

  • #11652 boards/arm/cxd56xx: Fix the modem reset sequence

  • #11793 boards/arm/spresense: Add reset control on BLE1507 Add-on board

  • #11531 boards/arm/sama5d3-xplained: Add USB mouse initialization.

  • #11614 boards/arm/{nrf52840-dk| nrf52840-dk}: use TIMER1 as hardware timer

  • #11704 boards/arm/nrf{52|53|91}/common: add reset logic

  • #11658 boards/arm/qemu-armv8a: Add nxrecorder to defconfigs

  • #11927 boards/arm/rp2040: Implement board_uniqueid()

  • #11717 boards/arm/rp2040/raspberrypi-pico: Add autoleds and userleds support

  • #11978 boards/arm/rp2040/raspberrypi-pico: Add buttons support example

  • #11623 boards/arm/g32f4: modified the execution logic of the board_late_initialize(),bringup().

  • #11642 boards/arm/stm32_bbsram.c: fix some build error when enable BBSRAM

  • #11926 boards/arm/stm32/stm32f429i-disco add CAN driver support

  • #11500 boards/arm/stm32f40/stm32f401rc-rs485: Add rs-485 support

  • #11828 boards/arm/stm32f40/stm32f401rc-rs485: Add support to ADC

  • #11882 boards/arm/stm32f40/stm32f401rc-rs485: Add support to PWM/DAC

  • #11929 boards/arm/stm32f40/stm32f401rc-rs485: Add support to Quadrature Encoder

  • #11708 boards/arm/stm32f40/stm32f401rc-rs485: Add USB console support

  • #11766 boards/arm/stm32f40/stm32f401rc-rs485: Add support to LM75 sensor

  • #11682 boards/arm/stm32f40/stm32f401rc-rs485: Add rs-485 master mode configuration

  • #11784 boards/arm/stm32f40/stm32f411-minimum: remove non existing include in Kconfig

  • #11698 boards/arm/stm32h7/linum-stm32h753bi: add modbus master using uart6

  • #11768 boards/arm/stm32h7/linum-stm32h753bi: Add USB console support

  • #11505 boards/arm/stm32h7/nucleo-h745zi/stm32_bringup.c: the cpuname should be the remote cpu name

  • #11669 boards/arm/stm32h7/nucleo-h743zi2: pysim Modified CONFIG_INIT_STACKSIZE to 2048

  • #11501 boards/arm/stm32h7/nucleo-l432kc: Fix board configuration for USART2

  • #11681 boards/arm/stm32h7/STM32-H745 files for pysimCoder

  • #11679 boards/arm/xmc4/xmc4800-relax: build xmc4800-relax using CMake

  • #11659 boards/arm/xmc4/xmc4800-relax: Add EtherCAT support on xmc4800-relax

  • #11797 boards/arm64: SMP: fix crash when switch to new task which is still running

  • #11479 boards/arm64/qemu/qemu_bringup: add tmp fs mount for qemu-armv8a

  • #11668 boards/avr/avr32dev1: Fix compilation and nsh boot-up

  • #11867 boards/intel64: move PCI initialization back to board logic

  • #11781 boards/intel64: qemu-intel64: add .note.gnu.* to linker script

  • #11465 boards/risc-v/k230: adding kernel build for CanMV-K230 device

  • #11851 boards/risc-v/k230: remove unnecessary ARCH_LAZYFPU from defconfigs

  • #11489 boards/risc-v/k230: revise CanMV230 kernel build support

  • #11631 boarsd/risc-v/qemu: Use ROMFS image to load user applications in kernel mode and update rv-virt board documentation

  • #11660 boards/risc-v/rv-virt: Add nxrecorder to defconfigs

  • #11587 boards/risc-v/rv-virt: Fix the hello app crash with nsh64

  • #11633 boarsd/risc-v/rv-virt: Guard mount point for procfs/tmpfs

  • #11576 boards/risc-v/rv-virt/configs: avoid build errors with cmake or stock gcc 10.2

  • #11842 boards/xtensa/esp32: Increase init task stack size to 3072

  • #11895 boards/xtensa/esp32: ESP32 opencores network driver for QEMU

  • #11725 boards/xtensa/esp32-sparrow-kit: Add I2S support for the board's microphone

  • #11636 boards/xtensa/esp32/dac-one-shot: lower-half driver for ESP32 internal DAC

  • #11844 boards/xtensa/esp32c6: Remove sotest config for esp32c6

File System

improvements

  • #11841 fs: enhance file_allocate_from_tcb() mulit-threads saftey & remove memcpy when close the fd
  • #11896 fs: revise comments and harden nx_mount logic
  • #11892 fs/driver: using nx_unlink to call unlink ops to release some resource
  • #11723 fs/fat: fs_fat32: fix default return value of fat_ioctl().
  • #11850 fs/inode: add pre-allocated task files to avoid allocator access
  • #11958 fs/inode: replace some global variables to macro
  • #11729 fs/littlefs: Add to get the full path
  • #11680 fs/mount: add FS_RPMSGFS as cause of NODFS_SUPPORT
  • #11540 fs/partition: fs_mbr: fix for MBR block count calculation.
  • #11776 fs/procfs: add build config to /proc/version
  • #11550 fs/romfs: Move rn_child/rn_count before rn_namesize
  • #11629 fs/shmfs: Fix CONFIG_FS_SHM -> CONFIG_FS_SHMFS
  • #11634 fs/shmfs: Fix stat() system call for shmfs object
  • #11635 fs/shmfs: Fix shmfs_truncate
  • #11647 fs/vfat: Fix typo in the macro DIRSEC_BYTENDX
  • #11724 fs/vfs: Implement Filelock

Networking

Improvements

  • #11495 net: add support for multi PHY and optionally use it on imxrt
  • #11759 net: Fix minor coding problems
  • #11492 net: Only call arp_send for PF_INET and icmpv6_neighbor for PF_INET6
  • #11491 net/can: Release IOB when failed to queue in datahandler
  • #11856 net/local: Fix the minor issue found
  • #11480 net/local: local_sendmsg: fix peer->lc_cfps[] array out-of-range write
  • #11804 net/local: Minor local socket improvement
  • #11653 net/nat: Fix ICMP Error MSG Processing
  • #11744 net/pkt: Support binding to devices other than ETH
  • #11509 net/route: Support longest prefix match for routing
  • #11649 net/rpmsgsock: Rename rpmsg_socket_getconnname to rpmsg_socket_getpeername
  • #11578 net/support to ARP Address Conflict Detection
  • #11909 net/tcp: return true only when send window updates
  • #11910 net/tun: in tun_write, try to release iob before iob_prepare
  • #11639 net/udp: Fix source address selection under IPv6

Security Issues Fixed In This Release

Compatibility Concerns

  • #11498 sched: move etc romfs mount from nsh to sched/init

Usually the startup script is placed under /etc. The contents of the etc directory are compiled and linked with Nuttx binary in the form of romfs. After startup, it will be mounted by Nsh.

etc is generated by the different boards, that use genromfs and xxd tools to generate and compile it into the Nuttx, for example: boards/arm/at32/at32f437-mini/tool/mkromfs.sh The more common method is etc image generated from the content in the corresponding board/arch/board/board/src/etc directory, and added by Makefile for example: boards/sim/sim/sim/src/etc.

But in kernel/protected mode, Nuttx kernel and apps are run in different privileged/non-privileged mode or the isolated binarys, so as that nsh should use syscall to access Nuttx kernel by exported API. In this scenario, nsh can not mount the etc image content, because that is generated in board and as a part of Nuttx kernel.

changes:

move etc romfs mount from nsh to Nuttx, but keep the script to parse and execute. move and rename the related CONFIG, move customized nsh_romfsimg.h to etc_romfs.c in boards, and no need declaration for romfs_img/romfs_img_len.

This commit changes and updates all configurations in Nuttx arch/board as much as possible, but if any missing, please refer to the following simple guide:

rename CONFIG_NSH_ROMFSETC to CONFIG_ETC_ROMFS, and delete CONFIG_NSH_ARCHROMFS in defconfig rename the etc romfs mount configs, for example CONFIG_NSH_FATDEVNO to CONFIG_ETC_FATDEVNO move customized nsh_romfsimg.h to etc_romfs.c in board/arch/board/board/src and no need declaration for romfs_img/romfs_img_len. delete default nsh_romfsimg.h, if ROMFSETC is enabled, should generate and compile etc_romfs.c in board/arch/board/board/src.

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:

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