FOUNDRIES.IO INSIGHTS

Zephyr Development News 26 July 2018

By Marti Bolivar | July 26, 2018

This is the 26 July 2018 newsletter tracking the latest Zephyr development merged into the mainline tree on GitHub.

As usual, content is broken down as follows:

  • Highlights
    • Important changes: ABI/API breaks and some features
    • New features: non-exhaustive descriptions of new features
    • Bug fixes: non-exhaustive list of fixed bugs
  • Individual changes: a complete list of patches, sorted chronologically and categorized into areas, like:
    • Architectures
    • Kernel
    • Drivers
    • etc.

Highlights

This newsletter covers Zephyr between the following commits:

  • 8c2acab5 (“drivers: add i.MX I2C driver shim”), merged 6 July 2018
  • 29b65859 (“net: samples: Add TLS support to socket echo_client/echo_server”), merged 26 July 2018

Important Changes

Initial socket-based TLS support:

Initial support was added for network communication via TLS through the sockets API. Support includes:

  • a credential management subsystem: the <net/tls_credentials.h> API allows users to define and manage a pool of credentials, which include certificates, private keys, and pre-shared symmetric keys. The nonstandard TLS_SEC_TAG_LIST setsockopt() option was added to allow credential selection.
  • I/O syscalls: send(), recv(), and poll() support was added (poll() was also made thread safe).
  • hostname support: the TLS_HOSTNAME socket option can be used to set the system’s hostname.
  • handshake management: cipher suite management is done via the TLS_CIPHERSUITE_LIST and TLS_CIPHERSUITE_USED socket options; the TLS_PEER_VERIFY option can be used to override mbedTLS’s default settings for peer verification.
  • sample support: the http_get and big_http_download now support TLS sockets, including certificate validation via Let’s Encrypt certificates provided with the samples. TLS support was also added to the echo_client and echo_server samples.

The merger of this code is a significant change, as it unblocks rewrites or adaptations of Zephyr’s network protocol support stacks (such as MQTT, HTTP, CoAP and LWM2M, etc.) to support TLS via a setsockopt() API.

Standard C Memory Allocation:

Built-in support was added for malloc(), free(), calloc(), realloc(), and reallocarray(). The size of the memory pool which backs these allocations is determined by CONFIG_MINIMAL_LIBC_MALLOC_ARENA_SIZE, which defaults to zero to disable these functions unless they are needed. Support for this implementation is incompatible with use of the Newlib C library (which provides its own primitives based on a _sbrk() implementation provided by its runtime environment.)

New “Logger” Subsystem:

Zephyr has a new logging subsystem called Logger, which lives in subsys/logging, and which now has upstream documentation. This is a significant departure, both in terms of supported features and complexity, from the longstanding SYS_LOG APIs in <logging/sys_log.h>.

It seems to be early days, as no upstream subsystems have been moved over to Logger from SYS_LOG. It’s not clear if Logger will replace SYS_LOG in the long term.

Foundries.io is publishing a blog series discussing both Logger and SYS_LOG. The SYS_LOG post is available, and we’ll be releasing part 2 on Logger pending the results of a pull request containing some minor bug fixes.

Zephyr SDK minimum version bumped to 0.9.3:

Linux users who build with the Zephyr SDK are advised that the minimum version has been increased from 0.9.2 to 0.9.3, which was released in May. Zephyr will now refuse to build programs with older SDK versions.

Networking promiscuous mode support:

A new API was merged to <net/net_if.h> which allows entering and exiting promiscuous mode, as well as querying this mode, on a per-interface basis:

  • net_if_set_promisc(struct net_if*)
  • net_if_unset_promisc(struct net_if*)
  • net_if_is_promisc(struct net_if*)

Currently, support, testing, and samples are provided for Ethernet L2s. Users curious to try it out should see samples/net/promiscuous_mode.

Application shared memory:

When userspace is enabled, Zephyr now supports control of shared memory regions between threads. General usage information has been added to Zephyr’s documentation.

Ethernet driver API break:

The API in <net/ethernet.h> saw an incompatible change. The get_stats API callback now takes a struct device *, rather than a struct net_if *. In-tree users were updated; out of tree users will need updates.

Network packet format change:

The IPv6 implementation now handles large packets correctly. Fixing this required some changes to struct net_pkt, the core representation for network packets.

sys_clock_us_per_tick deprecated:

Usage of this variable was deprecated, as its value does not portably fit into an integer. Users are directed to use sys_clock_hw_cycles_per_sec and sys_clock_ticks_per_sec instead.

Features

Arches:

The Atmel SAM SoC files saw a cleanup as part of the SAMD20 support effort described below.

ARC architecture support for nsim was added.

Initial support for a new caching infrastructure on ARM SoCs was added with support for memory caching on ARM MPUs. See issue 8784 for more details and current status.

On x86, Zephyr can now boot on systems with a 64-bit BIOS, and got SoC support for Apollo Lake. A new architecture-specific CONFIG_REALMODE option was added as well; this enables booting Zephyr from real mode on x86, which was previously only available in the Jailhouse target.

The “native POSIX” pseudo-architecture grew support for registering functions which run at exit via the NATIVE_EXIT_TASK macro available in <soc.h>

ARM SoCs gained new abilities to recover from otherwise-fatal MPU faults.

Bluetooth:

Support was added for runtime configuration of the GAP device name. Changes are persisted to nonvolatile memory if CONFIG_BT_SETTINGS is enabled. The Bluetooth shell now has a name command which can be used to exercise this feature; without arguments, it prints the current name, and with a single argument, it sets the device name to the given value.

Boards:

