Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Delete "Work In Progress" warning; This version of NuttX has been released.

Table of Contents

Work In Progress

Warning
titleWork In Progress
NuttX 10.0 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

...

PR-1611 libc: Allocate file_struct dynamically

PR-1684 Add gdb script for NuttX thread debugging

PR-1607 mm: Implement malloc_usable_size

PR-1606 sched/pthread: Implement pthread_attr_detachstate

PR-1600 Implement epol_pwait and EPOLLONESHOT flag

PR-1597 sched: Support passing non empty argument to init task

PR-1596 libc: Replace all sem_xxx with _SEM_XXX. This insures the correct semaphore interface is used by userspace and the kernel.

PR-1517 sched/wdog: Chang the default value of MAX_WDOGPARMS from 4 to 2 as wd_start is two every where in the code base. Also bump CONFIG_MAX_WDOGPARAMS from 1 to 2 in defconfigs to support pthread_condclockwait()

PR-1486 libc: Implement ftw and nftw functions

PR-1567 libc: Implement proposed POSIX _clockwait variants of _timedwait functions

PR-1411 libxx: Integrate latest uclibcxx 0.2.5

PR-1586 libc: Add open for text (translated) access support

PR-1584 libc: Implement  strlcpy function

PR-1580 libc: Implement pthread_conattr_etclock

PR-1545 sched/wdog: Do not dynamically allocate wdog_s.  Reduces overhead and brings it inline with work_s

PR-1534 sched/wdog: Replace all callback arguments from uint32_t to wdparm_t

PR-1420 libc: Do not define localtime[_r] to macro with CONFIG_LIBC_LOCALTIME is not defined.

PR-1375 libc: Always declare getenv, link/symlink and atexist/on_exit.  Many C++ libraries reference these but dont use them

PR-1371 libc: Improve stat/readdir to be more POSIX compliant with S_xxx macro definition as with Linux

PR-1369 Initialize the idle stack at the arch layer to better support stack coloring and also make it compatible with new TLS implementation

PR-1292 pthread/mutex: Add PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP support

PR-1280 libc: Implement fseeko and ftello

PR-1279 libc: Implement lstat and realpath

PR-1278 libc: Implement pathconf and fpathconf

PR-1269 cstdlib: Add missing atox to std namespace

PR-1264 sched/pthread: Prohibit the use of pthread_cleanup API's by kernel threads

PR-1440 libc: Add the UUID libc functions

PR-1308 libc: Add support for _SC_NPROCESSORS_CONF/_SC_NPROCESSORS_ONLN to sysconf

PR-1305 libc: Implement WNOHANG for waitpid and waitid

PR-1237 libc: Add minimal support for locale_t operation:  suplocale, freelocale, newlocale, userlocale

PR-1317 sched/task: Unify task initialization

PR-1187 sched: Unify main thread and pthread behavior

Bug Fixes

PR-2263 libc/stdio: Preallocate stdin, stdout, stderr

PR-2053 PR-2040 serial/termios: Support custom baudrate setting

Bug Fixes

PR-1911 init_section was PR-1911 init_section was not being emitted resulting in C++ static constructors not being called.

...

PR-1619 Fix inverted errno in mq_open

PR-1595 epoll_wait() must loop until "maxevents" to fille output evs array

PR-1519 libc: Replace index/rindex from macro to function to protect against side effects with conflicting local variables

PR-1514 Remove usage for user-space memalign() from kernel/driver code.  Instead use the proper kernel memory interface.

PR-1512 / PR-1510 / PR-1507 Remove usage for user-space malloc()/zalloc()/free() from kernel/driver code.  Instead use the proper kernel memory interface.

PR-1496 libc: Change ctype macro to normal function to resolve macro evaluation side effects

PR-1463 libc: Replace all malloc/free with lib_malloc/lib_free inside libc

PR-1365 up_assert should not call exit() directly because it is only callable from userspace

PR-1336 syscall: Fix prctl PR_SET_NAME failure if called without pid argument

PR-1289 Clear the error indicator with rewind()

PR-1254 libc: mkstemp only look at the trailing X's instead of the first X

PR-1311 libc: Move double_t typedef from sys/types.h to math.h

