Zephyr OS Helps Protect the Environment

By | Blog

Written by Ilan Ganor, hereO

Local, regional and national government municipalities are introducing stricter environmental laws in order to fight pollution and global warming.  Waste disposal in particular, has been a top priority for governments worldwide, with new regulations regarding tracking and proper disposal.

In general, garbage waste needs to be dumped in a designated disposal site.  The common procedure is that dump trucks arrive at a disposal site such a landfill and are charged per weight and/or type of waste being dumped.  This conventional way has been the norm for many years.

The above procedure presents a major loophole which is abused to break the law and ends up hurting the environment and increasing pollution.  In many cases, a dump-truck driver will dispose of some or all the waste meant for the landfill, in order to save the disposal fee, which they pocket to themselves.

Worldwide estimates range from 15%-50% (!) of all waste being dumped outside the intended landfill and ends up in a nature reserve or other illegal sites.  This causes extra pollution which increases environmental cleanup costs and worse, can even be deadly if the waste makes its way to a water reserve.

The high cost of enforcement and environmental clean-up have driven governments and industry to seek out advanced solutions using sensors, location and communication technologies to fight this trend.  This is a challenge the IoT industry is poised to address.

Two main challenges of the waste disposal tracking project:

  1. Power management – a standalone, battery powered device that does not need charging for at least 1 year.
  2. Disposal detection – the unit must report with close to 100% accuracy that garbage is being disposed in the proper location in order to not wrongly fine the truck driver.

How Zephyr RTOS makes this happen:

Processor power management:

The power management power state “SYS_PM_LOW_POWER_STATE” proved to be the right selection for this use case.  In this power state, the device stays on, keeping only the minimum set of needed components active (shutting down power hungry components such as cellular modem, GPS, BLE and all sensors) except for the gyroscope.

Driver power management

Zephyr’s driver power management structure enables a robust guideline for adding new drivers, it is relatively easy to add new drivers that follow the basic power management guidelines.  This is critical for IoT systems since efficient power management plays a key role in many project go/no-go decisions and the likelihood to get to market quickly and be commercially successful.

 Dual processor support

The mailbox IPC between cores which is a key Zephyr capability, proved to be the project go factor.  The small core was used as a DSP, processing the measurements from gyroscope and accelerometer, only when recognizing that garbage disposal is taking place and turning on the more processing-hungrycore which handled the cellular modem, MQTT based data publish, etc.

hereO Core Box

FOTA support

Zephyr offers great “out-of-the-box” FOTA support.

On many embedded projects this task proves to be the most complicated part and is usually neglected until the end of development and proves to be difficult introducing additional delays to the project.

With Zephyr a stable FOTA solution enabled a dependent and secure update mechanism.


Choosing to work with the Zephyr solution allowed us to have a stable and flexible design and development process avoiding development issue associated with typical embedded development.  Zephyr’s many optional frameworks, work methods, etc., helped speed up time-to-prototype and time-to-market, especially with customers in the garbage-disposal industry, which have ever evolving needs.  For this industry, Zephyr is a great enabler.

Learn more about hereO Core in this video:

Zephyr RTOS featured in RISC-V Getting Started Guide

By | Blog

Today’s rapidly evolving IoT and embedded ecosystem developers have the ability to choose from a variety of platforms and tools to design and build solutions that meet their unique needs and use cases. Zephyr Project is proud to provide developers and product makers with the freedom and flexibility of a full featured, customizable open source RTOS for resource constrained devices. That freedom includes empowering developers by providing a growing and diverse selection of supported architectures, boards and configurations. As of Zephyr 1.14 LTS, the RTOS had more than 160 supported board configurations on 8 architectures, including RISC-V.

Guided by the same ethos, the RISC-V Foundation and its members have built a thriving ecosystem and helped to spur a new generation of innovative tools, software and hardware built around a free and open Instruction Set Architecture. The shared vision and deep commitment to open source has led to fruitful collaborations across the two projects. In the years since collaboration began, both projects have grown and reached important milestones.

Today, we are excited to share a new resource intended to help members of both communities quickly get started using Zephyr OS on the RISC-V architecture. Created by Zephyr Project and RISC-V Foundation member Antmicro, The RISC-V Getting Started Guide showcases the strength of both platforms used together to create end to end open source solutions.

“Confirming our commitment to bringing open source into ever new technology areas, Antmicro has led the efforts to produce a RISC-V Getting Started Guide that is primarily addressed to software developers. Choosing Linux and Zephyr RTOS is crucial as their community-driven and vendor-neutral nature corresponds well with that of RISC-V,” said Michael Gielda, VP Business Development at Antmicro.

”Having clear concise reference documentation makes it easier for newcomers to the RISC-V and Zephyr communities to create products faster. We’re excited to see what developers create using this guide and look forward to continued close collaboration between our organizations,” said Kate Stewart, Senior Director of Strategic Program at the Linux Foundation.

The RISC-V Getting Started Guide shows users how to get started developing for the free and open RISC-V ISA, both in simulation and on physical implementations. The Guide focuses on running standard operating systems – Zephyr and Linux – on popular RISC-V platforms with minimum effort. The Zephyr-enabled platforms currently described in the Getting Started Guide include the SiFive HiFive1 and RISC-V SoftCPU Contest winner LiteX SoC with VexRiscv CPU running on the Future Electronics Avalanche board with a Microsemi PolarFire FPGA or in Antmicro’s open source Renode simulation framework. The Guide also provides a generic QEMU simulation target supporting RISC-V.

Thanks to Antmicro and the RISC-V Foundation, the Guide is now available to serve as a starting-point for the global RISC-V and Zephyr communities, as well as anyone interested in switching to a fully open design approach – from open ISA through open tooling, software, hardware and FPGA.

This guide is an open source collaboration and contributions are welcome via GitHub. If you have questions about using the Guide or Zephyr OS, please contact us via the Zephyr Project Slack channel. What’s more, Antmicro, SiFive and Microchip are sponsoring the upcoming RISC-V Workshop in Zurich – you can find them on the showfloor to receive more information on getting started with Zephyr on RISC-V.

Learn more about the RISC-V Foundation

Get the latest release of Zephyr OS

Download the RISC-V Getting Started Guide

What’s new in Zephyr – May 28, 2019

By | Blog

Written by Marti Bolivar, Zephyr Project contributor and Senior SW Engineer at Nordic Semiconductor

This newsletter tracks the latest Zephyr development merged into the mainline tree on GitHub. In particular, we’re covering the first 1,001 patches merged since the v1.14.0 release last month. Buckle up.


This newsletter covers the following inclusive commit range:

  • f90acbf2 release: Post-release patch level update, merged 16 April 2019
  • ba4eae14 tests: test_sched_timeslice_reset: Fix slice time measurement, merged 23 May 2019


New SoC support:

  • LiteX: VexRiscV
  • Microchip: MEC1501
  • Nordic: nRF52811
  • NXP: i.MX RT1015, Kinetis KE1xF
  • ST: STM32F415RG, STM32MP1, STM32WB, STM32L1
  • TI: CC13x2 / CC26x2

The ARC architecture can now be configured to dump human-readable exception information on faults.

On Arm:

  • Multiple threads can now share floating point peripherals, as FP registers can be saved and restored on context switch.
  • The presence of the SysTick timer peripheral has been decoupled from the peripheral which is configured as the system timer. This allows Arm SoCs to use other peripherals as their system timers. This involved adding a new CONFIG_CORTEX_M_SYSTICK to request that SysTick be used, and renaming the macro which merely signals the presence of a SysTick peripheral from CONFIG_CPU_HAS_SYSTICK to CONFIG_CPU_CORTEX_M_HAS_SYSTICK.
  • Support was added for the varying number of MPU regions on some Cortex-M7 SoCs. As part of these changes, the device tree now declares the number of regions.
  • Device tree support was added for some Armv8-M SoCs.

Support for various peripherals was added at SoC level; see the patch list below for details.

The contents of the .rodata sections were made read-only on x86.


The majority of changes (approximately half by patch count) are at the controller level, including:

  • Support for out of tree vendor-defined HCI commands, vendor-specific events, and proprietary RX demuxing.
  • Increasing feature parity between the new ULL/LLL “split” link layer architecture and the existing default L2, and continued efforts making the new code vendor-agnostic by moving Nordic-specific code into vendor LLLs.

The Bluetooth shell now has gatt get and gatt set commands for reading and writing local attributes.

There is now a CONFIG_BT_GATT_DYNAMIC_DB option, which can be used to decrease memory usage by disabling runtime service updates.


New boards:

New shields:

  • Wistron WNC-M14A2A modem: see boards/shields/wnc_m14a2a
  • SparkFun u-blox SARA-R4: see boards/shields//sparkfun_sara_r4

Various boards gained new software support for peripherals; see the patch list below for details.

Other miscellaneous feature enablement: pyocd flash and debug support for mimxrt1060_evk and mimxrt1064_evk, JLink flash and debug support for STM32 boards and efr32_slwstk6061a.

Build System

Efforts continue to generalize the build system to support non-GCC toolchains:

  • The native_posix build configuration now supports LLVM.
  • GCC-specific compiler and linker flags continue to be replaced with toolchain-agnostic “Intents”. These intents are CMake functions or macros beginning with toolchain_ which express a desire for a toolchain to be configured in a certain way, e.g. to configure a certain level of warnings. Search the source code for @Intent for examples.
  • A new LINKER CMake variable was added to decouple the linker from the compiler. The initial purpose appears to be adding lld support, but for now, GNU ld remains the only supported in-tree linker.

The ultimate goal remains not only supporting LLVM and other non-GCC based toolchains in-tree, but providing first-class support for out of tree toolchains.

Support for out of tree device tree source files and bindings was added via a new DTS_ROOT CMake variable. This is analogous to the existing BOARD_ROOT and SOC_ROOT variables, which allow defining out of tree boards and SoCs.

The giant SoC level linker scripts (in subdirectories of include/arch/ and named linker.ld) are being cleaned up and refactored with the help of a new zephyr_linker_sources() and related set of CMake functions. As a result, some Kconfig options, like CONFIG_SOC_RODATA_LDCONFIG_SOC_NOINIT_LD, and others are now deprecated in favor of using that routine to manage what content is added to the final linker script.

An application’s build version can now be set via the BUILD_VERSION environment variable.

Zephyr can now be compiled with the newlib-nano C library shipped with the GNU Arm Embedded toolchain (which was already supported by Zephyr).

STM32-based boards can now produce Intel HEX files as build artifacts.

Continuous Integration

An indomitable effort to clean up and clarify the sanitycheck script’s output, help strings, and other UI related improvements is underway.


Among the usual stream of improvements, new docs have been added covering:

Drivers and Device Tree

Zephyr has imported the Linux kernel’s list of device tree vendor prefixes as dts/bindings/vendor-prefixes.txt. Developers are encouraged to respect (and maintain) its contents when adding compatible properties.

New and shiny:

  • AMS ENS210 temperature and relative humidity sensor, indoor air quality sensor drivers
  • Atmel SAM0 ADC, hwinfo, I2C, and DMAC drivers, along with asynchronous DMA support for the SPI driver and interrupt support in the GPIO driver
  • Holtek HT16K33 LED and GPIO drivers
  • Microchip MEC GPIO and I2C drivers
  • MCP2515 CAN controller support
  • nRF RTC drivers now support error-free wrapping via PPI; see CONFIG_COUNTER_RTC{0,1,2}_PPI_WRAP
  • NS16550 UART driver support for PCIe
  • NXP EHCI USB driver
  • RV32M1: I2C support
  • STM32L1: clock, interrupt, pinmux, GPIO, I2C
  • STM32L4: SPI2 on port B support
  • STM32WB: clock, interrupt, pinmux, LPUSART
  • STM32 ADC drivers support pin remapping and ADC1 instances
  • STM32’s serial driver now supports RTS/CTS hardware flow control and 9 bit data frames
  • STM32’s usb_dc_stm32 driver now supports pin remap via device tree; search for the enable-pin-remap property binding documentation for details
  • Stereo support in the mpxxdtyy audio driver, whose name reminds the author of calculus class
  • TI CC13xx / CC26xx I2C driver
  • TI SimpleLink WiFi now supports static IP address configuration

The CAN API grew user data pointers on callbacks, along with other rework and loopback driver support. The driver file names themselves were all prefixed with can_.

The flash_map.h API now has a flash_area_foreach() routine for visiting each flash area. It also has a shell command using it, which currently supports a list command. There’s also a new flash_simulator driver, which implements the flash API but backed by RAM. This is useful for testing, and is now enabled on the qemu_x86 target.