New board support was added for the Silabs EFR32 Flex Gecko Wireless Starter Kit, Atmel SAMD20 XPlained Pro boards, nRF52 AdaFruit Feather, nRF52840 USB Dongle and x86 UP Squared.

The stm32f723e_disco board now has support for USB FS OTG and I2C, following the extension of driver support for those peripherals to STM32F7 MCUs.

The nrf52_pca10040 board has the UARTE peripheral enabled; the console now uses this instead of RTT.

FRDM-K64F now supports CONFIG_FS_FLASH_STORAGE_PARTITION.

The cc3220sf_launchxl board now automatically reconnects to the last known good WiFi AP at startup.

Build:

Crosstool-NG (stylized “xtools”) support has been added for the ARC architecture and IAMCU x86 variant. Xtools support was also declared on QEMU for ARM Cortex M3, NIOS-II, RISCV32, three variants of x86, and a couple of real ARM and x86 boards; this was merged as part of enabling CI testing for the new toolchain.

Vigilant removal of redundant default n properties from Kconfig files continues.

The build system’s calls to objcopy now fill gaps with 0xff bytes. This reduces time spent programming flash on some targets, since this value is what erased flash pages are filled with. Flash programmers which are smart enough to skip setting runs of 0xff will thus see improvements.

Cryptography:

The subsystem-wide TLS rewrite saw an interesting new addition, in the form of a “generic” mbedTLS configuration file in ext/lib/crypto/mbedtls/configs/config-tls-generic.h. This is now the default mbedTLS configuration file.

Users of the mbedTLS library will be familiar with its header-file system of configuration: when the library is compiled with the macro MBEDTLS_CONFIG_FILE defined, its sources include the file that macro expands to, which in turn enables, disables, or configures their features.

In the past, Zephyr has managed separate configuration files for different use cases. With this new addition, a single mbedTLS file can be maintained within tree, whose contents are controllable via Kconfig options defined in ext/lib/crypto/mbedtls/Kconfig.tls-generic. This bit of cleverness allows individual applications to set their TLS configuration within Kconfig fragment files.

Device Tree:

Bindings for i.MX7d I2C and PWM drivers were added in dts/bindings/i2c/fsl,imx7d-i2c.yaml and fsl,imx7d-pwm.yaml.

Bindings for STM32 OTG HS USB were added in dts/bindings/usb/st,stm32-otghs.yaml, along with SoC DTSI nodes for STM32F4 and STM32F7.

Documentation:

The documentation itself can now be built on all supported platforms, following conversion of its build system to CMake, and some helper scripts to Python. Its build system now also supports out of tree builds and inclusion within other builds, among a variety of other cleanups, fixes, and improvements.

The Doxygen documentation for the ARM SoC specific _Fault() routine, which handles fatal errors, has been improved and clarified.

Drivers:

gPTP support was added for the MCUX-based Ethernet driver for NXP devices.

An API was merged for Audio Codec devices. No drivers yet.

Support was added to the USB subsystem for Microsoft OS Descriptors, version 1. Additionally, USB device firmware authors can now override the usb_update_sn_string_descriptor() function to populate serial number descriptors at runtime.

PWM and I2C master drivers were added for the Cortex-M4 cores present on NXP i.MX7 SoCs (the nxp_imx/mcimx7_m4 SOC variant).

The nRF serial driver saw a lot of love. It now supports Device Tree, power management, and both 31250 and 56000 baud rates. The last improvement may be particularly useful for any users implementing Zephyr-based dial-up modem support.

The SiLabs GPIO and UART drivers now have support for EFR32 MCUs.

Driver support was added for Analog Devices ADT7420 16-bit I2C temperature sensors.

On STM32 MCUs:

  • USB OTG support was added for STM32F7 by adapting existing support for the STM32F4 series.

  • STM32F7 also grew I2C support.

  • The USB HS peripheral now has pin mux support for PB14/PB15 on STM32F4.

External:

The Zlib-licensed SiLabs “Gecko SDK” HAL was added, in order to support EFR32 MCUs.

Version 1.2.91 of the Atmel SAMD20 HALs were merged, in order to support the SAMD20 Xplained Pro board.

Kconfiglib was updated, bringing in support for the preprocessing language extensions described in the Linux file kconfig-macro-language.txt, as well as adding additional warnings.

Kernel:

Applications can now define their own system calls using the CONFIG_APPLICATION_DEFINED_SYSCALL Kconfig option. Previously, only source files in Zephyr’s include/ directory were scanned by the build system when looking for supported system calls.

Support for read() and write() was added when using Newlib.

Libraries:

Support for the CRC32 checksum algorithm was added to Zephyr’s CRC library. It can be accessed via <crc32.h>.

The JSON library grew a new helper macro with an apparently misleading name. The macro in question, JSON_OBJ_DESCR_ARRAY_ARRAY, appears to be used to declare descriptors for arrays of structs, rather than arrays of arrays.

POSIX compatibility was added for the pthread_once_t and pthread_key_t typedefs.

Networking:

The LWM2M implementation now allows its users to supply callbacks which are invoked on object creation and deletion (which, in the LWM2M protocol, may be initiated from across the network).

Samples:

A sample application demonstrating use of the new Analog Devices ADT7420 16-bit I2C temperature sensor driver was added to samples/sensor/adt7420.

The boards/nrf52/mesh/ samples were updated to pass the Bluetooth Profile Tuning Suite, among several other improvements.

The gptp networking sample has FRDM-K64F support, following the addition of PTP protocol support to that board’s Ethernet driver.

Scripts:

A new import_mcux_sdk.py script was added, which automates merging of new versions of the NXP MCUX HAL.