PR-1328 Make sure that pthread_cleanup functions are only called from userspace

PR-1318 nxsched_release_tcb should release stack in kernel build, fixes memory leak

PR-2951 sched: Fix deadlock in nxtask_exit() for SMP

PR-2229 PR-2298 PR-2279 PR-2272 PR-2264 PR-1992 PR-2022 sched: SMP fixups that caused locking and removal of some no longer required workarounds

PR-1993 libc: Skip close stdin/stdout/stderr in fclose

PR-1997 libc: Remove all calls to fclose with stdin/stdout/stderr with fclose


Major Changes to Documentation

PR-1763 Add quickstart documentation

PR-1677 Add simulator, drivers, and contributing instructions for new users

PR-1675 Add quickstart documentation from NuttX Companion

PR-1673 Update all the links in the documentation to point to nuttx.apache.org or the Apache NuttX wiki instead of old nuttx.org resources

PR-1501 Port all the existing documentation from HTML files to Sphinx based documentation along with a bunch of updates and improvments

PR-1433 Convert README documentation to Markdown

...

PR-1786 Support building external code into the OS

PR-1396 Make C/C++ search path common so all boards support uClibc++/libc++ automatically

PR-1682 configure.sh can now list configurations with "-L" option

PR-2023 tools: Remove WSL configruation.  This is just Linux now.

Bug Fixes

PR-1713 Fix export target: libboard was missing KERNEL flag.

...

PR-1332 Include incdir.c in the export target

PR-1995 Fix issue where wrong extension was generated for mkconfig in WSL builds

PR-1949 Fix issue in make export where nuttx-names.dat was not being generated

PR-1682: Fix issue where windows style paths might not be handled correctly breaking Cygwin builds

...

PR-1847 ARM: Initial support for ARMV6M to support CortexM0+

PR-1397: EOSS3: Initial support for the QuickLogic EOS S3 SoC

...

PR-1558 SIM: Add support for Stack Smashing Protector.

PR-1392 SIM: Make uClibc++ and libcxx work on sim platform

PR-1460 SIM: Call sched_note_cpu_* when scheduler instrumentation is enabled

...

PR-1865 STM32F4:  Add support for STM32F412CE fixing I2C2/I2C3 and USART1 alt

PR-1506 STM32: Add support for single wire UART push/pull mode

PR-1572 STM32F2/F4: Add options for I-Cache and D-Cache to be enabled/disable.  Previously they were always enabled.

PR-1287 STM32F7: Refactor the FMC driver to support STM32F7 family and add support to the STM32F46G-DISCO board

PR-1275 STM32: Allow SysTick to be a tickless clock source option

PR-1268 STM32: Add support for STM32F412 with UART / SPI / CAN / I2C / DMA

PR-1250 STM32L4: Add support for booting into DFU mode

Bug Fixes

ARM

PR-1562 ARM: Save tcb-adj_stack_size should be saved without tls overhead

PR-1900 ARM: Fix false reporting for stack usage for unaligned stacks

AVR

PR-1410 avr: Implement missing double_t type, CONFIG_STACK_ALIGNMENT, linker emulation flags

...

PR-1620 cxd56xx: Fix IRQ control in cxd56_dmac.c

PR-1253 cxd56xx: Fix audio cxd56_stop where a deadlock could be hit if the worker thread took too long to turn on AMP

PR-1950 cxd56xx: Fix deadlock and tcb corruption in SMP mode

...

PR-1908 ESP32: Fix task signal process preemption

PR-1941 ESP32: Fix interrupt clearing of edge interrupt due to issuing in masking interrupt state

IMXRT

PR-1527 IMXRT: Fix kconfig so that IMXRT_ENET_NRXBUFFERS can be set

PR-1455 IMXRT: Fix auto-negotiation for KSZ8081 PHY

Kinetis

PR-1273 Kinetis: Fix issue in ethernet driver where buffers were blindly initialized and could cause the TX of the MAC to be in a bad state.  Also resolves an issue with interrupts being throttled in the NVIC.

...

PR-1888 SIM: Fix EOVERFLOW returned when CONFIG_SIM_M32 is set

PR-1709 SIM: Fix up_cpu_start initialization for macOS with SMP enabled

...