The IEEE 802.15.4 driver API in include/net/ieee802154_radio.h has a new struct ieee802154_config defined, which can be passed to a new configure callback in the driver API. The initial use case is ACK configuration on nRF5 SoCs.

The UART API now supports 9-bit data; apparently, 8 wasn’t enough for everyone. The only initial user is STM32, as described above.

Firmware Update

Various potentially breaking changes are getting merged for firmware update support on Arm v8-M SoCs with secure and non-secure application images. Stay frosty out there, DFUsers.


A handful of fixes, new APIs, and refactorings were merged.

However, a debate is quietly taking place behind the scenes which may result in a significant refactoring of the kernel’s system timer APIs. Stay tuned for more.


The logging subsystem can now be used from C++ files.

The “minimal” C library included with zephyr continues to grow, adding definitions for bsearch()exit()_exit(),time_t,suseconds_t, and a <sys/_timeval.h>.

Numerous additions were made to the CODEOWNERS file now that pull requests which add new files not covered there are rejected by CI. However, the Technical Steering Committee has ruled that this file does not, despite its name, define which developers are the maintainers of any given subsystem or area of the tree. More documentation and discussion on this is ongoing.

The shell subsystem now has a generic hexdump routine, shell_hexdump(), declared in <shell/shell.h>. It also gained a variety of new macros for conditionally defining and initializing commands; see Creating commands in the documentation for details. There’s a new set of config options beginning with CONFIG_SHELL_PROMPT_ which allow different shell backends to proudly declare themselves as uart:~$rtt:~$, etc.

Rather than relying on GCC builtins, there is now a <misc/math_extras.h> header which provides portable arithmetic and bit manipulation routines. Naturally, existing users have been moved over, and there is a GCC implementation.

The statistics API can now track more than 256 individual statistics. This sounds like a silly thing to say, but it makes sense; believe us.


Now that the west tool has been merged and integrated into the core workflow, a series of pull requests is up extracting third-party code from the main zephyr repository into separate Git repositories. The first one merged extracted the Intel QMSI library. Make sure to run west update to fetch this separate repository after pulling zephyr, and to keep doing so whenever you pull.


A variety of fixes are flowing in from testing with the Maxwell Pro suite and other testing efforts.

The <net/net_if.h> API gained accessors for manipulating network interface flags: net_if_flag_set()net_if_flag_test_and_set()net_if_flag_clear(), and net_if_flag_is_set(). A new flag, NET_IF_NO_AUTO_START, was also added which disables automatically bringing the interface up if set. There’s also a newnet_if_ipv4_get_global_addr() routine, which is used to return an interface’s global address if nothing else can be found. The existing but unused net_if_ipv6_get_global_addr() was altered to match the signature for the IPv4 version as well; out of tree users will need updates.

The <net/sntp.h> header now has a query function with fractional seconds precision, sntp_query(). The older sntp_request() routine is now deprecated. A new sntp_simple() routine for one-shot SNTP queries was also added to this header.

ICMP echo packets can now contain arbitrary payload data, and the net shell’s ping can now report RTT, TTL, and RSSI.

Ethernet controllers which wish to strip the VLAN tag from received frames can now do so; see the ETHERNET_HW_VLAN_TAG_STRIP flag. This capability is now printed in the ethernet shell.

The OpenThread frame pending API is now implemented.

Bluetooth IPSP devices now support multiple connections. CONFIG_NET_IF_MAX_IPV6_COUNT now defaults to CONFIG_BT_MAX_CONN in that case.

A new routine, mqtt_read_publish_payload_blocking(), was added. It allows reading the payload of a publish message.

It’s now possible to compile out Zephyr’s IP stacks when only offloaded socket support is required, saving memory.

A new <net/socketutils.h> header was added, providing address manipulation functions.

It’s now possible to register new socket families with the core networking APIs. See struct net_socket_registerNET_SOCKET_GET_NAME(), andNET_SOCKET_REGISTER() in <net/socket.h>. The TLS, AF_PACKET, and AF_CAN socket address families now use this mechanism.

Zephyr’s getaddrinfo() implementation now supports a null host argument. A userspace-aware getsockname()implementation was also added.

A new CONFIG_NET_IPV4_ACCEPT_ZERO_BROADCAST allows Zephyr to accept UDP packets destined for the all-zero multicast address.


The settings subsystem for nonvolatile storage now supports custom backends. This is a significant improvement, which allows customized abstractions for the representation of data at rest. See the documentation for the new settings_backend_init()routine for details. FCB and file system backends are supported, along with other changes in <settings/settings.h>.

Tools and Scripts

The menuconfig build system target saw various usability improvements by pulling in a new Kconfiglib.

The west build command now supports:

  • build.board configuration variable, which can be used to set the default board to target
  • build.pristine configuration variable and --pristine option, for controlling when the build directory is cleared out before a new build is started
  • --cmake-only option, to generate a build system but not build anything
  • verbose builds (i.e. builds which print the compile commands) at level 1 verbosity (i.e. when called as west -v build)
  • build.generator option for setting the default CMake generator
  • --dry-run flag for printing what it would have run, without actually executing cmake or running any build system targets
  • --build-opt option for passing tools to the underlying build tool (such as ninja)

There is a new west boards command, which can print information about supported boards.

West autocompletion for Bash was added via a new west completion command.

Individual Changes

Patches by area (1001 patches total):

  • Arches/SoCs: 107
  • Bluetooth: 92
  • Boards: 94
  • Build: 74
  • Continuous Integration: 15
  • Device Tree: 35
  • Documentation: 31
  • Drivers: 216
  • External: 35
  • Firmware Update: 7
  • Kernel: 12
  • Libraries: 11
  • Logging: 2
  • Maintainers: 26
  • Miscellaneous: 17
  • Networking: 59
  • Samples: 46
  • Scripts: 43
  • Storage: 6
  • Testing: 73

Arches/SoCs (107):

  • c8b17ec4 fix: kw41z: Use correct mapping for dBm
  • a17730da soc: sam0: Fix SAMD20 IRQ assignments
  • 4cf4040a arc: print human-readable exception info
  • 51a563dc soc: arm: sam3x: add MPU capability
  • a7199b75 soc: st: add STM32F415RG
  • 689d71b2 arm: Add support for MINI-M4 for STM32 Board
  • b8bab7b3 native_posix: Enable USB device for the board
  • cc15b9ce soc: nordic_nrf: MPU temperature sensor default
  • 149cc7fd native_posix: cmdline: Hint user about wrong options
  • 13dfeba5 arm: V2M Musca B1: Add Musca B1 SoC and board support
  • d61c679d arch: all: Remove legacy code
  • 4f99a38b arch: all: Remove not used struct _caller_saved
  • f44514d1 arch: arm: nxp: imxrt1015: add device support
  • bb35bb8a soc: arm: sam3x: minor fixes in soc.h and arm_mpu_regions.c
  • e0afd7e5 soc: stm32: add initial soc support for stm32mp1 family
  • 6347b87e soc/arm/st_stm32: Add support for stm32wb soc
  • eb51ea00 soc/arm/st_stm32: stm32wb: Add gpio support
  • b444de88 arch: arc: optimize the push and pop of fast irq
  • 4d9486fc soc: sam0: Enable generic peripheral selection
  • 92ac6d8f soc: arm: st_stm32: Add STM32L1 SoC series
  • 43e56a93 soc: arm: stm32: stm32l1: Add UART support
  • ec1ffc8b arch: x86: fatal: If possible, print thread name in crash dump
  • 32367c0d soc: arm: stm32: Updated SRAM Region Definitions
  • 5311a7d7 soc/riscv32-fe310: add label for uart1
  • ce0dcea4 soc: arm: remove redundant CPU_CORTEX_M selection
  • ccf90fd9 soc: arm: select CPU_HAS_SYSTICK in ARCH Kconfig
  • 894eca5e soc: arm: rename CPU_HAS_SYSTICK to CPU_CORTEX_M_HAS_SYSTICK
  • 236c5ac2 soc: arm: remove default selection of system timer for ARM platforms
  • 2a47f41e stm32mp1: disable cmsis_rtos_v2 test
  • 33d32fb6 soc: stm32f4: add another pinmap for spi1
  • e5609997 soc: nxp_imx: mimxrt1064_evk: Add I2C support
  • 770233dd soc: atmel: add SAMR21
  • 9f698786 soc: sam0: enable RTC for samd21, samr21
  • 86bd319d soc: sam0: Make init code common between all samd2x SoCs
  • ff1952cc arc: arm: fix support for MPUs on non-XIP systems
  • f616aa37 posix: cmake: Abstract freestanding options
  • 02122bca arch: arm: restrict IRQ lock to minimum during pendSV exception
  • 37df2566 soc : arm : microchip_mec Add Microchip MEC1501 SoC
  • 53f0f277 arch: x86: mmu: typo fixes
  • 4709816a soc: sam0: Remove SERCOM defines from dts_fixup.h
  • dba1b122 arch: arm: drop FP full-access for builds without user mode
  • a8ccaedd arch: arm: disable automatic FP stacking in unshared FP registers mode
  • 9b00be3d arch: arm: remove FP-context from ESF in unshared FP registers mode
  • 2aa138b3 arch: arm: remove _preempt_float in unshared FP registers mode
  • 1a2ef429 arch: arm: remove FP activation in system boot
  • 2d6f6d21 arch: arm: clear FPSCR before main()
  • f101b77d soc: ti_simplelink: add support for TI CC13x2 / CC26x2 series
  • 8fa5353b soc: riscv32: Use same clock freq for both rv32m1 cores
  • bc9f67f9 arch: soc: riscv32: Separate soc offsets from soc context save
  • cf1be5a3 soc: riscv32: Move rv32m1 sram memory definitions to dts
  • 15baad94 soc: riscv32: Move rv32m1 flash memory definitions to dts
  • 9f068737 arch/x86_64: Suppress spurious linker-generated code in the 32 bit stub
  • c76dd1ed soc: arm: nordic_nrf: change default SYS_CLOCKS_PER_SEC
  • da3f7fea soc: arm: nordic_nrf: unrevert provide custom busy_wait implementations
  • 6f19d006 arch: arm: add internal structure to ESF
  • 9f21b09d soc: stm32f4: complete uart7’s dts
  • 81fa697f posix: Move gettimeofday declaration to <sys/time.h>
  • a6aee9b4 posix: sys/time.h: Add workaround for outdated newlib used by Xtensa
  • 997ab935 soc: same70: add support for revision B
  • 805dca91 soc: same70: check for mismatch between chip and HAL CIDR
  • 50c71e60 arch/x86: CONFIG_BOOTLOADER_UNKNOWN renamed to CONFIG_X86_MULTIBOOT
  • 467d1c32 soc: arm: mchp: Add I2C to device tree for MEC1501
  • 35cfe113 soc : microchip_mec : Add gpio driver common definitions
  • d1b21f34 soc: stm32: enable outputing hex file
  • 32f8521c soc: nxp_imx: configure USB device EHCI controller driver for rt1050
  • 6fcfb837 soc: riscv32: miv: soc.h: use defines from device tree
  • 2b61c37d soc: riscv32: sifive-freedom: soc.h: use defines from device tree
  • e0a82500 riscv32: use device tree defines in linker
  • 75f0ad5a stm32f7: Kconfig: soc: Enable GPIO ports F & G by default
  • fd97e440 arch: remove unused tracing_arch.h
  • 0efddb63 arm: nrf: Add support for the nRF52811
  • 90dc25b2 soc: arm: nxp_imx: rt: update flash size of 32KB
  • 918579eb soc: arm: ke1xf: add NXP Kinetis KE1xF SoC series support
  • 5ec96b17 soc: nrf: Conditionally enable clock control and timer
  • 424224af arch: arm: fix ESF pointer in SecureStackDump()
  • 342cbc9e soc: riscv32: add LiteX VexRiscV SoC
  • 7aecb038 arch: arm: switching stack pointer with assembly code
  • 348b0266 x86: Make .rodata readonly
  • fb713aa0 soc: arm: move z_clearfaults() in kernel_arch_init()
  • 6b51ef73 arch: arm: Fix check of Kconfig option
  • 3cdb1924 soc: arm: nxp: ke1xf: add RTC support
  • 01a71eae arch: arm: remove redundant definitions of typeof
  • ac4eb322 arch: arm: fix “template with C linkage” in cmsis.h
  • d5481055 arch: arm: print thread name in z_NanoFatalErrorHandler()
  • 36cedd93 arch: arm: mpu: use DTS-defined number of MPU regions
  • 4b15873c soc: arm: add ARM MPU node info and fixup for ARMv8-M SoCs
  • 75f681b0 soc: arm: add ARM MPU node info and fixup for Cortex-M7 SoCs
  • 3950f664 arch: arc: Fix checks of CONFIG_USERSPACE
  • d2ef19bd arch: arc: Fix checks of CONFIG_ARC_FIRQ
  • c5665f2e arch: arc: Fix checks of CONFIG_STACK_POINTER_RANDOM
  • 63013d93 arch: arm: Fix checks of CONFIG_USERSPACE
  • 65ae6433 arch: arm: Fix checks of CONFIG_IRQ_OFFLOAD
  • 5c8faf89 arch: arm: Fix checks of CONFIG_ZERO_LATENCY_IRQS
  • f888f9ab arch: arm: Fix checks of CONFIG_MPU_REQUIRES_POWER_OF_TWO_ALIGNMENT
  • 00010390 soc: arm: st_stm32: Port CCM sections to use the Cmake function
  • 6d003944 arch: Port the ramfunc section to the Cmake function
  • 5bebf2ae soc: Port usage of soc-*.ld to use Cmake
  • e4024e27 arch: port nocache linker code to use Cmake function
  • 1d3b6e7c arch: arm: cortex_m: Port some vector_relay linker code to Cmake
  • c760ca02 arch: Put intlist.ld into Cmake
  • 6b5f05fe x86/apollo_lake: add I2C interfaces to devicetree
  • f19787bb posix: Fix calculation of clock base in clock_settime
  • eecf4b03 arch: arm: enable lazy state preservation at boot in FP sharing mode
  • 929e9ea9 arch: arm: carve only basic stack frame at thread init
  • 358d389c arch: arm: extend use of arch.mode variable in FP sharing mode
  • 4f4b23b4 arch: arm: fp sharing: save & restore FP registers in context-switch
  • a5e929ab soc: nxp: ke1xf: enable code cache

