| :orphan: |
| |
| .. _zephyr_2.2: |
| |
| Zephyr 2.2.0 (Working Draft) |
| ############################ |
| |
| We are pleased to announce the release of Zephyr RTOS version 2.2.0. |
| |
| Major enhancements with this release include: |
| |
| * We added initial support for 64-bit ARMv8-A architecture (Experimental). |
| * CANopen protocol support through 3rd party CANopenNode stack |
| |
| The following sections provide detailed lists of changes by component. |
| |
| Security Vulnerability Related |
| ****************************** |
| |
| No security vulnerabilities received. |
| |
| API Changes |
| *********** |
| |
| Deprecated in this release |
| ========================== |
| |
| * Settings |
| |
| * SETTINGS_USE_BASE64, encoding values in base64 is marked for removal. |
| |
| Stable API changes in this release |
| ================================== |
| |
| * GPIO |
| |
| * GPIO API has been reworked to support flags known from Linux DTS GPIO |
| bindings. They will typically be defined in the board DTS file |
| |
| - GPIO_ACTIVE_LOW, GPIO_ACTIVE_HIGH used to set pin active level |
| - GPIO_OPEN_DRAIN, GPIO_OPEN_SOURCE used to configure pin as open drain or |
| open source |
| - GPIO_PULL_UP, GPIO_PULL_DOWN used to configure pin bias |
| |
| * Reading / writing of pin logical level is supported by gpio_pin_get, |
| gpio_pin_set functions. |
| * Reading / writing of pin physical level is supported by gpio_pin_get_raw, |
| gpio_pin_set_raw functions. |
| * New set of port functions that operate simultaneously on multiple pins |
| that belong to the same controller. |
| * Interrupts should be configured by a dedicated |
| gpio_pin_interrupt_configure() function. Configuring interrupts via |
| gpio_pin_configure() is still supported but this feature will be removed |
| in future releases. |
| * New set of flags allows to set arbitrary interrupt configuration (if |
| supported by the driver) based on pin physical or logical levels. |
| * New set of flags to configure pin as input, output or in/out as well as set |
| output initial state. |
| * Majority of the old GPIO API has been deprecated. While the care was taken |
| to preserve backward compatibility due to the scope of the work it was not |
| possible to fully achieve this goal. We recommend to switch to the new GPIO |
| API as soon as possible. |
| * Areas where the deprecated API may behave differently to the original old |
| implementation are: |
| |
| - Configuration of pin interrupts, especially involving GPIO_INT_ACTIVE_LOW |
| and GPIO_POL_INV flags. |
| - Behavior of gpio_pin_configure() when invoked without interrupt related |
| flags. In the new implementation of this deprecated functionality the |
| interrupts remain unmodified. In the original implementation some of the |
| GPIO drivers would disable the interrupts. |
| |
| * Several drivers that rely on the functionality provided by the GPIO API |
| were reworked to honor pin active level. Any external users of these |
| drivers will have to update their DTS board files. |
| |
| - bluetooth/hci/spi.c |
| - display/display_ili9340.c |
| - display/ssd1306.c |
| - ieee802154/ieee802154_mcr20a.c |
| - ieee802154/ieee802154_rf2xx.c |
| - lora/sx1276.c |
| - wifi/eswifi/eswifi_core.c |
| - majority of the sensor drivers |
| |
| * PWM |
| |
| * The pwm_pin_set_cycles(), pwm_pin_set_usec(), and |
| pwm_pin_set_nsec() functions now take a flags parameter. The newly |
| introduced flags are PWM_POLARITY_NORMAL and PWM_POLARITY_INVERTED |
| for specifying the polarity of the PWM signal. The flags parameter |
| can be set to 0 if no flags are required (the default is |
| PWM_POLARITY_NORMAL). |
| * Similarly, the pwm_pin_set_t PWM driver API function function now |
| takes a flags parameter. The PWM controller driver must check the |
| value of the flags parameter and return -ENOTSUP if any |
| unsupported flag is set. |
| |
| * USB |
| |
| * The usb_enable() function, which was previously invoked automatically |
| by the USB stack, now needs to be explicitly called by the application |
| in order to enable the USB subsystem. |
| * The usb_enable() function now takes a parameter, usb_dc_status_callback |
| which can be set by the application to a callback to receive status events |
| from the USB stack. The parameter can also be set to NULL if no callback is required. |
| |
| * nRF flash driver |
| |
| * The nRF Flash driver has changed its default write block size to 32-bit |
| aligned. Previous emulation of 8-bit write block size can be selected using |
| the CONFIG_SOC_FLASH_NRF_EMULATE_ONE_BYTE_WRITE_ACCESS Kconfig option. |
| Usage of 8-bit write block size emulation is only recommended for |
| compatibility with older storage contents. |
| |
| * Clock control |
| |
| * The callback prototype (clock_control_cb_t) has now additional argument |
| (clock_control_subsys_t) indicating which clock subsystem got started. |
| |
| Removed APIs in this release |
| ============================ |
| |
| * Shell |
| |
| * SHELL_CREATE_STATIC_SUBCMD_SET (deprecated), replaced by |
| SHELL_STATIC_SUBCMD_SET_CREATE |
| * SHELL_CREATE_DYNAMIC_CMD (deprecated), replaced by SHELL_DYNAMIC_CMD_CREATE |
| |
| * Newtron Flash File System (NFFS) was removed. NFFS was removed since it has |
| serious issues, not fixed since a long time. Where it was possible |
| NFFS usage was replaced by LittleFS usage as the better substitute. |
| |
| Kernel |
| ****** |
| |
| * <TBD> |
| |
| Architectures |
| ************* |
| |
| * ARC: |
| |
| * <TBD> |
| |
| * ARM: |
| |
| * Added initial support for ARMv8-A 64-bit architecture (Experimental) |
| * Added support for Direct Dynamic Interrupts in ARM Cortex-M |
| * Fixed several critical bugs in ARM Cortex-R architecture port |
| * Fixed several critical bugs in Stack Limit checking for ARMv8-M |
| * Added QEMU emulation support for ARM Cortex-A53 |
| * Enhanced QEMU emulation support for ARM Cortex-R architecture |
| * Enhanced test coverage for ARM-specific kernel features |
| * Added support for GIC SGI and PPI interrupt types |
| * Refactored GIC driver to support multiple GIC versions |
| |
| * POSIX: |
| |
| * N/A |
| |
| * RISC-V: |
| |
| * Added GPIO driver for LiteX VexRiscv |
| * Fixed Ethernet networking for LiteX VexRiscv |
| * Added Programmable Interrupt Controller support for SweRV |
| * Fixed invalid channel bug for RV32M1 interrupt controller |
| * Added PWM support for RV32M1 |
| * Optimized reads of MTIME/MTIMECMP on 64-bit RISC-V |
| |
| * x86: |
| |
| * <TBD> |
| |
| Boards & SoC Support |
| ******************** |
| |
| * Added support for these SoC series: |
| |
| .. rst-class:: rst-columns |
| |
| * Atmel SAM4E |
| * Atmel SAMV71 |
| * Broadcom BCM58400 |
| * NXP i.MX RT1011 |
| * Silicon Labs EFM32GG11B |
| * Silicon Labs EFM32JG12B |
| * ST STM32F098xx |
| * ST STM32F100XX |
| * ST STM32F767ZI |
| * ST STM32L152RET6 |
| * ST STM32L452XC |
| * ST STM32G031 |
| |
| |
| * Added support for these ARM boards: |
| |
| .. rst-class:: rst-columns |
| |
| * Atmel SAM 4E Xplained Pro |
| * Atmel SAM E54 Xplained Pro |
| * Atmel SAM V71 Xplained Ultra |
| * Broadcom BCM958401M2 |
| * Cortex-A53 Emulation (QEMU) |
| * Google Kukui EC |
| * NXP i.MX RT1010 Evaluation Kit |
| * Silicon Labs EFM32 Giant Gecko GG11 |
| * Silicon Labs EFM32 Jade Gecko |
| * ST Nucleo F767ZI |
| * ST Nucleo G474RE |
| * ST Nucleo L152RE |
| * ST Nucleo L452RE |
| * ST STM32G0316-DISCO Discovery kit |
| * ST STM32VLDISCOVERY |
| |
| * Removed support for these ARM boards: |
| |
| .. rst-class:: rst-columns |
| |
| * TI CC2650 |
| |
| |
| * Added support for these following shields: |
| |
| .. rst-class:: rst-columns |
| |
| * ST7789V Display generic shield |
| * TI LMP90100 Sensor Analog Frontend (AFE) Evaluation Board (EVB) |
| |
| * Removed support for these following shields: |
| |
| .. rst-class:: rst-columns |
| |
| * Link board CAN |
| |
| Drivers and Sensors |
| ******************* |
| |
| * ADC |
| |
| * <TBD> |
| |
| * Bluetooth |
| |
| * <TBD> |
| |
| * CAN |
| |
| * Support for CAN_2 on STM32, but no simultaneous use of CAN_1 and CAN_2. |
| * Support for STM32F3 and STM32F4 series |
| |
| * Clock Control |
| |
| * <TBD> |
| |
| * Console |
| |
| * <TBD> |
| |
| * Counter |
| |
| * The counter_read() API function is deprecated in favor of |
| counter_get_value(). The new API function adds a return value for |
| indicating whether the counter was read successfully. |
| |
| * Display |
| |
| * <TBD> |
| |
| * DMA |
| |
| * <TBD> |
| |
| * EEPROM |
| |
| * Added EEPROM driver for STM32L0 and STM32L1 SoC series |
| * Added EEPROM simulator (replacing native_posix EEPROM driver) |
| |
| * Entropy |
| |
| * <TBD> |
| |
| * Ethernet |
| |
| * Support for SiLabs Giant Gecko GG11 Ethernet driver |
| |
| * Flash |
| |
| * <TBD> |
| |
| * GPIO |
| |
| * <TBD> |
| |
| * Hardware Info |
| |
| * <TBD> |
| |
| * I2C |
| |
| * <TBD> |
| |
| * I2S |
| |
| * <TBD> |
| |
| * IEEE 802.15.4 |
| |
| * Add support for IEEE 802.15.4 rf2xxx driver |
| |
| * Interrupt Controller |
| |
| * <TBD> |
| |
| * IPM |
| |
| * <TBD> |
| |
| * Keyboard Scan |
| |
| * <TBD> |
| |
| * LED |
| |
| * <TBD> |
| |
| * LoRa |
| |
| * Added APIs and drivers needed to support LoRa technology by reusing the |
| LoRaMac-node library. |
| |
| * Modem |
| |
| * Add support for generic GSM modem |
| |
| * Pinmux |
| |
| * <TBD> |
| |
| * PS/2 |
| |
| * <TBD> |
| |
| * PWM |
| |
| * <TBD> |
| |
| * Sensor |
| |
| * <TBD> |
| |
| * Serial |
| |
| * <TBD> |
| |
| * SPI |
| |
| * <TBD> |
| |
| * Timer |
| |
| * <TBD> |
| |
| * USB |
| |
| * <TBD> |
| |
| * Video |
| |
| * <TBD> |
| |
| * Watchdog |
| |
| * <TBD> |
| |
| * WiFi |
| |
| * <TBD> |
| |
| Networking |
| ********** |
| |
| * Add support to configure OpenThread Sleepy End Device (SED) |
| * Add 64-bit support to net_buf APIs |
| * Add support for IEEE 802.15.4 rf2xxx driver |
| * Add TLS secure renegotiation support |
| * Add support for Timestamp and Record Route IPv4 options. |
| They are only used for ICMPv4 Echo-Request packets. |
| * Add sample cloud application that shows how to connect to Azure cloud |
| * Add optional timestamp resource to some of the LWM2M IPSO objects |
| * Add support to poll() which can now return immediately when POLLOUT is set |
| * Add support to PPP for enabling connection setup to Windows |
| * Add signed certificate support to echo-server sample application |
| * Add support for handling multiple simultaneous mDNS requests |
| * Add support for SiLabs Giant Gecko GG11 Ethernet driver |
| * Add support for generic GSM modem which uses PPP to connect to data network |
| * Add UTC offset and timezone support to LWM2M |
| * Add RX time statistics support to packet socket |
| * Update ACK handling in IEEE 802.154 nrf5 driver and OpenThread |
| * Update MQTT PINGREQ count handling |
| * Update wpan_serial sample to support more boards |
| * Update Ethernet e1000 driver debugging prints |
| * Update OpenThread to use settings subsystem |
| * Update IPv6 to use interface prefix in routing |
| * Update socket offloading support to support multiple registered interfaces |
| * Fix checks when waiting network interface to come up in configuration |
| * Fix zperf sample issue when running out of network buffers |
| * Fix PPP IPv4 Control Protocol (IPCP) handling |
| * Fix native_posix Ethernet driver to read data faster |
| * Fix PPP option handling |
| * Fix MQTT to close connection faster |
| * Fix 6lo memory corruption during uncompression |
| * Fix echo-server sample application accept handling |
| * Fix Websocket to receive data in small chunks |
| * Fix Virtual LAN (VLAN) support to add link local address to network interface |
| * Various fixes to new TCP stack implementation |
| * Remove NATS sample application |
| |
| CAN Bus |
| ******* |
| |
| * CANopen protocol support through 3rd party CANopenNode stack. |
| * Added native ISO-TP subsystem. |
| * Introduced CAN-PRIMARY alias. |
| * SocketCAN for MCUX flexcan. |
| |
| Bluetooth |
| ********* |
| |
| * Host: |
| |
| * <TBD> |
| |
| * BLE split software Controller: |
| |
| * <TBD> |
| |
| * BLE legacy software Controller: |
| |
| * <TBD> |
| |
| Build and Infrastructure |
| ************************ |
| |
| * The minimum Python version supported by Zephyr's build system and tools is |
| now 3.6. |
| * Renamed :file:`generated_dts_board.h` and :file:`generated_dts_board.conf` to |
| :file:`devicetree.h` and :file:`devicetree.conf`, along with various related |
| identifiers. Including :file:`generated_dts_board.h` now generates a warning |
| saying to include :file:`devicetree.h` instead. |
| * <Other items TBD> |
| |
| Libraries / Subsystems |
| *********************** |
| |
| * LoRa |
| |
| * LoRa support was added through official LoRaMac-node reference |
| implementation. |
| |
| HALs |
| **** |
| |
| * HALs are now moved out of the main tree as external modules and reside in |
| their own standalone repositories. |
| |
| Documentation |
| ************* |
| |
| * <TBD> |
| |
| Tests and Samples |
| ***************** |
| |
| * <TBD> |
| |
| Issue Related Items |
| ******************* |
| |
| These GitHub issues were addressed since the previous 2.1.0 tagged |
| release: |
| |
| .. comment List derived from GitHub Issue query: ... |
| * :github:`issuenumber` - issue title |