Testing:

The sanitycheck script now supports nsim as an emulation backend, following addition of this program as a mechanism for running ARC binaries in emulation.

The saga continues on the large project of adding Doxygen-based metadata to Zephyr’s test infrastructure to support more sophisticated CI, requirements traceability, etc.

A variety of tests were added or improved for multicore configurations and power management.

Bug Fixes

Arches:

ARM MPU support now follows recommendations for the proper use of data and instruction synchronization barriers when enabling and disabling the MPU.

Exception return on ARC no longer ignores updates to the PC register.

Device Tree:

The nRF UART0 peripheral with register base address 0x40002000 can be of two types (UART or UARTE), depending on the SoC. An internal cleanup fixing the dts.fixup and SoC dtsi files now forces their users to declare which peripheral is in use.

The NXP device tree binding YAML files saw some cleanups and build warning resolutions.

Documentation:

The documentation covering the gPTP networking protocol saw some fixes and enhancements.

Drivers:

A bug causing overwritten GPIO configurations and unstable firmware on Nordic devices was fixed.

The nRF serial port driver’s dependency on the Zephyr GPIO driver was replaced with calls into the nrfx GPIO HAL to avoid initialization order issues (UART is needed early for the console, but the GPIO driver isn’t initialized until later in the boot).

The nRF timer driver saw a bug fix related to the combination of a tickless kernel, k_busy_wait(), and k_sleep().

Improved management support for nRF52, including a bug fix for wake from sleep, were merged.

External:

Some out of tree patches were merged fixing bugs in the NXP MCUX Ethernet HAL driver.

Kernel:

Conversion results between system ticks and milliseconds when the system clock is set at runtime were fixed.

Use of the ‘errno’ lvalue from userspace was fixed.

Use of the console from userspace with Zephyr’s built-in libc was fixed.

Libraries:

A variety of fixes were merged affecting printf format string parsing and handling in Zephyr’s “minimal” libc.

Similarly, measures were introduced to ease compilation of various samples and libraries with the Newlib C library.

Networking:

The getaddrinfo() socket system call now properly allocates memory for its results, which can be freed with freeaddrinfo(). Previously, the implementation was simply using a global variable for its results, which precluded concurrent usage.

The LWM2M implementation ignores TLV options it cannot handle, rather than halting option processing when it receives one.

A potential null dereference in IPv6 address parsing was fixed, as was a memory leak which occurs when a neighbor solicitation request fails.

A variety of cleanups and fixes were merged affecting IPv4 and ICMPv4 support.

Samples:

The echo_server sample now uses the correct networking APIs to handle large IPv6 packets.

The Kconfig fragments used to build the echo_client and echo_server applications with TLS support on qemu_x86 were fixed, restoring that sample’s build in that configuration.

Testing:

A variety of incompatibilities between Zephyr’s fixed size integer types and those provided by the standard library were worked around or fixed.

Individual Changes

Patches by area (391 patches total):

  • Arches: 44
  • Bluetooth: 18
  • Boards: 21
  • Build: 15
  • Continuous Integration: 12
  • Device Tree: 9
  • Documentation: 24
  • Drivers: 50
  • External: 12
  • Firmware Update: 1
  • Kernel: 12
  • Libraries: 11
  • Logging: 18
  • Maintainers: 2
  • Miscellaneous: 1
  • Networking: 59
  • Samples: 36
  • Scripts: 6
  • Testing: 40

Arches (44):

  • 970c4f9c arch: Add imx7d_m4 i2c definitions
  • f93b3d19 arch: arm: fix linker script title comment
  • b3d34d2e arch: arm: nrf52: Support UARTE defines in dts.fixup
  • 530a7131 arm: nxp: mpu: Consolidate k64 mpu regions
  • 496b7994 arm: exx32: Add Silabs EFR32FG1P soc files
  • 6d5206e7 arm: exx32: Add additional include to efm32wg soc.h
  • 31aaf077 arch: atmel_sam0: move clk config options to common Kconfig
  • 781a2f02 arch: add support SAMD20 used in the SAMD20 Xplained Pro Board
  • d76e39f8 arch: atmel_sam0: Fix Kconfig warnings
  • d27aadf9 arch: arc: add nsim support in soc
  • 747b90c3 arch: arm: mpu: remove REGION_USER_RAM_ATTR macro
  • f5b00ff6 arch: arm: mpu: fix outer inner WBWA non-shareable macro
  • 06bb0553 arch: arm: mpu: enable WBWA caching on RAM
  • 15d3dfa9 arch: arm: mpu: enable WT caching on Flash
  • 8d1664c2 arch: arm: mpu: enable WBWA caching on per thread user RAM
  • 9aa2488e soc: stm32f4: add pinmux defs for usb on pb14 and pb15
  • 8bfddb52 arch: arm: mpu: fix _get_region_ap(.) function
  • 3cb9018e arch: x86: Kconfig: Fix CACHE_LINE_SIZE default for CPU_ATOM
  • a20cc9e7 arch: arm: nrf52: Enable interrupts on wake up from sleep
  • 942ab7ed esp32: include register headers in soc.h
  • 6e41f9e1 arch: arm: enable/disable MPU using API functions
  • 26e83aab arch/x86/soc: add SoC configuration for Apollo Lake
  • c2454309 arch: Add i.MX7 PWM get clock frequency function
  • d99f6ada arch: Add support for i.MX PWM
  • 15d847ad native: Add NATIVE_EXIT_TASK hooks
  • 414c39fc posix: add pthread_key and pthread_once APIs
  • 2e615181 arch: x86: Reorder the SoC power states for Quark SE
  • fe48f743 arch: arc: Fix Deep Sleep hang issue on Quark SE(ARC)
  • 7ce9615a nsim: add run target
  • 36271676 arm: arch.h: move extern “C” after includes
  • 45f069a4 arc: arch.h: move extern “C” after includes
  • 17282578 arc: fix update of ERET on exc return
  • f4645561 arch: arm: improve documentation of _Fault(.)
  • afef6452 arch: arm: Call NanoFatalErrorHandler and split out Secure stack dump
  • f713fa5d arch: arm: re-organize arm fault handling
  • 90b64489 arch: arm: allow processor to ignore/recover from faults
  • 07e913a1 ioapic: IOREGSEL register needs to be treated as 32 bits
  • 50a08d9e loapic timer: LVTT should be programmed before ICR
  • 302494d3 arch: stm32f4/f7: Add OTG HS defines to dts fixup file
  • 362e5ddb native_posix: Be more precise with stop-at
  • ba45d54b native_posix: command line parsing fix
  • 5cc928fb native_posix: Add realtime control and real time clok model
  • 97c06a7a arm: fix assembler offset errors on Cortex-M0
  • fe321f02 arch: st_stm32: Fix IRQs number of various SoCs