Bluetooth (92):

  • da4e3cad Bluetooth: hci: adding AD types used for OOB pairing
  • 1a3d9fa0 Bluetooth: Mesh: Add error checks for scan start/stop
  • 4154f27a Bluetooth: GATT: Skip ahead if handle is not within service handles
  • 755a6e50 Bluetooth: GATT: Fix iterating over requested handle range
  • f7b4069a Bluetooth: Settings: Fix not allowing custom handlers without arguments
  • 95182239 Bluetooth: GATT: Store database hash
  • 321fec4a bluetooth: hci_core: Remove misleading log
  • a1d69fb7 Bluetooth: Mesh: AES-CCM: Fix output MIC with additional data
  • 26cfbf81 bluetooth: host: Save id when allocating CCC cfg slot
  • d4dbab9f bluetooth: host: Use correct identity when direct advertising
  • 56a2691e bluetooth: host: Unref conn on direct adv start error
  • 09c06a12 Bluetooth: Shell: Convert users of hexdump to shell_hexdump
  • 26fea234 Bluetooth: shell: Make show-db print the total number of attributes
  • 090f95d2 Bluetooth: Shell: Add option UUID parameter to GATT show-db
  • 4c80bb57 Bluetooth: Shell: Add GATT command get
  • 2ba6146f Bluetooth: Shell: Add GATT command set
  • 69b08e6e Bluetooth: GATT: Update read/write callback documentation
  • 0db7dda0 Bluetooth: hci: h4: use GPIO reset for nrf52840_pca10090 controllers
  • 705515c0 Bluetooth: controller: Data Length Update port to ULL/LLL arch
  • 7b68ec88 Bluetooth: controller: Move PKT_US to ULL internal header
  • e90ba898 Bluetooth: controller: Fixes to pass DLE/PHY conformance tests
  • 100f671b Bluetooth: GATT: Add support for Read Using Characteristic UUID
  • 6576efe0 Bluetooth: shell: Add command for Read Using Characteristic UUID
  • c5f6e8be bluetooth: host: format specifier alignment
  • 0654c332 bluetooth: Fix bt_conn->id handling
  • 5257fede Bluetooth: controller: Fix advanced XTAL feature regression
  • 1090b452 bluetooth: controller: Update slot reservation time calculation for ADV
  • 1618c1b8 bluetooth: controller: Update to use new EVENT_IFS_US define
  • 5c3709c1 bluetooth: controller: Add def’s re. update to slot reservation calc
  • 21ae7050 bluetooth: controller: Source code documentation of ticker
  • 4596e155 bluetooth: controller: Minor refactoring in ticker.c
  • 23e1f4d2 bluetooth: controller: Added missing variable initializations
  • d533dde0 bluetooth: controller: Moved library source for lll_test.c
  • c741ef6e bluetooth: controller: Mayfly yield after call under Kconfig
  • f35dd8ec Bluetooth: controller: Fix regression in Coded PHY CI Change
  • a1cbbbe9 Bluetooth: controller: Fix nRF52840 Coded PHY timings
  • a202c14f bluetooth: controller: Move Nordic specific code
  • 3ac8fa5c bluetooth: controller: Move Nordic specific code
  • 0392ad0d Bluetooth: GATT: Fix usage of uint16_t instead of u16_t
  • e0f3ab6b Bluetooth: GATT: Add support for static services
  • b3a6da67 Bluetooth: GATT: Add option to enable/disable database
  • c42707c2 Bluetooth: Use BT_GATT_SERVICE_DEFINE whenever possible
  • 2c4e5d5f Bluetooth: GATT: Disable dynamic database by default
  • d7d64032 Bluetooth: GATT: Fix typo in commments
  • 45e1ce8b Bluetooth: GATT: Move GATT/ATT option to Kconfig.gatt
  • bd007141 Bluetooth: GATT: Rename BT_GATT_DB to BT_GATT_DYNAMIC_DB
  • e69b4be2 Bluetooth: Fix return type for settings read callback
  • 23636cba Bluetooth: controller: Fix pin or key missing response
  • 99fae680 Bluetooth: controller: commentary and readability improvements
  • 646f617a bluetooth: controller: Allow out-of-tree vendor specific HCI commands
  • a872911c Bluetooth: controller: Fix missing BT_CTLR_FILTER conditional
  • 34f6d08f Bluetooth: controller: Yield ULL processing when Ctrl PDU deferred
  • 23269d98 Bluetooth: controller: Implement low latency ULL processing
  • 54e78b90 Bluetooth: controller: Move LLL-to-ULL Tx Ack API to ULL
  • 4b9dee8a Bluetooth: controller: Add GPIO Debug Pins for HFCLK state
  • 211a81f9 Bluetooth: controller: Fix XTAL advanced feature
  • ffcbf121 bluetooth: controller: Made BT_CTLR_RX_PRIO_STACK_SIZE non-hidden
  • 4cebd738 Bluetooth: controller: Use void pointer to return rand value
  • b8c2c7e7 Bluetooth: controller: ull/lll: Increase adv random delay resolution
  • 8a4c1314 Bluetooth: controller: ull/lll: Workaround CPR procedure collision
  • 343937c5 Bluetooth: controller: ull/lll: Fix pin or key missing response
  • e2dbe4f6 Bluetooth: controller: Fix incorrect conditional compilation
  • 9602a690 Bluetooth: controller: Fix incorrect data type use in slot calc
  • a4370b73 Bluetooth: controller: Fix ULL LLL execution priority selection
  • 06ddc2bb Bluetooth: controller: Fix Rx and Tx buffer sizes
  • 90c205f6 Bluetooth: controller: Enable Zephyr VS HCI in ULL/LLL impl.
  • c629ea8a Bluetooth: controller: Disable controller privacy feature
  • 40241d81 Bluetooth: controller: Enable additional ULL/LLL CI tests
  • e5cf9ce1 Bluetooth: controller: ull/lll: Do not feature exc more than once
  • 2a0a48f6 Bluetooth: controller: hal: Fix PPI macro naming
  • 909f5a8a Bluetooth: gatt: Fix foreach iteration of static attributes
  • 9a5cb228 bluetooth: controller: hal: Correct the bit mask of used PPI channels
  • c0a7e4d7 Bluetooth: Mesh: Fix RPL storage timeout handling
  • e9ed6346 Bluetooth: Mesh: Fix postponing storage deadline indefinitely
  • 019d282a Bluetooth: controller: Fix Enc Setup overlap with Length Update
  • f9e89e55 Bluetooth: shell: GATT: Make get command take a handle range
  • 44739f44 Bluetooth: controller: Workaround CPR procedure collision at CPU instant
  • 774d5e87 Bluetooth: controller: split: Fix Conn Param Req procedure stall issue
  • 4678447d Bluetooth: Add debug kconfig for bluetooth services
  • 95e1eb96 Bluetooth: Add additional attributes to DIS
  • e7be378a Bluetooth: kconfig: Put ‘menuconfig BT’ in top-level menu
  • 58e9ac68 bluetooth: Controller: Refactor node_rx footer to avoid ptr arithmetic
  • 3d94df7e Bluetooth: controller: split: Fix master role RSSI measurement
  • d9d85fd1 Bluetooth: controller: split: Refactor the lll_clock_wait() function
  • 289eab6a Bluetooth: controller: Remove incorrect comment
  • 172dcec2 Bluetooth: controller: Fix unknown rsp received during enc procedure
  • 852b1dca Bluetooth: GATT: Fix not parsing result of Read by Type
  • 5e1de1a9 Bluetooth: Add support for vendor-specific events
  • 63a93e8b Bluetooth: controller: split: Refactor if_defines to is_enabled in lll.c
  • ea6cad9b Bluetooth: controller: remove duplicated code
  • 69790e5c Bluetooth: controller: Enable use of proprietary rx demuxing functions
  • fccb2e1f Bluetooth: GATT: Fix using a wrong handle