PR-1556 STM32: Fix IO compentation support in STM32F7 and remove incorrect reference in STM32F0/L0/G0

PR-1529 STM32: Fix intialization bug in ADC that prevented adc_reset() from working correctly

PR-1561 STM32: Make sure that core over-drive is enable for all chips that support it and operating at 180MHz.  Some were enabled at 180MHz but may have not been stable without over-drive not configured.

PR-1553 STM32F7: Fix possible interrupt blocking in serial TXDMA ISR

PR-1544 STM32: Make sure IO compenstation cell is configured prior to call to rcc_enableperipherals() causing syscfg is accessed before it is enabled

PR-1380 STM32F7: Fix tickless driverw where th compare register could be set to a value that has just passed preventing expiration

PR-1252 STM32L4: Fix 48MHz MSI clock seclection that could cause boot to hang

PR-1310 STM32L4: Configure flash wait states earier to prevent corruption of execution state

PR-1248 STM32L4: Fix oneshot timer so that a minimum period is set otherwise it will never be triggered.

PR-1247 STM32L47x/8x: Set additional registers require to place a pin in analog mode

PR-1246 STM32L4: Fix issue where clock divider for serial baud rate was not set correctly

...

PR-1741 mmcsd_sdio: Properly arm the write completion detection

PR-1370 can: Fix incorret usage of nxsem_getvalue which caused fifo->rx_sem to increase with teach received msg

PR-1452 lcd: Fix memory leak when board_graphics_setup fail

...

PR-1276 Add support for the ST7735 TFT Controller

PR-1233 usbhost: Add support for CDC-MBIM USB host driver

...

PR-1466 Altair Modem: Add board specific logic, Fix issue that SPI4 RX frequency violated AC Spec, Fix priority of SPI transfer task is too low, Modify timeout value for RX ready

PR-1471 ramlog: Add option to overwrite buffer

PR-1547 usbhub: Make sure to enumerate hubs that report protocol = 1 (High Speed Hub)

PR-1374 gpio: Extend gpio_pintype_e for pulldown/up and opendrain

PR-1249 bmp280: Add support for reading temperature

PR-1299 mpu60x0: Add I2C support for the MPU60x0 sensor driver

PR-1325 can: expose NART/ABOM and RTR settings via ioctls

PR-1520 note: Move note driver from syslog to drivers/note

PR-1288 / PR-1449 note: Add sched_note_syscall_enter/leave hooks for syscall instrumentation

PR-1259 note:  Add buffering support for syscall instrumentation

PR-1256 note: Add hooks for note driver for interrupt instrumentation

...

PR-1618 metro-m4: Add support for: SmartFS initialization, AT24 EEPROM, GPIO dev, BQ27426 gague initialization

PR-1727 b-g474e-dpow1: Add support for FLASH bootloader

PR-1683 cxd56xx: Add wifi_smp configuration

PR-1668 sim: Add new configuration for SMP

PR-1644 stm32f746g-disco: Move serial console from USART6 to USART1 which is attached to the USB virtual COM port.

PR-1464 cxd56xx: Add new GNSS functions, support for lower PWM frequency, CONFIG_CPUFREQ_RELEASE_LOCK, high speed ADC, HPADC input gain configuration, eMMC device, frame buffer support

PR-1405 stm32f4discovery: Add ELF support to wifi configuration

PR-1402 imxrt1060: Add buttons support to iMXRT1060

PR-1590 sim: Add duktape configuration

PR-1532 sim: Add cromfs configuration

PR-1335 cxd56xx: Enable basic snapshop camera example

...

PR-1633 NRF52: Add support for Sparkfun NRF52832 Breakout Board

PR-1728 SAMA5D27: Add support for Giant Board

PR-1397 EOSS3: Initial support for the QuickLogic EOS S3 SoC QuickFeather board

PR-1268 STM32: Add support for nucleo-f412zg board

...

PR-1737 vfs: reuse file_dup2 direction in file_dup to prevent segfault issue

PR-1490 Insure that filesystems can all support paths that end with '/'

PR-1546 ROMFS: Fix issue with how hard links are followed for ROMFS

PR-1442 SmartFS: Fix file size corruption when opening with overwriting mode

PR-1431 nxffs: Fix scan good block slowly and scan an invalid block