Bluetooth (18):

  • c2862eda bluetooth: mesh: shell: Fix warning when building with newlib
  • f035395e bluetooth: at: Fix warning when building with newlib
  • e29acf00 Bluetooth: shell: fix type usage
  • be9966f3 Bluetooth: Mesh: Fix missing semicolon for debug log
  • 2637c978 Bluetooth: Store device name
  • aa339ed0 Bluetooth: GATT: Make GAP name writable
  • acc3e512 Bluetooth: Add BT_LE_ADV_OPT_USE_NAME
  • 18df1164 Bluetooth: Allow use of ScanData with BT_LE_ADV_OPT_USE_NAME
  • 4052ca6d Bluetooth: Use shortened name if complete doesn’t fit
  • 2e2f122d Bluetooth: samples: Make use of BT_LE_ADV_OPT_USE_NAME
  • a8688fc5 Bluetooth: peripheral: Set CONFIG_BT_DEVICE_NAME_MAX
  • d1c4ce87 Bluetooth: shell: Make use of BT_LE_ADV_OPT_USE_NAME
  • e9e51151 Bluetooth: shell: Add name command
  • 99a91c94 Bluetooth: Kconfig: Lower minimum required ACL buffer count
  • e3bf5356 Bluetooth: controller: Fix disabling LE Encryption support
  • d26e482d Bluetooth: Mesh: Use more reasonable advertising buffer counts
  • 8c1c1641 Bluetooth: Mesh: Improve outgoing segment count configuration
  • c384631d Bluetooth: Mesh: Kconfig: Tweak RX SDU value

Boards (21):

  • 618209af board: add i2c support for colibri_imx7d_m4 board
  • ae5105c0 boards: more boards with xtools support
  • ef154430 boards: arduino_101_mcuboot: Remove Kconfig settings moved to DTS
  • 899bdb13 boards: arm: Add support for Silabs EFR32 SLWSTK6061A board
  • 4d3e13d1 boards: add board and DTS definitions for the SAMD20 Xplained Pro Board
  • b6e41e71 boards: arc: add virtual board based on nsim
  • 793c254e boards: Add support for nRF52 Adafruit Feather
  • a32b6628 boards: arm: stm32f723e_disco: enable USB FS OTG
  • 26631477 boards: arm: nrf: enable UARTE on nrf52810_pca10040
  • f5569a9d frdm_k64f: dts: Addition of a Flash Partion
  • 2bda5cf1 boards/x86: scripts: extend build_grub.sh for 64-bit UEFI
  • 04d1a38b boards: x86: add support for UP Squared (Pentium/Celeron)
  • 10af6c34 board: Add PWM support for colibri_imx7d_m4
  • c0563401 boards: arc: fix the wrong mpu configuration of nsim board
  • 8a86931e board: quark_se_c1000: Add default setting for cc2520 radio
  • fd62b7a0 boards: nsim_sem: fix identifier
  • d44c9001 boards: nsim_em: mark as simulation platform
  • ef935898 boards: arm: add nrf52840_pca10059
  • efb0080d boards/x86: up_squared: fix UART interrupt triggers
  • d147cc8d mimxrt1050_evk: disable sanitycheck on this board [REVERT ME]
  • 6b039a2b boards: arm: stm32f723e_disco: enable I2C support

Build (15):

  • 7c15934b toolchains: add xtools support for ARC
  • 458fe446 toolchain: iamcu support with xtools toolchain
  • 0009df82 toolchains: fix multilib libc linking with xtools
  • 6f29dac2 toolchain: require Zephyr SDK 0.9.3
  • ff5452ef cmake: util: Add process.cmake script
  • b8dd6ac7 cmake: util: Add fmerge.cmake script
  • 6b836d6e cmake: Add “gap-fill 0xFF” option for CMAKE_OBJCOPY command.
  • 45d58a7b cmake: Rename process.cmake to reflect contents
  • 15bc615b cmake: Use _FORTIFY_SOURCE only with optimizations enabled
  • 10738829 subsys: kconfig: Remove ‘default n’ properties and clean up a bit
  • 93ca721c xtools: set toolchain vendor to zephyr
  • 98775f34 kconfig: decouple realmode boot from CONFIG_JAIHOUSE
  • 4c60c510 cmake: default to linking ‘app’ with the interface library ‘FS’
  • c9e12493 cmake: Remove duplicate invocations of target_link_libraries on app
  • c68ab81f cmake: settings: Don’t add ext nffs include dir to global includes