Boards (94):

  • 39d4babf board: stm32_min_dev: Add USB support
  • 55502df8 boards: rv32m1_vega_ri5cy: add STS LED to DTS
  • c0a1f463 boards: rv32m1_vega: fix I2C bus references
  • 78714b4f boards: arm: nucleo_f746zg: Activate CAN on nucleo F746zg
  • ab712b2d mimxrt1060_evk: mimxrt1064_evk: Enable pyocd runner
  • 6e7f99a9 boards: stm32f4_disco: added missing LED aliases
  • 4097a5bf boards: arm: add board support for mimxrt1015_evk
  • bd7f4fc6 boards: arduino due: default to building with MPU support
  • 0604e21d boards: arm: nrf52840_pca10090: update log settings
  • 3dc71c8d boards: arm: nrf52840_pca10090: add a GPIO reset line
  • 6ad19d24 boards: v2m_musca_b1_nonsecure: add flash to yaml
  • d6d7a800 boards: v2m_musca_b1_nonsecure: disable sanitycheck [REVERT ME]
  • 18dc73c1 boards: arm: Add support for STM32MP157 Discovery board
  • 125c0300 boards: arm: st, stm32: add jlink runner args
  • 27b9c6a6 boards: arm: disco l475 iot: correct documentation
  • 378ef0bb boards: Add support for nulceo_wb55rg
  • 9332abd3 boards: acrn: remove duplicated Kconfig HAS_DTS
  • 766abcc0 boards: rv32m1_vega: enable the onboard I2C busses and FXOS8700 sensor
  • 5d835fa1 boards: arm: Add 96Boards WisTrio LoRa Tracker board
  • fdf973de boards/x86/up_squared: update documentation to include HSUART info
  • 129936e6 boards: changing flash simulator device name alias
  • d4be557f boards: qemu_x86: reducing flash size
  • cfd5d8f1 boards: v2m_musca_b1_nonsecure: Increase flash size
  • a4607fd7 Revert “boards: v2m_musca_b1_nonsecure: disable sanitycheck [REVERT ME]”
  • 0efc0394 boards: stm32f4_disco: Fix yaml ram size
  • bb72df5b board: stm32_min_dev: Add support for blue/black variant
  • e2baac2d boards: arm: 96b_stm32_sensor_mez: Enable I2S2 peripheral
  • a0ba6546 boards: arm: 96b_stm32_sensor_mez: Add DTS node for on-board MIC
  • 360fe70e boards: atsamr21_xpro: Add SAM R21 Xplained Pro Evaluation Kit
  • d44086db nrf52_bsim: Add header to allow reusing native_posix drivers
  • b69ed037 boards: iotdk: add mpu and fpu configuration
  • 60f1b870 boards: native_posix: Add llvm to supported toolchains
  • 4b2a181a boards : arm : Add support for Microchip MEC15xx EVB ASSY 6853
  • f9402370 boards: mimxrt1015_evk: Fix board image
  • a28b65e6 boards: 96b_argonkey: upgrade documentation using official info
  • 6ee55fc1 boards: nrf52840_blip: enable default instances of peripherals
  • 28ee240f boards: nrf52840_papyr: misc. board config fixes
  • 87d1f068 boards: qemu_x86: properly enable XIP
  • 39855a9c boards: cc26x2r1_launchpad: add support for TI CC26x2R LaunchPad
  • f0dc2e43 boards: cc1352r1_launchxl: add support for TI CC1352R LaunchPad
  • cfe06aca boards/up_squared: declare myself King of the up_squared
  • 6d30d949 boards/galileo: adjust PCI-related configuration
  • b5eba0f6 boards/x86/up_squared: move UART configuration to apollo_lake.dtsi
  • aeb7fcef board: stm32_min_dev: add the missing usb node
  • cf1d3742 boards: rv32m1_vega: Introduce zero-riscy configuration
  • fe4b1ff0 boards: rv32m1_vega: Use different openocd config file for each core
  • 8b1a50b6 boards: holyiot_yj16019: add support for the Holyiot YJ-16019 board
  • dffd779f boards: arm: unify Nucleo-64 boards connectors image
  • 68a4bc54 boards: support the SAME70Q21B on the SAM E70 Xplained Board
  • 13453b91 boards: enable i2c on the SAM R21 Xplained Pro board
  • 35d529b6 boards : arm : Add I2C support for MEC15xx EVB
  • 3667d0b7 boards: microchip_mec: Introduce gpio to the eval board
  • c53c32e1 board: efr32_slwstk6061a enable SoC DC-DC converter
  • a93fcb10 boards: mimxrt1050_evk: configure USB device EHCI driver for rt1050
  • de873903 boards: adafruit_trinket_m0: Set flash address
  • d52ca255 boards: adafruit_trinket_m0: Force program flash to 0x2000
  • 7cf318b4 boards: add jlink runner for efr32_slwstk6061a board
  • c7e66ff9 boards/arm/olimexino_stm32: enable watchdog
  • 56be0fd5 boards/x86/qemu_x86: increase RAM size
  • d9c18ff0 boards: arm: Add Nordic nRF52811 board
  • e0d96866 boards: holyiot_yj16019: Remove counter from supported
  • 3f9a7920 boards/arm/*/*dts: fix double whitespace in model property
  • b6c84a94 boards/arm/olimexino_stm32: fix compatible dt property
  • 62a8e49f boards/arm/mikroe_mini_m4_for_stm32: fix model&compatible dt properties
  • a016feb4 boards: cc26x2r1_launchxl: enable TRNG entropy source support
  • 2d4ec5f1 boards: cc1352r1_launchxl: enable TRNG entropy source support
  • 2dc141ea boards: arm: mimxrt1015_evk: update board dts
  • d7efa1db boards: arm: mimxrt1020_evk: update board dts
  • 180df6dc boards: arm: mimxrt1015_evk: update the ram size
  • 105aef98 boards: twr-ke18f: add support for the NXP TWR-KE18F board
  • f9efca4b boards: riscv32: add LiteX VexRiscV board
  • a7a62509 boards/arm/olimexino_stm32: register led1
  • 65352a74 boards/x86/acrn: fix documentation to reflect “demo” nature
  • 7e85700a boards: arm: twr_ke18f: add RTC to list of supported peripherals
  • ce1e990c boards: arm: frdm_k64f: add Arduino header definition to DTS
  • 8548517b boards: nrf52840_pca10056: add Arduino header definition to DTS
  • 9ab20bfd board: disco_l475_iot1: add Arduino header definition to DTS
  • c0d9e7fc shields: introduce shield-based WNC-M14A2A modem setup
  • 8611837e boards: arm: frdm_k64f: don’t use ETH if MODEM is enabled
  • 35590c6d boards: arm: frdm_k64f: add pinmux for SARA-R4 modem
  • 4c490759 boards: shields: introduce SparkFun u-blox SARA-R4 shield
  • e2b45e6b boards: arm: particle_boron: enable SARA-R4 modem
  • f9d7bc29 boards/up_squared: remove CONFIG_SBL_FIXUP
  • 35d0ae39 boards/up_squared: temporarily remove I2C support
  • a8dcb8b6 boards/up_squared: remove SBL-specific board configuration
  • 96961476 boards/up_squared: I2C support added (back) in
  • 0b2a9b1b boards: reel_board: enable pull-up on UART TX pin
  • 56e50cf4 boards: nucleo_wb55rg: Configure LPUART
  • a828b2a5 boards: cc26x2r1_launchxl: enable support for I2C
  • 4817f413 boards: cc1352r1_launchxl: enable support for I2C
  • c124cdbb boards: arm: particle_boron: fix SARA-R4 gpio definitions
  • e541b16c boards: atmel: Enable hwinfo as a supported feature
  • 7f9f39fe boards: nrf52840_pca10059: Configure NFC pins as GPIOs by default
  • e0d73787 boards: mimxrt1060_evk: Enable mcux lpi2c driver and pins

Build (74):

  • 4198ba71 cmake: Fix missing dependency
  • 28a5657f cmake: zephyr_cc_option(-fmacro-prefix-map=${ZEPHYR_BASE}=.)
  • f098b44a cmake: atomic rename to fix toolchain cache creation race
  • 39131dc3 git.cmake: let the environment override BUILD_VERSION
  • fa0083ad cmake: fix support for out of tree shields
  • f92abffe ieee802154_kw41z: Fix build error with SYS_LOG_INFO
  • 94722992 cmake: DT: Change from -Idts/common to -isystem dts/common
  • 397abd41 cmake: DT: Add support for out-of-tree binding root directories
  • 9964cf29 kconfig: Add missing quotes after ‘source’ and ‘menu’
  • 60c39502 genrest: Include all parents in menu paths
  • 86b0c22d kconfig: Avoid potential issue parsing generated_dts_board.conf
  • bb09c458 cmake: Prevent infinite recursion
  • 7fdb5257 kconfig: Use ‘default’ instead of ‘def_bool’ in Kconfig.defconfig files
  • 3ad96bfc extensions.cmake: add two cc/compile_options callgraph comments
  • 3ffdcf4f cmake: boilerplate: Fix ZEPHYR_BASE variable for windows
  • 498b4946 CMakeLists.txt: fix misleading logical_target_for_zephyr_elf comment
  • 3a0597f0 cmake: LD: Allow input sections to remain unsorted
  • 857ea451 cmake: Split out board listing from usage
  • 3481dc87 cmake: fix whitespace
  • 3419efd5 cmake: fix intent description of toolchain_cc_nostdinc macro
  • 0cad53b5 cmake: Toolchain abstraction: introduce LINKER variable
  • 1f01325e cmake: Toolchain abstraction: use LINKER, introduce toolchain_ld_base
  • 7411c014 cmake: remove incorrect statement from doc
  • 2211935e cmake: clang: Make clang pick -T option on linking
  • d4ce2924 cmake: clang: Allow host’s clang to be used for native_posix
  • de603c0c toolchain: Do not pollute TOOLCHAIN_HOME
  • 274a4a28 cmake: Set TOOLCHAIN_HOME for Zephyr’s SDK
  • 129ae378 cmake: llvm: Make the setup for host installed clang easier
  • 2688bfad cmake: clang: Detect host installed clang
  • a3999243 cmake: clang: Don’t unconditionally use gcc’s fortify
  • f2c4779b cmake: clang: Provide toolchain_cc_nostdinc() macro
  • ab2f00e9 cmake: clang: Fix comment
  • bee7d1ec compiler: clang: Don’t link libgcc for native_posix
  • cbe74d46 cmake: llvm: Invalidate toolchain capability cache
  • 40808183 cmake: Toolchain abstraction: move LINKERFLAGPREFIX under GNU ld
  • 65f02c04 cmake: Toolchain abstraction: introduce toolchain_ld_baremetal()
  • 66431d21 cmake: helper function for importing library
  • c2419fc0 cmake: gdb: use gdb-multiarch if ${CROSS_COMPILE}gdb is not availiable
  • 69928beb cmake: Toolchain abstraction: build-id,gc-sections to toolchain_ld_base
  • 173c953e cmake: Toolchain abstraction: orphan handling in toolchain_ld_baremetal
  • b14b59c9 cmake: Toolchain abstraction: move symbol sorting into toolchain_ld_base
  • 3db09aa6 cmake: Toolchain abstraction: introduce toolchain_ld_cpp
  • 85af2805 cmake: remove unused ALIGN_SIZING_DEP
  • 8c7c2d21 cmake: whitespace alignment of syscall_macros_h
  • 11d6baea cmake: change construct_add_custom_command_for_linker_pass into macro
  • 4c811971 cmake: rename construct_add_custom_command_for_linker_pass macro
  • 1073fbaa cmake: configure_linker_script: accept argument with file extension
  • fbcea17c cmake: simplify configure_linker_script: avoid deriving define from name
  • 5f347eef cmake: move configure_linker_script to ld/target.cmake
  • 06365a5e cmake: zephyr_modules: Add west executable argument
  • 9915b4ec C++: Fix compilation error “invalid conversion”
  • 86a3e8ff cmake: Toolchain abstraction: Introduce toolchain_ld_relocation macro
  • d7ee1141 cmake: Toolchain abstraction: move PROPERTY_LINKER_SCRIPT_DEFINES
  • 37d49477 cmake: Rename kernel_elf to zephyr_final
  • a880fb13 cmake: explain BUILD_VERSION and KERNEL_VERSION_*
  • c2c8c849 cmake: Don’t have users call zephyr_link_interface on mbedTLS
  • f483e5b5 cmake: Mark post_build files as BYPRODUCTS
  • 197197a5 cmake: Toolchain abstraction: Introduce toolchain_ld_configure_files
  • 8650b150 cmake: Toolchain abstraction: Introduce toolchain_cc_warning_dw_[1-3]
  • bdb229fa cmake: Toolchain abstraction: Introduce toolchain_cc_warning_base
  • cbbbdeaa cmake: Toolchain abstraction: Introduce toolchain_cc_warning_extended
  • f4f09dd7 toolchain: Define a HAS_BUILTIN(x) macro in toolchain.h.
  • 472ea92e Build: Build with newlib-nano c library
  • 9b6c2f4b c++: kconfig: Fix choice dependencies and use ‘menuconfig’ symbol
  • ef621160 cmake: Fix missing dependency
  • ea5866e5 kconfig: Use ‘CONFIG_FOO_*’ in #endif comments to avoid CI failures
  • f2a1572a cmake: Add function for adding snippets to the linker file
  • 901c0a1c linker: Port usage of custom-sections to use Cmake
  • 421b4262 cmake: add handling for shield config and shield/board overlays
  • 538e12e5 cmake: fix regex for west version check in host-tools.cmake
  • 8eaa9068 cmake: Toolchain abstraction: Added missing colon to some Intent’s
  • 8e5a95e4 cmake: Toolchain abstraction: Introduce macros for MISRA SANE flags
  • 025ffa24 cmake: Toolchain abstraction: Abstraction of implicit-int error flag
  • cd92af1c linker: kobject-text.ld: avoid backwards location counter

Continuous Integration (15):

  • 0f7255c3 sanitycheck: order results.csv and discards.csv deterministically
  • 22a624a8 ci: only build on specified branches
  • 924987d7 ci: detect changes to sub-board definitions
  • 654ec598 sanitycheck: add timestamps to messages
  • 042d9b7d sanitycheck: fix reporting: build vs. run
  • d6476eee sanitycheck: handle pid file not being present
  • d18ec535 sanitycheck: show handler in verbose mode
  • bf878ced sanitycheck: Fix an error in scan_path exception
  • af1090c3 sanitycheck: clarify who spawns processes and threads and where
  • 2261d3e4 ci: send email to builds@ mailing list if master fails
  • 1c8632cf sanitycheck: support symbolic links in ZEPHYR_BASE
  • 79c48849 sanitycheck: Allow custom arguments for west-flash
  • cbecaddf sanitycheck: Add a “test-only” option
  • 75276a7d sanitycheck: when present, point at handler.log instead of run.log
  • 6b9e160b sanitycheck: Execute binary in output directory

Device Tree (35):

  • 08d41ecf dts: stm32f412Xg: Factorize package definitions
  • b2372456 dts: add declaration of stm32mp157
  • 7117f1c4 dts/arm/st: Provide basis for stm32wb device tree
  • 1847426f dts/arm/st: Add serial nodes on stm32wb
  • 13916a14 dts: stm32mp157: Dtsi fixup
  • 968d3a9e dts: flash simulator cleanup
  • a0a9a1f9 dts : arm : Add Microchip MEC1501 SoC device tree
  • 85698a01 DTS: Add UART 5 for STM32F4 SOC
  • 948ef47c dts: riscv32: Add rv32m1 zero-riscy core support
  • e44052f2 dts: riscv32: rv32m1: fix reg value for cpu@1
  • da56cad3 dts: arm: stm32: add dts support for ADC1 of stm32
  • 291e1289 dts: mchp: Add Microchip I2C SoC device tree
  • 2452b84c dts : Introduce gpio node entries for Microchip MEC
  • ff167995 dts: bindings: sram: add SiFive dtim0 bindings
  • 6299890b dts: riscv32: microsemi-miv: add flash and sram
  • 2a5010e7 dts: riscv32: hifive1: add flash
  • 85ca181b dts: riscv32: hifive1: configure sram
  • 855153a3 dts: riscv32: qemu_riscv32: configure sram
  • 8a568857 dts: riscv32: qemu_riscv32: add flash
  • 416c6240 dts: m2gl025_miv: configure flash and sram
  • cc3358e0 dts: arm: nxp: Add dtsi for RT1015 and RT1020
  • a5f36427 dts: bindings: Document missing property boolean type
  • 233149ee dts: nordic: move flash/sram under SoC Node
  • 0472bc46 dts: nordic: add missing erase-block-size entry
  • 2cac70e0 dts: bindings: usb: Add enum to maximum-speed property
  • 0a08c4e1 dts: arm: add DTS binding for ARM MPU peripheral
  • 579ac7bd dts: atmel: sam0: correct ARM Cortex-m variant in dtsi
  • 8ce04c5a dts: arm: delete systick node from SoCs not having the SysTick timer
  • 11b3b226 dts-binding: modem: wnc-14a2a: add label binding
  • cf5b0813 dts/bindings: introduce Arduino-header-R3 GPIO binding
  • 769b65ef dts: bindings: add modem binding for u-blox SARA-R4
  • e7cc5109 dts: x86: Move ioapic node out of cpu container
  • 343e1602 dts: x86: shring ioapic register size to 4k
  • 82451953 dts: import vendor-prefixes.txt from linux kernel
  • 9260561c dts: atmel: Fix node name for device_id

Documentation (31):

  • 9d04f03b doc: add missing doc top labels
  • 0eec5dba doc: labels: Add links to feature process
  • 18b51587 doc: sample: mpu Update documentation
  • 8b147cd1 README.rst: shorten it
  • 1e6f4bd1 doc: guides: add “Asking for Help” guide
  • d9f53455 doc: extract_content: Allow for absolute paths in deps
  • 74be380f doc: application: fix duplicated word
  • 4f23741a doc: nrf52840_pca10059: re-work programming notes
  • c41320eb doc: guides: debugging: probes: correct J-Link usage
  • 15333eb3 doc: dfu: Fix mcuboot reference
  • 35b10fbd doc: stm32_min_dev: Update for blue/black variant support
  • df357c43 doc: fix watchdog API documentation
  • b54f1a94 doc/getting_started: mention ZEPHYR_TOOLCHAIN_VARIANT=llvm
  • 773bd98c doc: clarify behavior of k_poll_signal_raise on error
  • 81e005f4 doc: re-word and extend west build documentation
  • 3696eccc doc: fix west boards tip
  • c5112327 doc: fix mentions of Wi-Fi trademark name
  • d96ffc19 doc: boards: arm: nucleo: add ADC support to the boards doc
  • 9cea26ae doc: west: Document west installation in-depth
  • f3d1386a doc: save ZEPHYR_BASE in more places where it’s needed
  • bedfcf4d doc: coding style: Expand the list of keywords with braces
  • 90276c28 doc: updates for west installation docs
  • 64c6a10b doc: updates to west multi-repo docs
  • 6cb8e3ec doc: move sign command docs before catch-all page
  • 605a3906 doc: kconfig: Fix accidental SPDX-License-Identifier in generated doc
  • 5b400fbe doc: trivial fix for lpcxpresso54114 doc
  • 21e964ec doc: guide for optimizing zephyr
  • cd6ba94b doc: add references to builds mailing list
  • 9d3be372 doc: move module related doc to guides
  • 2f126bb5 doc: document submitting changes to modules
  • d1452636 doc: dfu: Fix module links

Drivers (216):

  • 29ffcae8 drivers: usb_dc_stm32: Make pin remapping part of the device tree
  • f01a7250 drivers: usb_dc_stm32: Reinitialize the write semaphores on bus reset
  • 431c450a drivers: clock_control: nrf: Fix lfclk source settings for nrf9160
  • 3a6c786c drivers: counter: nrfx_rtc: Fix lack of interrupt when CC=0
  • a000ba79 drivers: eth: gmac: Fix MAC address info log
  • a3ec56c1 drivers: counter: stm32: fix LSE clock source for not F4 SoC
  • 36ff55cb gpio: rv32m1: enable GPIO port clocks
  • e0390535 uart/ns16550, drivers/pcie: add PCI(e) support
  • 35b93084 drivers: can: mcp2515: Add driver for MCP2515 CAN controller
  • 4f776104 drivers: can: mcp2515: Rework for DTS SPI bindings
  • c9090caa drivers: can: mcp2515: Fixes for DT SPI cs
  • 3de55daa drivers: serial: stm32: remove forced RXNE clearance
  • c74c131e drivers: serial: stm32: add err_check
  • 78eed34b drivers: serial: stm32: add serial hw flow control
  • 6751c1ff drivers: pinmux: stm32: add F4 RTS/CTS definitions
  • 5b5f0a5f drivers: pinmux: stm32: add L4 RTS/CTS definitions
  • 3f0f617b drivers: pinmux: stm32: reformat L4 pinmux
  • 04da64db drivers: serial: stm32: dts binding, and fixup for flow control
  • 25ea5fea drivers: pinmux: stm32: add F4 RTS/CTS definitions
  • 3751275f drivers: gpio: stm32: add ASCR configuration for L47x+
  • 8905b0fe drivers/gpio_intel_apl.c: fix return value for gpio_pin_read()
  • 1e5e8829 drivers: sensor: APDS9660 WhoAmI check logic
  • 917cb432 sensor: fxos8700: add support for hardware reset pin
  • f458a509 driver/audio: mpxxdtyy: Added support for 2 microphones (stereo)
  • 69726bbc usb: tests: Enable other boards for test
  • 23d22043 usb: usb_dc_dw: Fix valid endpoints check
  • 81fbf0f4 usb: usb_dc_native_posix: Fix valid endpoints check
  • 582b4401 usb: usb_dc_dw: Check endpoint is valid
  • 53ab1e24 usb: usb_dc_native_posix: Check endpoint is valid
  • cc9c9151 usb: usb_dc_kinetis: Verify endpoint is valid
  • cf349df3 usb: usb_dc_kinetis: Fix using invalid index
  • f6784ed1 usb: usb_dc_stm32: Add missing function
  • a0614439 interrupt_controller: rv32m1: fix intmux driver initialization priority
  • 8a4dbb5b drivers: i2c: rv32m1: add I2C driver for the RV32M1 RI5CY SoC
  • 6e277cff drivers: serial: add config for uart 4
  • d2291c4b drivers: clock_control: nrf: add SYNTH LFCLK clock source
  • c4306704 drivers: hwinfo: add driver support for Atmel SAM0 device ID
  • 560b458a drives/flash: use nrfx for nrf
  • 279115e3 drives/flash: provide boundaries info for nRF9160
  • bca3deb1 drivers: Bluetooth: Generalize IC-specific setup hook
  • 3c70a383 drivers: sensor: ams_iAQcore: Implemented ASM Indoor Air Quality Sensor
  • f29ec12f drivers: sensor: ens210: Implement AMS ens210 Sensor
  • 776671c7 drivers/interrupt_controller: stm32: add support of stm32mp1
  • ea7afdde usb: cdc_acm: SerialState notification full support
  • 27c97911 flash_map: fix test names
  • 1e5d02fc flash_map: add function to iterate over areas
  • 5c6efa01 flash_map: add shell interface
  • b1128999 drivers/clock_control: Add support to stm32wb series
  • d6550734 drivers/interrupt_controller: stm32: Add support for stm32wb series
  • 15023492 drivers/pinmux: stm32: Add pinmux definitions for stm32wb (LP)U(S)ART
  • dd2a0867 include/uart.h: remove unused PCI references
  • c8b0a8d4 drivers: clock_control: Add STM32L1X clock support
  • cda74e20 drivers: pinmux: Add STM32L1X pinmux support
  • 1eb6177e drivers: gpio: Add STM32L1X GPIO support
  • 0525019b drivers: interrupt_controller: Add STM32L1X EXTI support
  • b31adf2d drivers: i2c: Add STM32L1X I2C support
  • 8e307a3a ethernet/eth_e1000.c: change to new PCI(e) functions
  • 6fc65535 drivers/gpio/gpio_intel_apl: remove dependency on shared interrupts
  • c0a15c8b drivers: pwm_nrfx: Correct prescaler value for undivided clock
  • c837d85c drivers: flash: add flash_simulator driver
  • 1c604161 drivers: flash: fix flash-simulator build crash
  • 6ae532a3 drivers: flash: flash_simulator enabled by default on qemu
  • 5895f8d8 driver: flash: flash_simulator: moved part of Kconfig to DT
  • 68a950a8 drivers: timer: nrf: remove unnecessary event feature
  • 686830bb drivers: native_posix: Add VLAN tag strip feature
  • f6343ace drivers: clock_control: stm32: Modify file naming pattern
  • aca4b075 clock_control: Add stm32mp157c_dk2 board support
  • 524c6255 drivers: gpio: stm32: Indentation and cleanup
  • b4b7020b gpio: Add stm32mp157c_dk2 board support
  • f95f5ae4 usb: sam0: Ensure API arguments are valid
  • c8208a39 usb: sam0: Implement missing API functions
  • df33e5e8 flash_gecko: add support for page layout
  • 2b58594e usb: device: Use set_endpoint helper for set_config
  • 42b92e25 usb: device: Use set_endpoint helper
  • 8515b841 driver: watchdog: stm32: rename the independent watchdog name
  • 5274c382 pinmux: stm32f4: Add STM32_OSPEEDR_VERY_HIGH_SPEED to pinmux header
  • 5fd99f5e drivers: flash: simulator Kconfig cleanup
  • b50fe237 usb/class/usb_dfu: support progressive image erase
  • cdc29175 drivers: ieee802154: Make upipe configuration options depend on driver
  • e79e4d9f usb: Add Kconfig template for DEVICE_COUNT
  • fbd27134 usb: hid: Use UTIL_LISTIFY and device count macro
  • e2d1c027 usb: cdc_acm: Use UTIL_LISTIFY and device count macro
  • 0d3082cb usb: device: Code cleanup
  • 8d6fbde8 usb: Remove usb_dc_ep_set_callback return code
  • 446f5e48 usb: dc: native_posix: Increase number of endpoints supported
  • fbfe75c5 usb: tests: Add second IN endpoint to test
  • e96673dc drivers: spi: nrfx: allow enabling DMA with the nRF52832 despite PAN 58
  • 18833ac0 drivers/pcie: verify PCI(e) assigned interrupts
  • 791def84 usb: bluetooth: l2cap buffer size now configurable
  • d68666fc drivers: spi: sam0: Implement DMA async API
  • ec2f5036 drivers: serial: sifive: Fix UART extern interrupts
  • 78a39b80 drivers: flash: covering more flash page with stats sections
  • 32d23cb3 driver: api: uart: remove exclusive config for async api
  • c5b0a996 drivers: ieee802154: New API for ACK configuration
  • ba21de58 drivers: dma: Add SAM0 DMAC driver
  • 6324c8a2 drivers: pinmux: sam0: Remove defines from dts_fixup.h
  • 37a6a7ea drivers: gpio: sam0: Remove defines from dts_fixup.h
  • 4204700a drivers: flash: sam0: Remove defines from dts_fixup.h
  • 06caf274 drivers: watchdog: sam0: Remove defines from dts_fixup.h
  • b6cc9987 drivers: timer: sam0: Remove RTC defines from dts_fixup.h
  • 07d18e3f drivers: usb: sam0: Remove defines from dts_fixup.h
  • 11295c19 drivers: sensor: Add ADXL362 interrupt handling
  • 6f225ab6 uart: Add support for stm31mp157c_dk2 board
  • 287f0670 drivers: pinmux: stm32: code cleanup
  • eba3f492 pinmux: Add stm32mp157c_dk2 board support
  • 714c8ff2 usb: usb_device: fix set configuration request
  • bfea4536 drivers: adxl362: use logger API
  • ef1788da drivers/uart_ns16550: remove unnecessary #include
  • f16f7fc4 drivers/pcie: add support to read wired IRQ configuration
  • f2af5fe7 drivers/uart_ns16550: move UART configuration boilerplate to template
  • 869c5d2e drivers/uart_ns16550: enable auto IRQ detection for PCI(e) endpoints
  • 4a49736b drivers/uart_ns16550: fix style issues flagged by Zephyrbot
  • be1ec782 usb: samples: mass: add configuration and fs for FLASH
  • 5a4a658d usb: usb_dc_stm32: Return EAGAIN on lock failure
  • c77e142f usb: device: Handle EAGAIN for device transfer
  • 3183c103 usb: Fix automatic assignment endpoints
  • dac83213 usb: webusb: Strip ‘serial’ from names
  • 34a2b401 usb: webusb: Update license header
  • bc05efac usb: webusb: Fix logging for webusb
  • 87b3c631 usb: webusb: Remove unneeded headers
  • b0373fbd usb: webusb: Fix payload for vendor requests
  • f4ff72bb usb: webusb: Add more log output
  • bb81fed4 crc: remove deprecated crc headers
  • 1b9dc5fa drivers: spi: nrfx: fix a CMakeLists.txt bug introduced in e96673d
  • de77262d drivers: pinmux: stm32f7: Add LTDC pinmux entries to STM32F7
  • 93a77c0f drivers: ieee802154_nrf5: Rename nrf5_config to nrf5_irq_config
  • e0ff342a drivers: ieee802154_nrf5: Implement configure API
  • b4204631 usb: Add log for endpoint assignment
  • 42bdcccd usb: usb_dfu: do not set bwPollTimeout dynamically
  • 1d64a465 drivers: adc: Add SAM0 ADC driver
  • 46730e1f drivers: i2c: Add SAM0 I2C driver
  • 4462069d drivers: gpio: sam0: Add interrupt support
  • cb39e4ab api: dma: fix issue of no-implemented reload
  • 74e320d8 api: dma: add api to retrieve runtime status
  • ac9356ad drivers: led: ht16k33: add LED driver for Holtek HT16K33 LED driver
  • 98cecb36 drivers: gpio: ht16k33: add GPIO driver for Holtek HT16K33 LED driver
  • cc1b2c70 uart: doc: Add special case for virtual UART
  • 2c672b92 usb: device: Add usb_transfer_is_busy() function
  • 98c8a951 usb: cdc_acm: Refactor USB serial code
  • 5e942638 drivers: pinmux: stm32: add pinmux support for ADC of stm32
  • 7c7db00a drivers: adc: add driver support for ADC1 of stm32
  • e7d26be7 API: Uart: Add support of 9 bits data length
  • 9fee67d5 Driver: Uart: Add support of 9 bits data length for STM32
  • 9012960e drivers: counter: Add optional (D)PPI wrapping to nRF RTC driver
  • 29deef2d drivers: watchdog: sam0: Check if timeout is valid
  • ae990523 drivers: adxl362: don’t skip mutex unlocking in error path
  • cddb3a1e drivers: adxl362: use Kconfig for interrupt mode
  • a94f1718 drivers: i2c: mchp: Add I2C driver for MEC family
  • 0cb23812 drivers: gpio: Introduce microchip gpio driver
  • e5cbe6a9 usb: cdc: Add unique PIDs for each sample
  • a30950c6 usb: cdc: add .inf file
  • b1f3825e usb: cdc: add option to force IAD
  • 5f0d0655 drivers: usb: nxp: add NXP EHCI USB device controller driver shim
  • bc618657 drivers: can: stm32: fix filter mode set
  • 252ab559 drivers: wifi: simplelink: Add static IP address support
  • 3c3e267d usb: add zero-length packet after MPS-sized IN transaction
  • 197e3585 drivers: pinmux: add SPI2 on Port B defines
  • 1b935223 drivers: can: Extend attach_isr with void *arg and pass to the isr cb
  • b3b43b89 drivers: can: Extend can_send with void *arg and pass it to the isr cb
  • 7ddbade2 drivers: can: rework can_attach_msgq
  • 54d065c6 drivers: can: Implement can_attach_workq
  • 0e807c3f drivers: can: Add loopback driver
  • b0bc68e8 drivers: can: rename drivers to can_
  • 6746470d drivers: ieee802154: nrf5: Support when LOG is off
  • 0e925701 drivers: adxl362: don’t disable callbacks
  • ed474e88 drivers: adxl362: check interrupt status
  • a5327b00 drivers: adxl362: clear status independently and before mapping
  • 4054d2ba drivers: flash: flash_simulator: added max write calls param
  • 2bee500f drivers: add CC13xx / CC26xx entropy driver
  • 75a3ee52 drivers/i2s_ll_stm32.c: (FIX) Avoid warning in LOG_ERR
  • 55e2014d drivers: nrf: Trigger STOP RX event and wait before disabling UARTE
  • 021e27cf drivers: i2c: mcux_lpi2c: add support for I2C_0
  • 168e1291 clock_control: introduce mcux pcc driver
  • 56dfb62e drivers: serial: uart_mcux_lpuart: add support for LPUARTs with two IRQs
  • d4b9c0d6 drivers: clock_control_mcux_sim: add support for clkout
  • aaf91f0c interrupt_controller/loapic_intr.c: remove unused MPtables constants
  • 6d4a5200 drivers: counter: Move nRF TIMER and RTC configuration to device tree
  • 48edfc22 console: kconfig: Put ‘menuconfig CONSOLE_SUBSYS’ in top-level menu
  • 63575589 subsys/random: Hide ‘Random generator’ choice when empty
  • b3739169 drivers: serial: add LiteUART driver
  • c0c3cdfc drivers: timer: add LiteX timer driver
  • b054517c drivers: interrupt_controller: add LiteX interrupt controller driver
  • 2a7824a8 drivers: ipm: mhu: Add MHU driver for V2M Musca
  • 7b057624 drivers: nrf: Fix long receptions in UARTE async API.
  • 61fb6b46 drivers: gpio_c13xx_cc26xx: fix control flow issue
  • b364b841 usb: webusb: Fix callback not called
  • a1e3f392 usb_dc_stm32: Check if functions’ arguments are valid
  • d8f8f0f2 drivers: modem: wncm14a2a: dont free packet on error
  • bd2d0392 drivers: modem: wncm14a2a: correct pinconfig assert check
  • fd690946 drivers: modem: wncm14a2a: remove HW specific Kconfig settings
  • 759d1d64 drivers: modem: introduce u-blox SARA-R4 modem driver
  • f521996d uart: native_posix: Add support for another serial port
  • 59ebe6a0 drivers/i2c/i2c_dw.c: templatize device configuration boilerplate
  • 309dfef5 drivers/i2c/i2c_dw.c: rewrite for PCI(e) support
  • 7b8f8ba5 drivers/i2c_dw: update CODEOWNERS
  • 2eb99ea3 usb: cdc_acm: fix typo in CDC_ACM_DEFAULT_BAUDRATE
  • 8f0c3b80 usb: cdc_acm: reset to default after disconnect
  • c0204b92 entropy: fix C++ compiler warnings
  • 69a2896f drivers/serial: stm32: Optimize LPUART code
  • 9c1ffddc drivers: serial: Enable LPUART for STM32WB
  • 927012dd lvgl: kconfig: Remove menu and use a ‘menuconfig’ symbol
  • 4cc486ec drivers: adxl362: fix control flow issue
  • 935efeb0 drivers: adxl362: fix acceleration sample conversion
  • 1becd756 drivers: adxl362: rework temperature conversion
  • 6eb0cb0d drivers: add CC13xx / CC26xx I2C driver
  • 1202407b drivers: i2c: sam0: Fix missing break in speed setup
  • cfa32af7 drivers: led: ht16k33: add missing variable initialization
  • bf76b2ac usb: device: Add transfer cancel helper
  • f206170c usb: device: Do not call callback when transfer is cancelled
  • 437ee504 usb: device: Cancel all transfers on disconnect
  • 83f625b4 usb: device: Add debug logs catching re-enable failures
  • 9f2ddc9f usb: webusb: Trivial syntax fix
  • 1370f162 usb: device: Disable endpoints on disconnect and suspend
  • a95f6385 usb: device: Do not return error if ep already enabled
  • 03ef375f drivers: usb: usb_dc_nrfx: Set cfg.en to false on Reset
  • 626349f1 drivers: adxl362: use burst transfer

External (35):

  • 14aa624c ext: mcux: csi: Fix wrong circular queue delta calculation
  • ee69d004 ext/hal: stm32f0xx: Fix warnings for extraneous parentheses
  • a51bfc8d ext/hal: stm32f1xx: Fix warnings for extraneous parentheses
  • 198387dc ext/hal: stm32f2xx: Fix warnings for extraneous parentheses
  • 0404cf90 ext/hal: stm32f3xx: Fix warnings for extraneous parentheses
  • 3ec47dcf ext/hal: stm32f4xx: Fix warnings for extraneous parentheses
  • 073ece50 ext/hal: stm32f7xx: Fix warnings for extraneous parentheses
  • 0a482cd9 ext/hal: stm32l0xx: Fix warnings for extraneous parentheses
  • c38df151 ext/hal: stm32l4xx: Fix warnings for extraneous parentheses
  • c28fdc7a ext: hal: nordic: Update nrfx to version 1.7.1
  • 55a63cad ext: hal: nxp: mcux: add device files for RT1015
  • e529af1f ext: hal: Enable support for stm32mp1xx hal
  • 0429a3ad ext: hal: add stm32mp1 exti ll driver
  • 3c82d233 ext: hal: fix naming in rcc ll
  • 6fdd0c2c hal: stm32wbxx: Add HAL for the STM32WB series
  • 90982153 ext/hal/st: Adapt stm32cube folder to stm32wb introduction
  • 9f826045 ext: hal: st: stm32cube: Add HAL for the STM32L1x series
  • ffafa9c9 ext: lib: crypto: Extend mbedTLS generic config
  • f1f46e2c ext: Import Atmel SAMR21 header files from ASF library
  • 43c4c9c5 ext/hal/st/stm32cube/stm32l1xx: rename SVC_IRQn -> SVCall_IRQn
  • 66cae83f ext : hal : mec1501 Add the MEC1501 external headers.
  • faa941eb ext: simplelink: import HAL from TI CC13x2 / CC26x2 SDK
  • e490be38 ext: simplelink: modify CC13x2/CC26x2 CCFG to use appropriate sections
  • bec1fe86 ext: nrfx: Reserve PPI channels and groups used by pwm_nrf5_sw driver
  • 5e38ed93 ext: nrfx: Reserve PPI channels and groups used by Bluetooth controller
  • 15c22965 ext/hal/st: stm32cube: Update License Link for stm23cube packages
  • f3bdc057 ext: hal: atmel: import SAM E70 HAL revision B
  • 26512cb3 ext: hal: atmel: same70b: apply same patches than on rev A
  • 99ba2e7f ext: hal: mchp: Fix compilation for MEC1501 SMB macros
  • 8487a1eb ext: mcux: Import NXP SDK USB EHCI controller driver to ext/ directory.
  • dbc2406a ext: lib: mcumgr: Remove ‘External Sources -> Management’ menu
  • 5c69e981 ext: open-amp: kconfig: Add missing OPENAMP dep. to OPENAMP_SRC_PATH
  • 3a953731 ext: hal: nxp: mcux: add device and driver files for KE1xF series SoCs
  • 4a575122 qmsi: move to a zephyr module
  • f0ea13d2 ext: mbedtls: Don’t define MBEDTLS_PLATFORM_NO_STD_FUNCTIONS

Firmware Update (7):

  • 945f9c7d dfu/boot: non-secure app support
  • a819d162 dfu/boot: Replace flash partitioning terminology
  • dffcfd8c dfu: introduce progressive erasing
  • af98cd7b DFU: img util: Fixed warnings when compiling with newlib
  • c2f08dad dfu/img_util: : non-secure app support
  • 6c55bb44 dfu: kconfig: Remove ‘DFU Options’ menu
  • 5c29d0ef dfu: mcuboot: Added defines for upgrade request modes

Kernel (12):

  • 09dc929d userspace: fix copy from user locking
  • 2e0095a9 security: kernel: Fix STACK_POINTER_RANDOM dependency
  • afda764e kernel: increase workq sizes if COVERAGE=y
  • 873dd10e kernel: mem_domain: update name/doc of API function for partition add
  • 0f6c9a5a kernel: adjust default main stack for riscv
  • be3d4232 kernel: fix k_stack_alloc_init()
  • e1cb4ca0 include/sys_clock.h: simplify _NEED_PRECISE_TICK_MS_CONVERSION
  • 03199f99 include/sys_clock.h: consolidate identical branches in __ticks_to_ms
  • 201fdf0a kernel: Fix usage of CONFIG_SYS_CLOCK_EXISTS
  • b186303c kernel/sched.c: refactor k_sleep() implementation for varied timescales
  • a567831b kernel/sched.c: add k_usleep() API function
  • fd49cf7d kernel: timeout: add syscall for runtime clk freq

Libraries (11):

  • 1afa9d0e libc: minimal: fix realloc function
  • a25dce96 libc: minimal: Add bsearch function
  • 291c06e1 lib: os: ring_buffer: Fix C++ compilation warning
  • b8c560a4 newlib: fix user mode calls to _sbrk
  • 16317c1a lib: cmsis_v2: set default dynamic stack size
  • 8502a2ea lib: cmsis_v2: increase stack sizes if coverage
  • 7153a2ee lib: cmsis_v1: set stack size larger if coverage
  • d79d3eb7 libc: minimal: Define time_t and suseconds_t
  • c896f87d libc: minimal: Introduce sys/_timeval.h
  • 6922d93d lib/posix: correct the meaning of CONFIG_MAX_PTHREAD_COUNT
  • af529d11 libc: minimal: Implement exit()/_exit() functions.

Logging (2):

  • 0bfd2836 logging: Allow logger usage in C++ files
  • 63e784ca logging: Fix checks of Kconfig option

Maintainers (26):

  • b8774ae8 CODEOWNERS: code-owner for SAM3X
  • cebc2627 CODEOWNERS: add code-owner for Arduino Due
  • 9e8ad2df CODEOWNERS: Add codeowner for ams iAQcore and ENS210
  • f73e157d CODEOWNERS: Add codeowner for 96b_wistrio
  • 636a7af4 CODEOWNERS: update code owners
  • 20b64516 CODEOWNERS: Set owner to ext/hal/st
  • ea1f7fb1 CODEOWNERS: Add codeowner to dts/bindings/*/st,stm32
  • 94857d31 CODEOWNERS: Update networking files
  • 035bc2c6 CODEOWNERS: minor adjustment
  • 0ee07269 CODEOWNERS: Add code ownership for Atmel samr21 code
  • a0d79f5f CODEOWNERS: include/cortex_m/csme/ -> include/cortex_m/csme.h
  • e07e8b87 CODEOWNERS: Add ownership for SAM0 DMA driver
  • f2f0b677 CODEOWNERS: minor cleanup
  • af3f81ef CODEOWNERS: remove use of commas
  • 735b2872 CODEOWNERS: Add codeowner for TI CC13x2 / CC26x2 files
  • bcf286d6 CODEOWNERS: Add code owner for rv32m1_vega related files
  • 2c86cac2 CODEOWNERS: Add joerchan and remove sjanc for Bluetooth host paths
  • 1892c67b CODEOWNERS: Add ownership for SAM0 I2C driver
  • a5519ed0 CODEOWNERS: Add entry for lib/libc
  • b70ab8fd CODEOWNERS: Add codeowner for Atmel SAME70 HAL
  • 89b0116a CODEOWNERS: remove use of commas
  • b47669ac CODEOWNERS: Add code ownership for Microchip XEC drivers
  • c4284ba7 CODEOWNERS: address some unowned files/dirs
  • ca4a078b CODEOWNERS: Fix missing ‘/’ in codeowners file
  • 34bf5dd5 CODEOWNERS: Add codeowner for include/dt-bindings/usb/usb.h
  • ec150d68 CODEOWNERS: Add code ownership for