...

PR-1554 CROMFS: Add support for hard links

PR-1499 FAT: Add support for UTF8 long filename

PR-1479 vfs: Add file descriptor based events support eventfd()

PR-1582 vfs: Add epoll_create1() support

PR-1579 vfs: Do not check CONFIG_NFILE_STREAMS for mkdir/rename/rmdir/fs_unlink

PR-1355 vfs: Implement statvfs and fstatvfs

PR-1323 vfs: Add chmod/fchmod/utimes function prototypes

Networking

Bug Fixes

PR-1267 SocketCAN: When timestamped frame was recived while in CAN2.0B mode the frame got dropped.

PR-1446 usrsock: Fix recv() cannot peek data

...

PR-1666 Bluetooth:  Bluetooth sockets now use Linux sockaddr types of sockaddr_l2 sockaddr_hci sockaddr_rc.  There are slight breaking changes here that may require applications to be updated, but this brings the interface inline with Linux.

PR-1581 Socket: Add SOCK_CLOEXEC/SOCK_NONBLOCK support

PR-1443 usrsock: Add flag argument to sendto/recvfrom interface in usrsock

PR-1238 SocketCAN: Add support for SocketCAN interface API

Applications

Significant Improvements

PR-409 wamr: Update version to 09-29-2020 that supports NuttX directly and remove patches

PR-407 ipcfg:  Add IPv4 configuration file access helper

PR-406 wamr: Add configs for heap pool and custom name sections

PR-404 timer: Add supplying timer dev path to example

PR-403 nxplayer/nxrecorder: Add channel map support

PR-396 wamr: Add missing options to kconfig

PR-395 dhcpc: Try to get hostname via syscall first

PR-391 wapi: Add option to assocated directly via bssid

PR-390 wapi: App option to scan partial channel

PR-387 wamr: Add support for WAMR web assembly interpreter

PR-337 docs: Convert all README files to markdown

PR-333 webclient: Add hooks for TLS, extra request headers, PUT method, report status code, improved error handling

PR-329 gpio: Add support for new GPIO pin types

PR-317 nshlib: Call symlink if user pass -s for ln command

PR-315 c++: Support uClibc++ and libcxx in examples/testing

PR-314 camera: Add a simple camera snapshot example

PR-378 wasm3: Initial WebAssembly runtime support

PR-374 bluetooth: Use the new l2cap socket address type

PR-373 duktape: Add duktape to global search path so it can be used as a library

PR-372 quickjs: Add support for QuickJS interpreter

PR-367 nsh: Accept the command line arguments like sh

PR-365 duktape: Add console, print, alert support

PR-364 cu:  Refactor cu and add support for "-c" to disable \n to \r\n conversion

PR-362 libuv: Add support for libuv library

PR-352 duktape: Add initial support for duktape

PR-346 wget: Enable URL from command line, can be used with ifup, hooks for HTTPS

PR-302 lvgl: Use the latest version 7.0.2

PR-300 note: Add support for decoding interrupt and syscall instrumentation

PR-299 nxrecorder: Add O_TRUNC when creating a file

PR-296 bmp280: Add support for BMP180 to BMP280 application

PR-294 can: Add cansend and candump utilities for interacting with SocketCAN

Bug Fixes

PR-411 wgetjson: Fix build breakage

PR-405 nxplayer: Fix missing "%d" in a sscanf call

PR-400 dhcpc: Handle case where gethostname() might be empty

PR-399 build: Fix build system issue where compiler would only compile first assembly file

PR-393 build: Fix build system issue where ARCHCPUFLAGS in cxx command was lost

PR-392 wapi: Make wapi more robust in failure cases

PR-383 ntpclient: Fix NTP daemon state in case of DNS failure

PR-344 gs2200m: Fix freeing of uninitialized memory

PR-335 ntp: Fix malformated authentication headers in NTP packet

PR-331 telnetd: Fix buffer overflow issue clearing socket address

PR-312 build: Make sure to include incdir when running make export

PR-377 readline: Fix stack overflow when application name is too long

PR-359 nshlib: Fix memory corrupt in nsh_parse if pthread_create() failed

PR-354 dhcpd: Fix member name for "ds_pid"

...