Continuous Integration (12):

  • eda3e16a coverage: exclude k_call_stacks_analyze from coverage
  • b1045fee sanitycheck: Do not calculate size for native builds
  • 1377375a sanitycheck: refactor add_goal
  • 4a9f3e63 sanitycheck: do not redefine handler_log
  • df7ee61c sanitycheck: merge native and unit handlers
  • 685111ac sanitycheck: add nsim as simulation type
  • 99f5a6cf sanitycheck: support additional handlers
  • e24350c7 sanitycheck: do not run if we do not have nsimdrv
  • d74a56bd sanitycheck: set state correctly in case of a crash
  • d2b3c754 Revert “sanitycheck: set state correctly in case of a crash”
  • f3d48e1c sanitycheck: allow blacklisting boards
  • 448cd0c0 ci: handle documentation errors in ci

Device Tree (9):

  • f0450fc4 nrf52: dts: Force user to explicitly set UART0 compatible
  • 5a1bcc75 dts: arm: sam0: move contents samd21 to samd
  • f76f7585 dts: yaml: Remove unused nxp,kw41z-sim.yaml
  • bbda4455 dts: yaml: Add missing id property to nxp bindings
  • 4433d9d3 dts: yaml: Align serial driver clocks bindings
  • 6693537c dts: yaml: Align spi driver clocks bindings
  • 3bda93a3 dts: arc: fixes the warning msgs during cmake
  • 8f338eca dts/bindings/usb: Add yaml files for STM32 OTG HS
  • cc214b44 dts/arm/st: Add OTG HS node to STM32 F4 and F7 series

Documentation (24):

  • 489b27a2 doc: net: Fix source tree layout documentation
  • 5ea5b8d3 doc: subsys: logging: Add documentation for new logger
  • c7bb8c21 doc: net: gptp: Fix gptp API function description
  • 2dc28b49 doc: net: gptp: Enhance gPTP documentation
  • ae69934c doc: Support building with CMake
  • 7480f17d doc: Change Makefile and doc for building docs to CMake
  • 5ead0a52 doc: Remove old Makefile
  • 60a9e1a7 doc: Remove unused filter-doc-log.sh
  • 5e5fe0d7 doc: known issues: Fix regexes for Windows
  • 247ca67c doc: sphinx: Reshuffle sphinx cmd-line options
  • b3d2de71 doc: Makefil: Propagate Make options
  • d505ca70 doc: cmake: Fix argument parsing
  • 2af9a9e6 doc: cmake: Use flexible variables for inclusion
  • 2516aa07 doc: Add doxygen to Chocolatey package list
  • 46db70ac doc: subsys: logging: internal thread and thread wake up
  • 62b84896 doc: getting_started: add instructions to build on Clear Linux
  • 78964517 doc: cmake: Use proper dependencies
  • 60c5540d doc: cmake: Conditionally add USES_TERMINAL to html targets
  • f789a728 doc: tests: Add test description and doxygen groups in timer
  • 16155ad9 doc: windows: Clarify Python paths
  • e182dbc2 doc: cmake: Enable out-of-tree builds
  • f84caef2 doc: Makefile: Switch to Ninja as a generator
  • 5c086dec doc: fix doxygen error in ethernet.h
  • 9af485ad doc: fix incorrect defgroup comment in Queue tests

Drivers (50):

  • 8c2acab5 drivers: add i.MX I2C driver shim
  • 0aedf8d2 drivers: console: Kconfig: Remove redundant ‘default n’ properties
  • 505a8341 drivers: gpio: nrf5: Fix GPIOTE channel use overlap
  • 101d4936 drivers: serial: nrf: Use nrfx GPIO HAL to properly handle pins from P1
  • c8a21317 drivers: serial: nrf: Adding missing baud rates to UART driver
  • 9ac99a28 drivers: gpio_gecko: Adapt driver for Silabs EFR32 MCUs
  • e9e8bce9 drivers: serial: Adapt gecko uart driver for Silabs EFR32
  • 8a528a79 drivers: serial: add virtual uart driver for nsim
  • 7449657e drivers: serial: nrf: Adding UARTE driver for the nRFx family
  • f733da8d drivers: serial: nrf: Adopting define for UART driver.
  • 9107e3da drivers: usb: add support for USB OTG FS on STM32F7
  • 5275a731 drivers: gpio: nrf: remove GPIO register structure definition
  • ac81eb0e drivers: gpio: nrf: remove GPIOTE register structure definition
  • 21fd91e1 drivers: sensors: adt7420: Add driver for ADT7420 Temperature Sensor
  • c90170c5 drivers: wifi: simplelink: move files into a dedicated subdir
  • a3fb48c5 usb: webusb: Use struct string_desc instead of char array
  • 44b7076c usb: Correct include path
  • a19b469a usb: Cleanup code style for usb_device
  • 59e9cd0f usb: osdesc: Add MS OS Descriptors version 1 support
  • 93dd1b99 usb: rndis: Add MS OS v1 descriptors to RNDIS
  • d8da50a3 usb: rndis: Set subCompatibleID parameter for exact MS driver
  • 65cbe9db usb: tests: Add unit tests for MS OS Descriptors testing
  • 5a9c069c usb: tests: Add testing os_desc feature
  • 7b0e9d7c usb: composite: Add handling osdesc feature
  • c2fdfbb8 usb: rndis: Use RFC 7042 Doc value for Host MAC
  • 25afcc57 usb: device: Refactor vendor_handler
  • c8af08e5 usb: osdesc: Use definition for string descriptor index
  • f0de6e06 drivers: serial: nrf: Serial driver modification to use DT
  • f8718758 include: drivers: gpio: Turn functions generic - esp32
  • 5f443090 drivers: timer: nrf: Fix expected_sys_ticks issue in case of k_busy_wait
  • 32e6d0ca usb: set SN string descriptor at runtime
  • ecc891b2 drivers: Fix asserts in i.MX UART Driver
  • f5b91bad drivers: usb_dc_kinetis: fix gcc 7.3.1 warning
  • 7fd3eb60 drivers: uart_ns16550: restore config UART_NS16550_PORT_1_PCI
  • a07d98a6 drivers: flash: w25q: Fix typo
  • 08547cbb drivers: codec: APIs for Audio Codecs
  • 51d17086 drivers: add i.MX PWM driver
  • d45f90e5 drivers: eth: mcux: Enable gPTP support
  • 18d327c4 drivers: eth: mcux: Allow gPTP over VLAN
  • 77e03fc8 drivers: eth: mcux: Prioritize received PTP packets to high
  • 42f51ef0 drivers: wifi: winc1500: Use offload_context instead of user_data.
  • a2ad4b2d drivers: qmsi: Fix types and u32_t/uint32_t conflicts
  • f9cd4995 drivers/serial: ns16550: extend to support 4 ports
  • 39db4f48 drivers/ieee802154: Fix settings channel/tx power in uart pipe driver
  • 48de3ec6 drivers: usb_dc_stm32: Add OTG HS full-speed PHY support
  • 1f4e8d67 usb_dc_stm32: Fix FS mode
  • 97bc5abe drivers: i2c: stm32: add support for STM32F7
  • 6c49ce16 drivers: i2c: stm32: Kconfig: Remove redundant ‘default n’ properties
  • e189f590 drivers: wifi: simplelink: enable Fast Connect policy
  • 18226b11 drivers: serial: Add power management to nRF UART driver