Miscellaneous (17):

  • f90acbf2 release: Post-release patch level update
  • 247337a0 shell: kconfig: Put ‘menuconfig SHELL’ in top-level menu
  • 65e350e6 Shell: Introduce shell_hexdump
  • 7e26f534 shell: Add macros for creating conditional commands
  • ecf2784f shell: Use conditional commands registeration in shell_cmds.c
  • 0e83ad65 shell: prompt configuration during project generation
  • 0a8c75f9 stats: extending api to handle statistics with more than 256 elements
  • c6d31905 util: extending UTIL_DEC_N definitions
  • 6a0837b4 stats: changed API to use zephyr types
  • 3b99b20f shell: Move signals initialization from thread to init
  • 3bcd1880 treewide: fix typos
  • e66c0da0 misc: Portable math_extras.h implementations.
  • b2945d30 misc: Implement math_extras.h function with GCC builtins.
  • 0e65aab7 misc: Always test the portable version of the math_extras.h functions.
  • c8708d9b misc: Replace uses of _builtin*_overflow() with <misc/math_extras.h>.
  • 3ef63083 codeowner: add codeowners for /test/lib
  • 3c0c1bfa shell: Fix checks of Kconfig options

Networking (59):

  • 88a1fd7d net: fix errno returned without promiscuous mode support
  • 91ca8aab net/ip/dhcpv4: Set source IP address in DHCP Request
  • 7e14cff8 net: ethernet: Set NET_ETH_PTYPE_ARP for IPv4 link local packet type
  • 3e798dfd net: ethernet: Send sender IP address in ARP announce packets
  • f0c98527 net: buf: Remove wrong alignment annotation from NET_BUF_SIMPLE()
  • 712103d5 net: if: Add access functions for network interface flags
  • 36339516 net: if: Only start the network interface during init if needed
  • 51a9e6f5 net: openthread: Do not overwrite stored dataset with defaults
  • e8e814c6 net: sntp: Handle case of request timeout
  • f65727a1 net: sntp: Add sntp_query() function with fractional precision
  • cdebd819 net: trickle: Re-init trickle timer for multiple triggerings
  • 7a824d8b net: slip: allow compilation without CONFIG_NET_LLDP
  • 9ecf2923 net: slip: fix compilation without NET_L2_ETHERNET
  • b9383243 net/icmpv4: Include icmp_hdr in callback
  • dd65cfb5 net/icmpv4: Allow for arbitrary payload data in ICMP echo
  • 7c096953 net/icmpv6: Allow for arbitrary payload data in ICMP echo
  • 812b9997 net: shell: Improve the output of the ping function
  • 25309eb3 net: ipv6: Trivial changes in fragmentation debug
  • 7fbe087d net: tests: ipv6_fragment: Use NET_DBG instead of DBG
  • 08d24e42 net: ethernet: Add VLAN tag stripping capability flag
  • 49cb24a5 net: ethernet: l2: Add support for VLAN tag strip
  • 543eecb9 net: shell: Add VLAN tag stripping to capabilites
  • 3d8fe9a8 net: core: In RX check if the pkt is for loopback interface
  • c4fcc604 net: arp: No need to check pkt for NULL
  • 57629724 net: openthread: Implement frame pending API
  • 95cadb7b net: bt: Add multi-link support
  • 5506a4d2 net: bt: Set NET_IF_NO_AUTO_START flag
  • 7eb4a688 net: openthread: Fix utilsFlashErasePage function
  • b17664b1 net/offload: Add dummy functions when offloading is disabled
  • 622f4abd net/ip: Make struct net_addr holding uninon of ipv6/4 unconditionally
  • 6fee1261 net/context: Reduce the usage of #ifdef/#endif
  • dea1cdfd net/context: Reordering some ipv4/6 logic to follow all other places
  • b2b21412 net/connection: Removing cache feature
  • de6fd24e net/connection: Reduce usage of #ifdef
  • d85aabe2 net/connection: Use slist to manage used/unused connections
  • d652a1e8 net/connection: Merge rank bits into flags attribute
  • 9a6e3012 net/connection: Final cleanup
  • 9a6bbbfb net: Check device driver API pointer
  • b8494d9a net: lib: mqtt: Enable blocking PUBLISH payload readout
  • cd07a30c net: Allow to disable native IP stack with socket offloading
  • 2de06b4b net: Avoid calling L2 functions on offloaded interface
  • 9ca9e077 net: socket: Define NI_MAXHOST for compatibility
  • 426f3fa1 net: socketutils: Add utils to manipulate network address strings
  • 22f1a291 net: sntp: Add convenience API for one-shot SNTP query
  • 89bf1578 net: sockets: Add a way to register a socket family handler
  • 61f4597d net: sockets: tls: Register handler for TLS sockets
  • b3cd478a net: sockets: packet: Register handler for AF_PACKET
  • e082d989 net: sockets: can: Register handler for AF_CAN
  • a84e9345 net: arp: Use proper dest hw address after receiving a request
  • 95527963 net: arp: Drop request where src hw address is our address
  • a2fa8e9c net: getaddrinfo: Implement initial handling of host == NULL
  • c0b30355 net: sockets: implement getsockname function
  • b800737f net: ipv4: Allow UDP packets with broadcast dst address
  • 60cb25d1 net: ipv4: Send multicast ICMPv4 reply with correct src address
  • 979aedfa net/iface: Modify function to get IPv6 global address
  • 426764eb net/iface: Add a function to get IPv4 global address
  • 6f79b019 net: if: Select global IPv4 address if needed
  • 19b48687 net: ethernet: Drop pkt if MAC dst is bcast address but IP is not
  • a923c2f1 net: openthread: fix off-by-one error in settings offset calculation

