blob: 97c18c4f80f95a6c801aaca2ccf8177aa8deb182 [file] [log] [blame]
NuttX-9.0.0
-----------
This is the first release of NuttX as Apache NuttX (Incubating) and represents our first major milestone as a Podling of the Apache Software Foundation's Incubator. This release is the culmination of nearly 6 months of hard work and includes several new architectures and drivers, and numerous improvements and bug fixes to the core RTOS, drivers, and networking subsystems.
* Major Changes to Core OS
* Bugfixes
- nxsem_wait_uninterruptible() now returns if the task is canceled.
- Fix a bug in pthread_condwait() that was improperly re-initializing the mutex.
- In sched_setpriority(), fix functions called inside a DEBUGASSERT that were eliminated when assertions are disable
* Compatibility Concerns
- The configuration option CONFIG_CAN_PASS_STRUCT is now removed. Previously, it was used (at the cost of breaking standards support) to support older versions of the SDCC compiler that couldn't pass structs/unions as functions' parameters. A newer version of the compiler has resolved the issue.
* Major Changes to Build System
- Add a post-build function that allows extending the build with CPU/board-specific logic.
- Add build tools to simplify ZDS-II tool usage.
- mkexport.sh: Deal with ARCHSCRIPT containing multiple files.
- Various nxstyle improvements.
* Architectural Support
* New architecture support
- Add support for RISCV-64
- Add support for x86_64 (tested on QEMU)
- Add support for ELF64
- Add a port to the NUCLEO-F429ZI board
- Add support for the STM32H747I-DISCO board
- Add Z20X board support and bootloader to upload code from the W25 flash to SRAM
- Add initial support for Litex with softcore CPU VexRiscV SoC
- Add support for the Digilent ARTY_A7 board to test the Litex port
- Added initial support for Sipeed Maix Bit board with Kendryte K210 processor
- New architectural support: ez80f92
- Flat address x86_64 port of NuttX
- Support to run NuttX on ESP32 QEMU
- Initial support for Sipeed Maix Bit board with Kendryte K210 processor
- Add initial support for Kendryte K210 processor in SMP mode
- NXP S32K11x (Cortex-M0+) and S32K14x (Cortext-M4F): Add support for NXP automotive boards.
- XMC 4700 (Cortex-M4F)
* Architectures with significant improvements
- ESP32 loadable modules support
- i.MX RT: FLEXIO clock config logic.
- Fix the clock configuration for the i.MX RT family
- i.MX RT: Add ability to run from OCRAM
- SAMA5D27 peripheral support - USB Host working
- z20x: Add W25 bootloader
- i.MX RT: Add USB Device support
- STM32, STM32F7, STM32H7 add SPI DMATHRESHOLD
- Improve the simulator timer
- 64-bit modules on macOS simulator
- z20x: Add XTP2046 SPI support; add timer support
- RX65N RTC Driver added
- NXP Freedom K28F Board SD-Card support
- STM32H7: support SDRAM via FMC peripheral
- LM3S6965-ek: Add PROTECTED build support
- STM32H7: Added IWDG and WWDG, power management (sleep/stop/standby), WKUP pin configuration
- SAMV71: Add read UID implementation and move flash functions to RAM
- i.MX RT: Fix interrupts storm (serial & I2C)
- Various fixes and cosmetic changes to the CxD56xx architecture
- Fix SiFive FE310 related code (comments, improve serial irq handling, initial int status)
- Implement QSPI for STM32H7
- Improvements for the nRF52 port: I2C, SPI, GPIO support
- Updates for LPC17xx/40xx serial
- Adds basic support for Microchip SAM E54 Xplained Pro board
- Adds an Ethernet driver for the SAME5x family (based on the SAMA5 GMAC driver)
- Add CDC ECM Ethernet over USB 2.0 High Speed (tested on SAMA5D36-Xplained board)
- Simulator: Reimplement simulator uart on top of serial driver framework
- NXP S32K1XX peripheral clock fixes
- Fix syscall stack alignment on armv7-m
- Fix flash_erase(page) when page >= 256 for STM32L4 family
- Add partial support for the NETLINK poll() operation.
- Add serial DMA support for STM32F7
- Add AM335x Clock Configuration
- Add I2C support for AM335x
- Add configuration to fine tune LPI2C Timeout for iMXRT
- Add CAN support to AM335x
- Add I2C support to STM32F0/L0/G0
- Kinetis LPC SDCard improvements
- Replace the busy polling with work_queue in the ethernet driver of simulator
- Fix Xtensa's SMP support to follow same logic from other SMP archs
- PIC32MZ: SPI transfers can be configured to use DMA.
- PIC32MZ: Implement cache operations.
* Driver Support
* New drivers
- New driver for the ADS7828 I2C analog to digital converter
- driver/ioexpander: New driver for PCA9538 I2C I/O expander
- New driver type for battery monitor ICs.
- Driver for the BQ769x0 battery monitor IC.
- Add Support for Quectel EC20 4G LTE Module USB CDC/ACM
- Add QSPI-based Winbond NOR FLASH driver
* Drivers with significant improvements
- Update all the drivers to check return value of nxsem_wait_uninterruptible().
- MCP9844 shutdown mode support
- fcntl: add O_CLOEXEC flag, add O_CLOEXEC/FD_CLOEXEC support
- CDC-ECM Ethernet over USB 2.0 HS
- smartfs improvements: Handling of duplicate sectors, support fsck to check and repair the smartfs file system, and recover SPI Flash from initial error state.
- Various fixes for USBDEV driver: Remove unnecessary reset logic, fix descriptor type mismatch when dual speed is enabled, fix invalid/unsupported command processing, and fix string ID calculation.
- Handle size zero in umm_malloc.c and umm_realloc.c, which causes a system freeze in kernel mode.
- Fixed compilation issue with poll fds notification.
- Report POLLHUP and POLLERR in 'revents' regardless the requested 'events' set.
* Networking
- Telnet: Fix/Refine CTRL+C to work on telnet
- TCP: Fix of faulty TCP sequence increments
- netdb: Fix netdb to query IPv4 and IPv6 addresses regardless the server address type
- Netlink sockets may be set to non-blocking
- Improve TUN and SLIP, refine Control+C Handling in Telnet
- Sockets: Add socket MSG_DONTWAIT support
- Network Loopback Driver: Add a configuration option to control packet size
- Network IOCTLs: Add FIONBIO network IOCTL support
- NFS: Support IPv4 and TCP
- Sockets: Add IP and TCP socket options needed by iperf3
- Netlink: Add support for asynchronous Netlink responses
- TCP: Monitor TCP_POLL/TCP_NEWDATA/TCP_BACKLOG per the request like UDP counterpart
- TCP: Minor design improvement to TCP delayed ACKs
- DNS IPv4/IPv6 Dual Host Support: When IPv4/IPv6 Dual Stack is enabled, queries both types of addresses regardless of whether the DNS server is accessed via IPv4 or IPv6. As a result, getaddrinfo() may return a mixed (IPv4/IPv6) address list.
* Applications
* Improvements
- Extend netutils and netinit to work with only Netlink sockets enabled
- Add getprime program to check multi-thread performance
- Improve zmodem send performance
- Add simple HTS221, LSM303 and LSM6DSL examples
- Improve to gs2200m wiki performance
- Improve telnet server and enable it to listen on both IPv4 and IPv6
- Improve ntpclient logic
- Improve wapi to save configuration to file system
- Improve wapi to skip associate if ssid is invalid
- Improve cmd_nfsmount to use IPv4 and IPv6
- Improve ostest for SMP and non-SMP configurations
- Improve UDP to avoid using standard symbols
- Improve dhcpd to include configurable timeout and retry count
* Bugfixes
- Correct format when printing ARP tablet entries
- Ensure /bin/ping and ping work at the same time
- Correct backward conditional logic in dhcpd_leaseexpired()
- Fix several problems on ftpd
- Fix dhcpd issue reported on Issue #17
- Fix sendmail example to run on a local SMTP server
- Fix buffer overflow on netlib
- Fix compile errors in loopback mode of the tcpblaster
- Fix stack corruption in ELF task test
- Fix errors in NoBlockRecv and BlockRecv tests of usrsocktest
- Fix ipforward IP Header issue for IPv4
- Fix wrongly swapped parity options of CU program
- Fix slcd to avoid using priv->fd before initializing it
- Fix (tcp, udp)blaster to build on macOS
- Correct the buffer type of base64 program