External (12):

  • e634b25f ext: gecko: Add Silabs Gecko SDK for EFR32FG1P SoCs
  • 7689e9dc ext: Integrate Silabs EFR32FG1P Gecko SDK into Zephyr
  • cee31be6 ext: Import Atmel SAMD20 header files from ASF library
  • a60af5c1 ext: lib: crypto: Add generic mbedTLS config file
  • f1421b96 ext: lib: crypto: Make config-tls-generic.h default config
  • 31616178 ext: mcux: Add a script to import new versions of mcux
  • 57fbc668 ext: hal: altera: Add ifdef protection for LINUX_ERRNO_EXTENSIONS
  • b7a68fbb ext: hal: nxp: mcux: Fix ethernet timestamping driver
  • 77150196 ext: hal: nxp: mcux: Fix PTP event packet type check
  • 8e304696 ext: hal: nxp: mcux: Enable enhanced buffer desc mode if needed
  • 5d5d02b1 ext: hal: nxp: mcux: Update README file
  • 5f92b3b7 ext: hal: cmsis: Remove headers from old CMSIS import

Firmware Update (1):

  • 051c1f5f subsys: mgmt: Fix broken OTA firmware update

Kernel (12):

  • e67720bb syscalls: Scan multiple folders to build complete syscall list
  • 1d9bb5d7 kernel: minor improve in SYS_CLOCK_HW_CYCLES_PER_SEC help description
  • 47a9f9a6 kernel: thread: Exclude deprecated function from lcov
  • e74d85d8 kernel: thread: Simplify k_thread_foreach conditional inclusion
  • d9c37d6c kernel: idle: Define _sys_soc_resume functions conditionally
  • 89f87ec5 syscalls: pull in arch/cpu.h
  • 7f4d0069 kernel: fix errno access for user mode
  • 2fe998cd kernel: Deprecate sys_clock_us_per_tick variable.
  • 96aa0d21 kernel: Use accurate tick/ms conversion if clock rate is set at runtime
  • a698e84a userspace: adjust syscall generation scripts
  • 573f32b6 userspace: compartmentalized app memory organization
  • 8777ff13 Fix compile errors related to errno.h

Libraries (11):

  • 7bc39646 lib: json: add helper macro for array of array
  • e6f4f623 libc: minimal: Fix handling of floating point exponent
  • 96ea7ab7 libc: minimal: Fix handling of %f conversion specifiers for inf & nan
  • 409c9e75 libc: minimal: Fix support for -nan
  • e66da3f9 libc: minimal: Add support for %F conversion specifiers
  • 9aebe8b4 lib: json: Fix warning when building with newlib
  • 16ff8ca2 libc: newlib: Enable extended linux errno defines
  • e7ae7334 lib/crc: Add CRC32 support
  • 6a8649f8 libc: minimal: add malloc functions
  • bc94cc18 libc: minimal: add console system calls
  • 12e6aadc lib: newlib: add read/write syscalls

Logging (18):

  • 4aaeaaaf logging: Provide 8 and 9 parameter logging macros
  • f10cbe5e logging: Print 7, 8 or 9 parameter macros properly
  • 5cac6238 logging: Avoid compile warning because of wrong type
  • e854dd00 logging: log_output: Data lost because of uninitialized variable
  • 67d69873 logging: Fix fail when log locally disabled
  • d731e539 logging: Handle 0 Hz frequency in log_output
  • 77b44df8 logging: Ensure constant side effects of log API
  • 6b01c899 logging: Add log initialization to system startup
  • 1ba542c3 logging: Logger to wake up logs processing thread
  • 000aaf96 logging: Add internal thread for log processing
  • 86b5edc4 logging: Internal processing thread enabled by default
  • 927c1470 logging: Internal logger headers cleanup
  • c12fa740 logging: Remove log.h including in headers limitation
  • 83db9ad7 logging: Make prefixes the same length
  • 7fe2c3b1 logging: Fix static log filtering
  • fa90fdc4 logging: Macro argument evaluated when enabled
  • 1bfcea24 subsys: logging: fix trigger threshold corner case
  • 12926094 logging: Use vsnprintk instead of vsnprintf