Samples (46):

  • 47b7c79e samples: mesh: enable SMP service for DFU
  • bf52bfea samples: can: Added project configuration for MCP2515
  • 6b4007e5 samples: sensor: bme280: Convert code to use printk
  • 35a81562 samples: usb: hid: Enable harness for the sample
  • 4f2674f1 samples: usb: Add depends_on gpio
  • e9520335 samples: usb: mass: Add whitelist mass storage on ram
  • d422d566 samples/drivers/soc_flash_nrf: enable nrf9160_pca10090 targets
  • 43b00eff samples: bluetooth: hci_uart: update nrf52840_pca10090 config
  • f989f2d0 samples: sensor: ams_iAQcore: Implement sample for AMS iAQ-core
  • f0090825 samples: sensor: ens210: Implement sample for ens210
  • be5bfb61 samples: sockets: sntp_client: make IPv6 & NET_CONFIG_SETTINGS optional
  • 75102595 samples: sockets: sntp_client: Add support for cc3220sf_launchxl
  • ae218d29 samples: sensors: fxos8700: whitelist rv32m1_vega board
  • 3d6ce30f samples: net: dumb_http_server: Add net_pkt.h file inclusion
  • a9395157 samples: net: dumb_http_server: Check EOF while skipping headers
  • ee442c2b samples: net: zperf: Add __packed for zperf_udp_datagram
  • 901d85bd samples: sntp_client: Elaborate sample to workable state
  • 57e7ddb7 samples: net: zperf: Remove unnecessary main
  • 1b3227fd samples: usb: Correct USB HID device name
  • 995b568b samples: cdc_acm: Update CDC ACM Device name
  • da701f9d samples: hid-cdc: Update USB device names and project conf
  • 631cd007 samples: bluetooth: ibeacon: change to ADV_NONCONN_IND type
  • 888f4dd0 samples: LSM6DSL accel fix unchecked return value sensor_trigger_set()
  • fbd6a752 samples: shields: x_nucleo_iks01a1
  • d481fa8c samples: drivers: ht16k33: add sample application for the HT16K33
  • 0e57e4fb samples: usb: cdc_acm: Update CDC ACM echo sample
  • 88145db6 samples: usb: cdc_acm_composite: Refactor sample
  • 24304436 samples: mesh: single timer to handle all transitions
  • 4835c0f2 samples: mesh: removed bugs in on-off transition
  • 36a6adaf samples: mesh: removed redundant code
  • 0cf19915 samples: mesh: corrected implemenation of gen. move message handlers
  • 35f14bc3 samples: mesh: replaced magic numbers with values defined in stdint.h
  • f78599fb samples: mesh: sync the init procedure to initialise the mesh
  • 59eb4832 samples: net: can: Add missing tag to SocketCAN sample
  • 08be81d9 samples: sntp_client: Switch from sntp_request() to sntp_query()
  • 220fba3b samples: google_iot_mqtt: Switch from sntp_request() to sntp_query()
  • 6f6b4697 samples: google_iot_mqtt: Explicitly cast socklen_t to int in printf
  • bfcfe147 samples/drivers/watchdog: make it work on STM32
  • 0b46eb26 samples: sensor: bme280: add README.rst
  • b8285a58 samples: sensor: bme280: add arduino_101_sss.overlay
  • fc3c2c0a samples: basic: Add a minimal sample
  • 07d21bef samples: add ADXL362 sensor sample application
  • d75f3ced sample: mhu: IPM MHU dual core on V2M Musca
  • 21e9b0f5 samples: lwm2m_client: cleanup shield overlay files
  • 3fce0f21 samples: lwm2m_client: re-add sanity check for WNC-M14A2A build
  • 74f01067 samples: bluetooth: peripheral: Fix RX buffer size

Scripts (43):

  • 3061c92a new –gzip-mtime option that defaults to zero + test
  • 3c6584d6 west: build: Use officially documented CMake options
  • b7c75915 west: build: Add new pristine cmd-line and config option
  • aec74f69 kconfiglib/menuconfig: Various behavior/UI improvements
  • aa2b8a1b scripts/sanitycheck: Precompile test-time regular expressions
  • 83de530d scripts/coccinelle: Add script for counting identifier length
  • 3a88dce9 scripts: west: Run pristine.cmake directly instead of the target
  • 4a10eea0 better comments and –help. Zero code change.
  • 0dd3b421 west: zephyr_module: Improved error messaging during west failures
  • d6d1e27a scripts: west_commands: Print error message when jlink exe not found
  • 31bdad52 west: Implement CMake helpers in scripts/west_commands
  • d6f033e6 west: Add a boards command
  • 4d975dba west: Renamed to
  • c9f4bb67 west: build: Construct CalledProcessError with positional args
  • 851fa12d west: boards: Use the new zcmake module name
  • 4dbf5f15 scripts: fix and tweak west boards
  • acda2571 west: build: use CMAKE_HOME_DIRECTORY to locate source
  • 69099e3d scripts: flake8 cleanup for west build
  • d1595035 scripts: add helpers to west build for getting config options
  • 88fb8bac scripts: improve west build’s board handling
  • 1f5e6d89 scripts: add –cmake-only to west build
  • bbe890ab scripts: add build.generator config option for west build
  • a1ef6962 scripts: fix up west build verbosity levels
  • 8465cf25 scripts: add –dry-run flags to west build
  • 3a486a85 scripts: add –build-opt option to west build
  • 83a5fd8d scripts: make west build -h fit on a screen
  • 859c4ed2 west: Fix unused import and variable
  • 2d5fb6da west: fix import error on
  • 0396b6e6 scripts: west build: propagate verbosity to cmake generator
  • 9d343569 scripts: gen_kobject_list: Remove redundant parentheses
  • 1e314df8 scripts/dts: globals: parse gpio-map properties for connector nodes
  • f9dd5362 scripts/dts: allow node to be child on one bus and parent on another
  • f43d3065 west: Add bash completion file
  • 66fdd48f west: Add completion command
  • b3674f59 scripts: fix west TypeError on unknown arguments
  • 79d2e31c scripts: mergehex: Add –overlap argument
  • 983b493a scripts/dts: Add support for enum’s
  • 46da745e env: ignore unset var
  • fba8ac98 scripts/dts: Remove alias defines for bus parents with an alias
  • 743a184b scripts: mpu align for ro section of new memory region on non-XIP system
  • c8f43b9c scripts: make code relocation work for non-XIP system
  • f08148e6 scripts/ fix root dir detection and enable it
  • 0d4290a2 scripts/dts: Fix issue in label generation of registers