Maintainers (2):

  • 3a988a5e CODEOWNERS: Update entry for sensor drivers
  • 880f21fb codeowners: Assign doc CMake and scripts to me

Miscellaneous (1):

  • 5c3d5660 shell: Fix command completion logic

Networking (59):

  • cb00061c net: dhcpv4: Use less parameters in debug print
  • 21d6e302 net: lwm2m: Fix warning when building with newlib
  • 00a69bf9 net: socket: Add switch to enable TLS socket option support
  • a7c698d9 net: tls: Add TLS context allocation/deallocation
  • ccdc6a6b net: tls: Add mbedTLS entropy source
  • 2d4815dd net: tls: Add mbedTLS logging
  • d08fd07f net: tls: Handle TLS handshake
  • 07f1a1fe net: tls: Handle TLS socket send and recv
  • 47f90887 net: tls: Implement poll with support for mbedTLS pending data
  • f25baebf net: samples: Add TLS support to http_get and big_http_download samples
  • 53c5058d net: ip: kconfig: Simplify NET_RX_STACK_RPL definition
  • eedb8a7b net: sockets: Make poll() call threadsafe by avoiding global array
  • 56e240e5 net: lwm2m: make lwm2m_engine_exec_cb_t more generic
  • 538d3418 net: lwm2m: introduce user-code callbacks for obj create/delete
  • ce48f18d net: lwm2m: use ARRAY_SIZE to calculate # of options
  • 3f53e6d1 net: lwm2m: read past not supported TLV resources
  • a9c684c6 net: openThread: Fix MTD build
  • 0e626f5e net: openthread: Add NETWORKNAME and XPANID config
  • 0251a9f1 net: ipv6: Fix NA debug print
  • 40f74366 net: eth: Convert to use callbacks to query stats
  • 1b376028 net: getaddrinfo: ai_state no longer global
  • a74137f6 net: getaddrinfo: use memory allocation for res
  • 4670214c net: gptp: Fix unsigned value comparison
  • 27fef49d net: gptp: Check overflow of log msg interval
  • dfa3f10b net: gptp: Add comment for falling through case
  • 7f0432a1 net: utils: Check null pointer when parsing IPv6 address
  • 408a5806 net: ethernet: mgmt: Fix Qav deltaBandwith check
  • 3fafe4f9 net: ipv6: Handle large IPv6 packets properly
  • 58cc7532 net: getaddrinfo: Make availability depend on CONFIG_DNS_RESOLVER
  • 8e8dc1c5 net: relax net_ip.h check
  • b19cb207 net: if: Add promiscuous mode set / unset functionality
  • bf9bae58 net: eth: Add generic promiscuous mode support
  • 3f9c7bd1 net: Add promiscuous mode support
  • 9135b175 net: eth: native_posix: Return proper error code from linux
  • af44d7c2 net: eth: native_posix: Add promiscuous mode support
  • 36ab41df net: shell: Print information about promiscuous mode
  • fbbef6f4 net: stats: Simplify periodic statistics printing
  • df4325a9 net/ipv4: Remove useless proto field setting in ipv4 header
  • a38dc091 net/ipv4: Remove ifdefs and use IS_ENABLED instead
  • abf68bc5 net/ipv4: Remove useless return value
  • b89f127f net/icmpv4: Use generic IPv4 relevantly
  • be6f59d3 net/icmpv4: Checksum is always set to 0 prior to being calculated
  • ea5610af net/icmpv4: src ll address does not need to be set
  • 9bb56cc6 net/icmpv4: Rename static function with icmpv4_ prefix
  • 9b8c83f4 net: Avoid holes in structs
  • 5ebc86bd net/ethernet: A device driver api uses struct device *dev
  • 9c5725a6 net/ethernet: Pre-assigned declaration always comes first
  • a691cc81 net: ipv6: Fix memory leak caused by NS request failure
  • d09cbcaf net: tls: Add credential management subsystem
  • 11f7abce net: socket: Define getsockopt() and setsockopt()
  • f959b5c1 net: tls: Add TLS socket options placeholder
  • 48e05557 net: tls: Add socket option to select TLS credentials
  • a3edfc25 net: tls: Set TLS credentials in mbedTLS
  • 91531772 net: tls: Add socket option to set TLS hostname
  • 11c24c85 net: tls: Add socket option to select ciphersuites
  • 3d560e14 net: tls: Add socket option to read chosen ciphersuite
  • 7826228d net: tls: Add socket option to set peer verification level
  • 50631b35 net: samples: Add CA certificates to http_get and big_http_download
  • 29b65859 net: samples: Add TLS support to socket echo_client/echo_server