Storage (6):

  • 94451b22 subsys/settings: Allow to register custom backends in settings subsystem
  • 2038365e subsys/settings: Use strncpy instead of strcpy in settings_runtime
  • 43492817 subsys/settings: Correct size in strncpy to avoid unterminated strings
  • 6b772f99 fs: nvs: format specifier alignment
  • 04ccd400 disk: kconfig: Group related symbols and use ‘menuconfig’ symbol
  • 54000fb8 fs/nvs: fix startup for 2-sectors configuration

Testing (73):

  • 6bf369f3 tests: net: pkt: Verify that net_pkt_write() writes correct data
  • 9fa5d9a5 tests: usb: Fix checking error code
  • d0bc6891 tests: usb: Add usb_read() for invalid endpoint
  • dad6ddef tests: usb: Cleanup tests
  • 1b1c5f72 tests: usb: Add write() and set_callback() tests
  • 1178042c tests: usb: Add more USB DC tests and refactor names
  • 8cf9bf03 tests: usb: Add usb_read() for invalid endpoint
  • f350c275 tests: usb: Add write() and set_callback() tests
  • 7f2f1d3c tests: crypto: Update HMAC_PRNG test
  • 3fa90938 tests/kernel/schedule_api: also test without time slicing
  • 95a5f90c tests: can: api: Fix “Device not not found” error message
  • ad17e41b ztest: make priority of testing thread configurable
  • 2d24ce85 tests/drivers/soc_flash_nrf: fix lack of disabled protection
  • 5e4e730d tests: drivers: build_all: Add AMS IAQcore and ENS210 to build all
  • fcf392c6 tests: net: all: Add more options to catch-all test
  • 01a2bebc tests: kernel: mem_protect: protection: fix test-case filter
  • 2a798bb7 testsuite: Include thread name in crash dump for tests
  • 543b9c97 tests: bluetooth/tester: Add support Read Using Characteristic UUID
  • 570183c6 tests: drivers: add flash_simulator driver
  • dae15fa7 tests: storage: flash_map: adding qemu platform
  • d19097f8 tests: net: Add more tests to ipv6 fragmentation
  • b070bbd8 tests: kernel: Exclude platforms stm32_min_dev_*
  • 3ce67709 tests: drivers: flash_simulator: removing CONFIG_ prefix from defines
  • 7c35a4e8 tests: usb: Add endpoint allocation verification test
  • 9e98a948 tests: ipm: disable on qemu_x86_64
  • 960e6d95 tests: net: getaddrinfo: Fix test to check the query is sent
  • a404bb76 tests/kernel/device: extends test for code coverage
  • 543c5c1b tests: getaddrinfo: fix stack overflow
  • 1d4cc154 tests: pipe: fix error with optimization disabled
  • a682dedd testsuite: fix memory access
  • 81a55668 tests: cmsis_v2: don’t hard-code stack sizes
  • 68a55fc8 tests: cmsis_v1: properly set stack size
  • 5f0ee9d3 tests: timer_api: run in user mode
  • dc27ec3e tests: ethernet_mgmt: enable random generator
  • 643d6891 tests: mqtt_publisher: enable random numbers
  • e9b5fe33 tests: ieee802154: set min_ram
  • 94851726 tests: stackprot: don’t set main stack size
  • 758a2468 tests: net: mqtt_publisher: Allow compilation in every platform
  • c840383c tests: usb: desc_sections: Use automatic endpoint assignment
  • 4626a8cb tests: usb: desc_sections: Check EP assignment order
  • d05b260e tests: usb: desc_sections: Cleanup test
  • b2bfcc27 tests: socket: misc: Add tests for inet_pton()
  • f1f1a9f3 tests: fix unchecked return value in test_net_pkt_basics_of_rw
  • 26693830 tests: drivers: adc: Add SAM0 support
  • 8bda26bd test: driver: adc: add some nucleo boards support for adc test cases
  • 7a2d025b testsuite: ztest: Add zassert_within macro
  • 0c639a8a tests: net: socket: Add tests for socket family registration
  • d09b91f5 tests: drivers: uart: Fix async write abort test
  • f1b89eda tests: drivers: can: api: define DT_CAN_1_NAME if not defined
  • 6b9a6f24 tests: drivers: can: Add testcases for attach_workq
  • acf40cab tests: drivers: can: Make CAN dev global
  • e81090cf tests: fs: nvs: added basic unittests for nvs
  • 52ab40cb tests: counter: Enable nRF52810 testing
  • 46289bed tests: change the min_ram for mbedtls and mem_protect
  • c4d90aab tests: uart: Add long tranfer test to UART_ASYNC_API.
  • fc3270d0 tests: kernel: increase stack buffer when code coverage enabled
  • 875d5a2b tests: usb: desc_sections: Fix coverity issue
  • 6378e1e4 tests: usb: desc_sections: Fix coverity issue
  • e8e5086e tracing: Fix checks of Kconfig options
  • c3de368e tests: bluetooth: Test vendor-specific events
  • bf74f541 tests/subsys/usb/device: Fix comment and message
  • fb0faaa1 testsuite: coverage: Port GCOV linker code to Cmake.
  • 9a31f28b tests: benchmarks: timing_info: fix start of swap time
  • 9ab293b9 tests/kernel/sleep: add tests for k_usleep() API
  • 35a9299a tests: fs: nvs: test cases clean up flash on completion
  • b76edc1a tests: fs: nvs: garbage collector test
  • 704b460b tests/bluetooth/tester: remove spurious CONFIG_GPIO=y
  • bf7b97bd subsys/ztest: Documentation fix
  • bf070716 tests: mbedtls: Call mbedtls_platform_set_printf() only if needed
  • 563b89f9 tests: benchmarks: mbedtls: Fix printf args
  • 86f012d2 tests: timer_api: Fix test for SYS_CLOCK_TICKS_PER_SEC != 100
  • 62c71dc4 tests: tickless_concept: Fix slicing time measurement
  • ba4eae14 tests: test_sched_timeslice_reset: Fix slice time measurement

Zephyr OS is ready for connected worker devices

By | Blog

This blog post is written by Giuliano Franchetto, CTO of Intellinium and was originally featured on the Intellinium website.

Today, everything gets more and more complicated. This is of course true for embedded electronics design, both on software and hardware side. More complex boards will be more likely to fail at some point, and a more complex firmware will be more prone to bugs and side effects.

We’ve all had a “I added a simple line of code at the start of my code, and it now fails at the most random place” moment (and let’s be honest, this is not the funniest part of being an embedded engineer). Even if it costs more at the first place, dividing software and hardware functionalities is one of the most effective ways to tackle this problem, and save money in the long run.

So, let’s talk how Zephyr OS can be very efficient on this subject, and use multiple Zephyrs to create a hurricane and to build the best connected worker smart PPE!

Zephyr 1.12 and onwards now supports Asymmetric MultiProcessing (AMP), helping designers to remotely call functions running on another core. In that way, the designer can now choose to divide its code, and host only some parts of the functionality in a single core and use AMP to call the other set of functionalities remotely. The code becomes lighter, faster, predictable and way easier to upgrade later. Another very interesting part is that we can now port software principles easily using multiple core + AMP.

Let’s take our use case at INTELLINIUM, where we have been developing a safety pod (plug-in) to transform traditional leather-based safety shoes into smart and connected safety shoes, a life-saving product that shall work at all time and in all conditions.

The multiple cores + AMP architecture enables the use of the “SOLID” software principle, very famous among Java developers. The SOLID principle is a “Single Responsibility Principle”, or more trivially “just do what you are meant to do and do it well”. In our case, we must manage critical messages, answer a user’s distress call, but also read various sensors or manage a LED. The priority of all functionalities is of course very different, and even if Zephyr manages thread priority, we are polluting life critical processes with “cosmetic” ones. Aware of this potential problem, we chose to add a small M0 MCU from ST, whose job is to manage all the sensors and actuators of our product. That way, our main MCU (a nRF52840 from Nordic Semiconductors) can focus on its “Single Responsibility”, taking care of its user.

Another very powerful possibility is to separate the communication processing power from the main core. That’s why we chose the new nRF9160 from Nordic Semiconductor as our LTE modem, as they were brilliant enough to embed an independent Cortex M33core inside their own component, hosting all our communication related code. No more AT commands parsing with huge static buffers in our main program, no more SIM management nor HTTP packets building. Everything is done is the M33 core, dedicated to communicating with the base modem. And of course, AMP is used between the nRF52840 and the nRF9160 to send or receive messages from example.

I hope that this small talk showed you how powerful can multi-processor be, and not only for pure computing power, but to make firmware development easier, more scalable, and safer. It may cost you a few bucks more when producing your own board, but trust me, you will save dozens if not more on the long run. I’m out of time right now, but I’d just to mention that adding multiple cores can also save energy, thus increasing your product life time. But that will be another talk. Happy coding!

You can join the conversation or ask questions about Zephyr on the Zephyr Slack channel or Mailing List.