Samples (36):

  • 00681512 samples: net: gptp: Documentation fixes
  • ff0950a9 samples: net: Fix echo_client/echo_server TLS config files
  • 92c1c2a2 samples: sensor: adt7420: Add ADT7420 sample application
  • 13b160b0 samples: net: Make echo_client/echo_server use generic mbedTLS config
  • 170ca38b samples: mesh: boards: nrf52: upgrade to pass PTS test
  • c58f102c samples: mesh: boards: nrf52: improved vendor model
  • 06f69b5c samples: mesh: improved code readability & remove redudancy
  • 2708ce56 samples: mesh: boards: nrf52: randomize publishers TID on boot
  • 00cd491f samples: mesh: boards: nrf52: modifications as per 3.3.2.2.3
  • 460c5854 samples: mesh: boards: nrf52: edit struct for gen. level
  • b8b94280 samples: mesh: boards: nrf52: avoid responding to wrong messages
  • ed72015d samples: console: add print statements for user
  • cfd5c9b4 samples: nats: Fix warning when building with newlib
  • afad09db samples: boards: nrf52: Refactor power_mgr app code
  • 8b8198b5 samples: mesh_demo: Fix Fix warning when building with newlib
  • c8b114f2 samples: exclude socket samples on esp32
  • 354e138f samples: webusb: Reformat README txt to rst
  • 3612802b samples: webusb: Change webusb app repository name
  • 38590a9a samples: net: wpanusb: split cc2520 settings from prj.conf
  • bfcc1cfb samples: net: wpanusb: add TI CC1200 overlay config
  • 15d46ddb samples: usb: wpanusb: add MCR20A overlay config
  • 7df65c15 samples: usb: wpanusb: update README to rst format
  • 8fe9f5b4 samples: net: wpanusb: fix sanitycheck
  • d370391e samples: Add colibri_imx7d_m4 config in blink_led
  • e30c3096 samples: net: gptp: Add support for FRDM-K64F board
  • 29a757a8 samples: wpanusb: Remove old dead code
  • 4208642a samples: fix u32_t type usage
  • 7b8b09bd samples: net: Explicitly ignore socket close return value
  • 7479cc2e samples: net: Fix incorrect use of ipv4 in ipv6 branch
  • 2807e5c1 samples: net: echo_server: Fix building of echo replies
  • 72f75e52 samples: net: echo-server: Add overlay config support
  • c5095797 samples: net: Add promiscuous mode application
  • af347795 samples: net: tp: Avoid compiler warning
  • 6c30f595 samples: net: Fix incorrect error check in echo_server
  • a1594472 samples: net: echo-client: Add overlay config support
  • 9a68fea9 samples: boards: quark_se_c1000: Do not enter LPS states on test exit

Scripts (6):

  • 1952c56e scripts: west: add nsim runner
  • f6bf8977 kconfiglib: Add preprocessor and two warnings
  • 033f10d2 scripts: Print results from filter-known-issues.py
  • 9c2f681b scripts: filter-known-issues: Add extra newline
  • 953cc124 kconfiglib: Fix paths for gsource’d files in the documentation
  • 353acf4a gen_syscalls.py: do not output data to stdout

Testing (40):

  • 22ea79db tests: pending: Add description and RTM links
  • 3e1c0bd3 tests: kernel: Add description and doxygen groups for workq
  • c6c81107 tests: kernel: Add description and group tests for doxygen
  • 8317e366 tests: sprintf: Add inf/nan testing for %{e,E,g,G}
  • 70944e83 tests: boards: intel_s1000_crb: Fix build error.
  • 9ad36e71 tests: net: arp: Increase network buffer counts
  • 02addfff tests: poll: Add description and RTM links
  • 25966c84 tests: semaphore: Add description for semaphore tests
  • 5b8e4ae4 tests: kernel: init: Add description and RTM links
  • cf71938a tests: net: tcp: Use correct network interface for sending
  • 5d1b57ff tests: Add colibri_imx7d_m4 config in pwm_api
  • bffae854 tests: kernel: Add description for common and interrrupt
  • cf6a8708 tests: net: udp: Increase network buffer counts
  • 934c8eae tests: spinlock: Add description and doxygen groups
  • 8cdb5d5d tests: nffs: fixed types
  • 19666a9b tests: fix u32_t type usage
  • 34ee20a3 tests: sleep: Add description and RTM links
  • d35d8e93 tests: Add test for NATIVE_EXIT_TASK
  • 8891beaf tests: posix: add test for pthread_key
  • 49f5f5bc tests: power: power_states: Define power states as per architecture
  • 05434d1b tests: power: multicore: Fix the idle synchronization issue
  • 770eba36 tests: power: multicore: Fix power state entry for LMT
  • 81a2c4b8 tests: sleep: Fix _TICK_ALIGN correction.
  • 913507a2 tests: crypto: rand32: Add test for z_early_boot_rand32_get
  • 09a322ae tests: kernel: device: Set device power state
  • 4238418e tests: kernel: document gen_isr_table tests for RTM
  • faae730a tests: net: Print proper error if we run out of net bufs
  • 127220c6 tests: net: Run various tests only in qemu_x86 or native_posix
  • 73522606 tests: net: ethernet_mgmt: Add promisc mode tests
  • e18900c5 tests: net: if: Add promisc mode tests
  • d202834e tests: net: Add tests for net_promisc API
  • cb499d32 tests: stack: Add description for test cases
  • 4c6b90e3 tests: queue: Add description and doxygen groups
  • cea73067 tests: kernel: Add test to validate k_stack_alloc_init, k_stack_cleanup
  • 7c8aa526 tests: queue: Enhance tests to improve coverage
  • 7b24690e tests: msgq: Enhance tests to improve code coverage
  • 8ba0ddf4 test: Add test for native_posix RTC and real time control
  • d9d3a5ad tests: kernel: timer: Add a test case to cover k_timer_start
  • c27af479 tests: power: power_states: Do not enter LPS states on test exit
  • 00e29c17 tests: kernel: Move k_thread_foreach() API test to thread_apis test
comments powered by Disqus