FOUNDRIES.IO INSIGHTS

Zephyr Development News 10 July 2018

By Michael Scott | July 10, 2018

This is the 10 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

The past 2 weeks have seen a lot of activity, which is to be expected this early in the Zephyr 1.13 development cycle. Commits in the Drivers, Arches and Networking areas accounted for over 50% of the changes.

This newsletter covers the following inclusive commit range:

  • 3bdb52f1 doc: improved error reporting for non-UTF8 docs
  • 25b0212f subsys: usb: class: add loopback function

Important Changes

Kconfig removal of all redundant default “n” settings:

A series of Kconfig-related patches removed all redundant default “n” settings across the entire Zephyr tree. This change shouldn’t affect behavior; however, it will make any out of tree patches affecting Kconfig files a bit more difficult to merge for this cycle.

New functionality for the console driver/subsystem:

The console driver/subsystem went through a fairly large refactor to remove the dependency on a FIFO-based console input abstraction. This allows supporting Segger’s RTT technology as a console backend. The CONFIG_CONSOLE_PULL knob was renamed to CONFIG_CONSOLE_SUBSYS as part of these changes. This signifies that the subsystem is intended to cover all of Zephyr’s console handling (existing and new).

Applications using the old configuration name will need updates.

Features

Arches:

Initial Cortex M4 support was added for the i.MX 6SoloX SoC. It’s a hybrid multi-core processor composed of one Cortex A9 core and one Cortex M4 core. The low level drivers come from the NXP FreeRTOS BSP and are located at ext/hal/nxp/imx. More details can be found in ext/hal/nxp/imx/README.

Microsemi Mi-V RISC-V softcore CPU support was added for running on the M2GL025 IGLOO2 FPGA development board. This required moving some code from the fe310 platform into the RISC-V privilege common folder.

Zephyr support was added for Nordic’s nRF52810 SoC. This is a low-cost variant of the nRF52832, with a reduced set of peripherals and memory. Since Nordic does not offer a development kit for the nRF52810, the nrf52810_pca10040 board definition can be used with the nRF52832-DK (nrf52_pca10040). Using this board definition enforces the limitations imposed by the nRF52810 IC. For more information, see http://www.nordicsemi.com/eng/Products/nRF52810

An nRF5x peripheral list was created that can be used to describe each nRF5x SoC. Kconfig can use this description to help configure only drivers that are available for a particular SoC.

Support was added for the STM32F7 and STM32F2 series of STM32 SoCs. This includes clock control, entropy, GPIO, flash, pinmux, and UART drivers, as well as several device trees and board definitions for STM32F7 Discovery, STM32F207XG, and STM32F207XE development hardware.

The ESP32 IDF bootloader now has a Kconfig option for compilation during the Zephyr build. At flash time, the bootloader will be flashed with the Zephyr image.

Nordic and STM32 SoCs can now use Segger’s RTT protocol for console output, in addition to UART.

Bluetooth:

Controller support was added for the Nordic nRF52810.

A new Bluetooth Mesh node sample was added in samples/boards/nrf52/mesh/onoff_level_lighting_vnd_app. It demonstrates several generic and light models.

The BLE controller Kconfig options were reorganized. CONFIG_BT_CTLR means that a controller is implemented, with additional options (currently just CONFIG_BT_LL_SW) selecting a specific implementation. This allows adding alternative controller implementations in the future.

If the Bluetooth device is neither an observer or has central role selected, the scan related code is excluded from the HCI core. This results in smaller image sizes for peripheral- or broadcasting-only roles.

A Kconfig option CONFIG_BT_CTLR_CRYPTO was added to allow flexibility in choosing to use host cryptographic functions or the ones provided by the BT controller.

Boards:

A new “shields” configuration was added to establish connector flags for compatibility checks. Arduino compatible serial, I2C and SPI were the first shield compatibility additions, with ST’s nucleo_f429zi board making use of them. Expect more on this front as time goes on.

Several new boads were added: i.MX’s UDOO Neo Full SBC and ST’s STM32F746G-DISCO, STM32F723E-DISCO and STM32F769I-DISCO.

The I2C ports of several nRF-based boards were enabled.

Build:

An LLVM backend and a clang toolchain variant were added to support building with llvm (included with many popular Linux distributions). Initial testing was done on quark_d2000_crb and quark_se_c1000_devboard/Arduino 101. To enable this, set ZEPHYR_TOOLCHAIN_VARIANT to clang in your environment.

Architectures, boards, and apps can now override the C standard version, which was previously set to -std=c99. Currently, the native POSIX port uses this feature in boards/posix/native_posix/CMakeLists.txt

set_property(GLOBAL PROPERTY CSTD c11)

Device Tree:

Nordic boards moved I2C enablement, SDA and SCL pin configuration, and LED / button definitions into DTS.

STM32F7-pinctrl added definitions for USART/UARTs.

Documentation:

Information about the websocket server API was added to Zephyr’s documentation. For details, see http://docs.zephyrproject.org/api/networking.html#websocket

Intel S1000 developers will be happy to note that the docs now include instructions for obtaining the toolchain from: https://tensilicatools.com/platform/intel-sue-creek.

As part of Zephyr’s security development process, certain external requirements require justification that threats in a threat model have been mitigated. To make this process traceable, the threats must be enumerated and given labels. For this purpose, labels were added to the threats in Zephyr’s sensor threat model. See the model itself for more details http://docs.zephyrproject.org/security/sensor-threat.html

Ever wonder how DTS relates to Kconfig options? Wonder no more! Some clarification was added to the Device Tree documentation at http://docs.zephyrproject.org/devices/dts/device_tree.html#dt-vs-kconfig

The “Getting Started” document did not clearly state how to use a custom cross compiler. This was remedied with a new section “Using Custom Cross Compilers”. See the details at http://docs.zephyrproject.org/getting_started/getting_started.html

Information on the newly-supported gPTP protocol was added to the networking documentation.

Drivers:

STM32F2 and STM32F7 received clock_control, flash, GPIO, pinmux, UART, entrophy and interrupt_controller drivers.

The native POSIX Ethernet driver now has support for gPTP.

A generic I2C EEPROM slave driver was added.

USB drivers received several additions, such as high-speed support for DesignWare USB controllers, and an API for USB BOS (Binary Object Store) descriptors.

USB HID payload size is now configurable via CONFIG_USB_HID_MAX_PAYLOAD_SIZE (the previous value of 64 is still the default).

Shims for nRFx TWI, TWIM and PWM drivers were added and the now redundant i2c_nrf5 shim was removed.

A PTP clock driver was introduced which can be implemented in those network interface drivers that provide gPTP support.

An LED driver for NXP PCA9633 (I2C 4-bit LED) was added which supports a blink period from 41ms to 10667ms and a brightness value from 0 to 100%.

External:

The NXP iMX6 FreeRTOS BSP was imported to add Zephyr support on iMX6SX processors (exclusively on the Cortex M4 core), and to speed up the development process.

The Nordic nRFX HAL was updated to support the nRF52810.

STM32cube updates for all STM32 families (including the addition of STM32F2x HAL) were also merged.

The Segger RTT debug code was updated to version 6.32d.

MCUMGR external sources were updated to external commit a837a731 from https://github.com/apache/mynewt-mcumgr.

Kernel:

Back in Zephyr 1.12, the old scheduler’s thread queueing code was replaced with the choice of a “dumb” list or a balanced tree. The old multi-queue algorithm is still useful in some use cases, such as applications with large-ish numbers of runnable threads that don’t need or want fancy features like EDF or SMP affinity. To fill this gap, the old implementation was reintroduced, and can be enabled using CONFIG_SCHED_MULTIQ.

Miscellaneous:

The logging subsystem saw many new features merged, including: support for multiple backends, improving real-time performance by deferring logging to a separate runtime context, timestamps, and filtering options (which are compile time, runtime, module level, instance level). The console backend was added as the first backend example.

Networking:

gPTP (Precision Time Protocol) support was added to according to the IEEE 802.1AS-2011 standard. To enable it, use CONFIG_NET_GPTP. Note: at this time, gPTP is only supported for boards that have Ethernet ports which support collecting timestamps for sent and received Ethernet frames. A gPTP sample was added at samples/net/gptp.

Also new to Zephyr is the LLMNR (Link Local Multicast Name Resolution) client and responder from RFC 4795. LLMNR is used in Windows networks. A caller can be set up to resolve DNS resource records using multicast DNS, as well as configured to listen for LLMNR DNS queries and respond to them. Related Kconfig options are CONFIG_LLMNR_RESOLVER and CONFIG_LLMNR_RESPONDER. The implementation is in subsys/net/lib/dns.

Samples:

Socket API-based samples for echo_client and echo_server were added to Zephyr as well as a simple logger sample illustrating the new capabilities of the logger subsystem additions.

LLMNR client support was added to the DNS resolver sample.

A sample application for testing the NXP PCA9633 LED driver was added.

Scripts:

The Kconfiglib project in Zephyr saw a couple of updates. 1) Dependency loop detection. Until now, dependency loops have raised a hard-to-debug Python RecursionError during evaluation. Now, a Kconfiglib exception is raised instead, with a message that lists all the items in the loop. 2) MenuNode.referenced() was converted to a property, making the API more consistent (read-only values are accessed with properties). 3) Warnings for choice overrides were eliminated.

The nrfjprog runner script was updated to accept a --snr parameter specifying the serial number of the device to be operated on.

Device tree now allows the use of a new element of DTC grammar called overriding nodes. It looks like this in a board’s dts file arduino_i2c: &i2c1 {}; This overriding node information is used during the DTS include file generation like so #define ARDUINO_I2C_LABEL ST_STM32_I2C_V1_40005400_LABEL

In this way, ARDUINO_I2C_LABEL could be used as a generic binding name. This change is derived from a dtc commit in version v1.4.2.

Bug Fixes

Arches:

The ARM/NXP MPU code was cleaned up a bit to avoid configuring out-of-bound MPU regions. Also, the ARM MPU code had several Zephyr defines replaced with direct uses of CMSIS defines.

When compiling, both cortex-m0 and cortex-m0plus will now use -march=armv6s-m instead of -march=armv6-m to to ensure the svc directive exists.

Bluetooth:

Bluetooth Mesh now depends on CONFIG_BT_BROADCASTER and CONFIG_BT_OBSERVER, as they are necessary to implement Mesh devices. Several other Mesh-related bugfixes landed to solve initialization order during node reset, redundant model publication clearing, cyclic rewriting to flash when restoring state, checking for a model subscription address, and ignoring prohibited element addresses.

For the Bluetooth Controller core, LE Extended Scanner Filter Policy now depends on CONFIG_BT_OBSERVER and the time to transmit an empty packet was raised from 40 microseconds to 44 microseconds on a 2M PHY, due to an additional byte of preamble.

The BlueNRG-MS HCI driver received a pair of changes. In the first, it now reads from the controller as long as the IRQ is high. In the second, it makes sure to configure the BlueNRG-MS to controller mode just after it’s ready by disabling “HCI reset” via a quirk.

Boards:

The BlueNRG-MS Bluetooth configuration had to be fixed on the disco_l475_iot1 board. This includes SPI3 usage, SYSCLK adjustments, and a few build warnings.

Build:

The gen_isr_tables script received several updates for simplification and dead code removal.

Python script “process_gperf.py” used in the Zephyr build system will now be invoked via “python” instead of called directly. This avoids non-portable shebang logic and/or “default application” behaviour.

Device Tree:

STM32F4 saw corrected pin assignment of node [email protected].

Drivers:

RTC syscall changes required a build error fix.

A build error was addressed for intel_s1000 which uses DesignWare USB. It doesn’t inherit qmsi header which has several definitions used in the driver. Instead make sure those definitions exist in a a DesignWare specific header.

A build error in uart_handler.c was fixed when CONFIG_UART_LINE_CTRL is defined.

Fixes were applied to the nRF UART driver for broken hardware flow control and interrupt driven APIs.

For the USB/DFU subsystem, bcdUSB had been previously updated from 1.1 to 2.0 in the default device descriptor, but not in the DFU class. After USB bus reset performed by dfu-util, this alternative descriptor registered with bcdUSB was set to 1.1. This mismatch caused a communication failure. The DFU descriptor’s bcdUSB was updated to match the default value.

The STM32 clock control driver received a fix to HCLK calculation when using MSI. The MSI clock signal can be selected in several ranges. These ranges should be taken into account for calculating its frequency and hence global system frequency. This change is used when enabling Bluetooth on the disco_l475_iot1 board.

A long-standing issue where the K64F-FRDM board would generate a random MAC address on every boot (which would lead to DHCP address exhaustion) has been solved. The existing Kconfig option CONFIG_ETH_MCUX_0_RANDOM_MAC, which dynamically chooses a random MAC address, is now one choice among many in the new CONFIG_ETH_MCUX_0_MAC_SELECT option. The other choices are CONFIG_ETH_MCUX_0_UNIQUE_MAC (the new default), which uses the MCU unique identification register to generate a stable MAC address which is persistent over reboots, and CONFIG_ETH_MCUX_0_MANUAL_MAC, which allows setting a fixed MAC address. For details, see http://docs.zephyrproject.org/reference/kconfig/choice_55.html?highlight=eth_mcux_0_mac_select

NETUSB and STM32 ethernet hardware apparently never called ethernet_init(). This was revealed when the net_arp_init() function was moved into ethernet_init() and ARP tables stopped being initialized correctly, and has been fixed.

External:

PWM related nrfx_config entries for nRF52840 needed to have their #ifdef logic reversed in order to enable properly.

For STM32F4xx and STM32F7xx, the I2SR field needed to be shifted by RCC_PLLI2SCFGR_PLLI2SR_Pos when the PLLI2SCFGR register is read or written. Previously, the configuration was not done properly (R and M params were badly set) and the PLLI2S was generating a bad clock waveform.

Networking:

The “net app” layer has historically been the combination of 2 separate but useful parts: 1) a library to set up client and server connections (CONFIG_NET_APP) and 2) a library to set up/configure networking on application startup (CONFIG_NET_APP_SETTINGS). As this second functionality is useful in almost every circumstance, it has been split out into a new top-level networking library under subsys/net/lib/config. In the future, this would also allow other networking frameworks such as sockets to use these configuration options. This move will cause issues for out of tree patches to the net app layer.

The layer 2 networking code was also moved as having it under subsys/net/ip/l2 didn’t make much logical sense. The new location is subsys/net/l2. Hopefully, this movement didn’t result in any functional changes, but only time will tell. Developers should note that any local patches to the old layer 2 location will need to be refactored.

Zephyr’s ARP table implementation was cleaned up slightly and optimized for memory usage through the use of a single linked list, smaller ARP entries, and handling request timeouts in a single k_delayed_work structure.

Samples:

Several changes were applied to the Bluetooth Mesh nRF52 on/off level lighting sample at samples/boards/nrf52/mesh/onoff_level_lighting_vnd_app.

The 96 Boards ArgonKey sample added support for the TI LP3943 LED controller to test the 12 on-board LEDs.

Scripts:

The extract_dts_includes script was refactored for better maintainability; some false information messages were also removed.

Individual Changes

Patches by area (417 patches total):

  • Arches: 63
  • Bluetooth: 24
  • Boards: 33
  • Build: 17
  • Continuous Integration: 7
  • Device Tree: 12
  • Documentation: 15
  • Drivers: 107
  • External: 16
  • Firmware Update: 2
  • Kernel: 11
  • Libraries: 3
  • Maintainers: 1
  • Miscellaneous: 4
  • Networking: 50
  • Samples: 21
  • Scripts: 8
  • Testing: 23

Arches (63):

  • 687355c9 arch: arm: nrf: Use SystemInit() from MDK in SoC initialization
  • 1fa9d843 arch: arm: nrf: add hardware description for nrf Kconfig files
  • eb84eff2 arch: arm: nrf: modification of config parameter: SOC_SERIES_NRF52X
  • 0a41e23a arch: arm: use CMSIS macro defines for MPU_CTRL register bit setting
  • 8d52c171 arch: arm: use CMSIS defines for MPU_RBAR register bit setting
  • 1547abb5 arch: arm: use CMSIS defines for MPU_RASR register bit setting
  • bf159885 arch: arm: beetle: duplicate CMSIS MPU-related macros
  • 631eedd3 arch: Add imx6sx m4 soc support
  • 23a5b5d1 riscv32: riscv-privilege: integrate common code
  • 1765d75f riscv32: riscv-privilege: Microsemi Mi-V support
  • 5204fd70 arch: arm: Set Zero Latency IRQ to priority level zero:
  • 92778e44 arch: soc: nrf52: add UART1 to dts fixup
  • 071f5153 arch: arm: mpu: include CMSIS header in arm_mpu.h
  • aee97be7 arch: arm: soc: remove core zephyr header inclusions from soc.h
  • 985f43e3 native_posix: Let users use math functions
  • 54d1a608 imxrt1050: Disable low-power modes
  • 0f6bd5c8 arch: arm: nrf: Add support for the nRF52810
  • aed5e360 arch/Kconfig: Remove redundant ‘default n’ properties
  • 87ecbe7f arch: x86: Kconfig: Remove redundant ‘default n’ properties
  • 81d61601 arch: riscv32: Kconfig: Remove redundant ‘default n’ properties
  • b0156b2c arch: nios: Kconfig: Remove redundant ‘default n’ properties
  • 8cb6fb72 arch: xtensa: Kconfig: Remove redundant ‘default n’ properties
  • f428d8da arch: arc: Kconfig: Remove redundant ‘default n’ properties
  • f1f1fb41 arch: arm: Kconfig: Remove redundant ‘default n’ properties
  • 30529da0 arch: arm: stm32: correct include issue
  • 8bcffefb arch: arm: clean up MPU code for ARM and NXP
  • e7205be0 arch: stm32: Enable HAS_SEGGER_RTT on all stm32 SoCs
  • 7d8d280d arch: arm: stm32: Basic STM32F7 family support
  • 58643f3d arm: stm32: STM32F7 family device tree
  • e8607758 Revert “arch: arm: stm32: correct include issue”
  • 2889f5f0 native: Do not ignore format-truncation warnings
  • fa83a4d1 arch: arm: stm32f7: remove core zephyr header inclusions from soc.h
  • 7c9a1f0f arch: arm: soc: add explanatory comment for kernel headers’ inclusion
  • 52ed3799 esp32: add ESP-IDF bootloader option
  • 5ed26a5c esp32: Re-order bootloader condition in Kconfig
  • 4a8393dd esp32: add abitily to flash bootloader
  • 06778129 arch: arm: nrf: remove kernel_includes.h from nRF5x soc.h inclusions
  • e325510d arch: arm: nrf: minor header files’ clean up in soc/nrfx
  • bdab07a2 native_posix: Do not select COVERAGE by default
  • 97adff57 arch: arm: nrf: Enable SEGGER RTT on all Nordic SoCs
  • 059952c8 arch: arm: update compile options for DSP
  • 6ee562b7 arch: arm: stm32: add basic support for STM32F723 SoC
  • 33d3f14b arch: arm: add compile-time guards for arm_mpu code
  • d20dac82 arch: arm: minor refactor in arm_core_mpu_configure_user_context
  • 559249ee arch: arm: Remove redundant HAL definition for ARM MPU
  • 816100a6 arch: arm: use CMSIS bitset flags for MPU attribute definitions
  • 1ed37e77 arch: arm: beetle: duplicate ARM MPU registers’ definition
  • ca6b21b9 arch: arm: move ARMv7-m specific content in corresponding header file
  • e202e044 arch: arm: nrf: conditionally compile mpu_regions.c
  • 2b79fceb arch: arm: refactor _region_init(..) function
  • d1944109 arch: arm: abstract MPU attribute generation in inline function
  • df41ed88 arch: arm: mpu: replace literals with CMSIS bitsets
  • a36bd915 arch: ARM: Change the march used by cortex-m0 and cortex-m0plus
  • 6511c412 arm: stm32f2: Add support for stm32f2 series
  • 85d2633a stm32f2: add stm32f207xg soc
  • 7e2f6ebc stm32f2: add stm32f207xe soc
  • 0a5de7df native_posix: override C standard version to 2011
  • 889b290a arch: arm: beetle: Pull in CMSDK header for CMSIS support on Beetle
  • 41dd6622 arm: Print NXP MPU error information in BusFault dump
  • 54fbcc08 arch: arm: mpu: get REGIONSIZE defines directly from ARM CMSIS
  • 4e26f9c3 arch: stm32f0/f1/f3/l0: remove core zephyr header inclusions
  • 5aaf827a arch: arm: stm32f2: remove core zephyr header inclusions from soc.h
  • 8776835b arch: arm: stm32: add basic support for STM32F769 SoC

Bluetooth (24):

  • b35ed7e7 Bluetooth: Fix central from failing to start encryption
  • 938f12e9 Bluetooth: Mesh: Gen. OnOff, Gen. Level, Lighting & Vendor Models
  • 88182449 Bluetooth: Add helper for parsing advertising data
  • d41d9bd1 Bluetooth: Convert sample code to use the new bt_data_parse() API
  • 85c15226 Bluetooth: UUID: add UUIDs for missing HIDS characteristics
  • f3ba6e38 Bluetooth: hci_core: Exclude conn creation related code for non-central
  • 4e6495c8 Bluetooth: mesh_demo: Enable missing options in configuration file
  • 8a501601 Bluetooth: Mesh: Depend Mesh upon Observer and Broadcaster roles
  • 76d0dd41 Bluetooth: hci_core: Exclude scan related code if non-observer
  • becbfa22 Bluetooth: att: Do not build Signed Write cmd handler if SMP disabled
  • 698311d2 Bluetooth: att: Add Kconfig option to disable Multiple Read operation
  • 5e3c48f4 bluetooth: Make controller crypto functions optional
  • 310320c4 Bluetooth: Mesh: Fix initialization order during node reset
  • f23e808e Bluetooth: Mesh: Fix redundant model publication clearing
  • 59bbab99 Bluetooth: Mesh: Fix cyclic rewriting to flash when restoring state
  • cea4b318 Bluetooth: controller: Add support for the nRF52810
  • fdedc49a Bluetooth: tests: exclude btshell/mesh_shell on NRF52810_PCA10040
  • e69b735a Bluetooth: Mesh: Fix checking for model subscription address
  • 387e91a7 Bluetooth: Mesh: cfg_srv: Ignore Prohibited element addresses
  • 8f6ebc53 Bluetooth: controller: Fix LE Extended Scanner Filter Policy dependency
  • 7b02e6dc bt: hci driver over spi: BlueNRG-MS read until IRQ pin goes low
  • b0c294ce bt: hci driver over spi: Configure BlueNRG-MS in controller mode
  • c6dea9e0 Bluetooth: Reorganize Kconfig options for BLE controller
  • dbc00ba3 Bluetooth: controller: Fix empty_pkt_us_get for 2M phy.

Boards (33):

  • 52e120ed boards/arm: add support for udoo_neo_full_m4 board
  • 8792c5c9 boards: intel_s1000: Config for USB PHY 2.0
  • 9c619d77 boards: nrf: Use i2c drivers from nrfx
  • dc1c2742 boards: nrf: Moved SDA and SCL pin configuration to DTS for nRF boards
  • 546d19a7 boards: nrf: Fix nrf52_pca20020 board for benchmark test.
  • f5ddc99c boards: nrf52_blenano2: Add i2c’s to nrf52_blenano2 board dts.
  • 0cac3630 boards: 96_nitrogen: Specify the IC
  • 5029760c boards: arm: Add Nordic nRF52810 board
  • 21826a5a boards: arm: nrf: add directive for nrf52810_pca10040 initialization
  • 2b7c854a boards: arm: nrf: move LED and Button definitions in DTS
  • 237aef18 boards: arm: nrf: update I2C-related defines for nrf52810
  • fb4befb0 boards: arm: nrf: select HAS_DTS_I2C for nrf52_pca10040
  • 66986c69 boards: arm: nrf: select HAS_DTS_I2C for nrf52_blenano2
  • 24047dea boards: arm: bbc_microbit: select HAS_DTS_I2C for bbc_microbit
  • 086d839e nucleo_f070rb: Enable USART1 ports on nucleo_f070rb
  • d1054f78 nucleo_f070rb: Add JLink tools for debug and download support
  • fb0366b3 boards: Kconfig: Remove redundant ‘default n’ properties
  • e69c0589 boards: arm: stm32: Basic support for STM32F746G-DISCO board
  • a603e707 boards: disco_l475_iot1: update BT configuration
  • 093b7e9c boards: arm: nrf52_pca10040: Enable DC/DC by default
  • d4996293 boards: arm: nrf52810_pca10040: Enable DC/DC by default
  • 8d2df577 boards: arm: nrf52840_pca10056: Align DC/DC option
  • ef33b79d boards: stm32: argonkey: Add support to led controller
  • 3ed763aa boards: disco_l475_iot1: Move BT_SPI_BLUENRG selection to avoid warning
  • e07a1ad2 boards: arm: stm32: basic support for STM32F723E-DISCO board
  • 91220ba6 boards: native_posix: Add option to build with Address Sanitizer
  • 57dcb53a boards/qemu_cortex_m3: Use SCHED_MULTIQ by default
  • fe018a87 boards: curie_ble: add board.cmake
  • 157b3dcb boards: arm: add st nucleo-f207zg
  • 2a490fd0 boards: Set nucleo_f429zi compatible with configuration guidelines
  • 10fc37d7 boards/shields: Add connector flags for compatibility checks
  • ff0c5a2a boards: nucleo_f429zi: state compatibility with Arduino connectors
  • cc5ae491 boards: arm: stm32: basic support for STM32F769I-DISCO board

Build (17):

  • 080e32ef cmake: Using symlinks on unix like os’es for dependencies
  • 8f321b48 isr_tables: Simplify how the spurious irq function address is found
  • 5e7e1cba cmake: fix git describe command line
  • aed0b6c4 isr_tables: Simplify how the sw_irq_handler function is used
  • 608778a4 cmake: Support specifying Kconfig options on the CLI
  • c1c25dea cmake: Remove stray CMakeLists.txt file
  • 1b600706 cmake: Invoke ‘python’ instead of py scripts directly
  • a1e806bf gen_isr_tables: Delete the dead code accompanying .intList.num_isrs
  • 35ec18ac genrest: Mention implicit default values
  • 2bcfb88a cmake: Remove duplicate invocations of target_link_libraries on app
  • aa2beb9f kconfig: Stop whitelisting “undefined symbol SSE” warning
  • 6c6a6662 toolchain: gcc: check if __weak is defined
  • 72edc4e1 clang/llvm: add initial configuration file for clang
  • bebda565 clang: fix for x86 iamcu
  • ff6dbc59 build: fix git describe call on older Git versions
  • 347f9a0a cmake: LD: Specify the entry point in the linker scripts
  • c2882410 cmake: Allow C standard version to be overriden

Continuous Integration (7):

  • 3efd2693 sanitycheck: fix spammy build output
  • 90e8d678 check-compliance: Fix list_undef_kconfig_refs.py for external projects
  • 0b685604 sanitycheck: whitelist logging sections
  • 7e69e9a4 ci: remove tests and samples from coverage reports
  • c026c2ed sanitycheck: control coverage from command line
  • 1545b378 CI: explicitly enable compiling w coverage in sanitycheck
  • 8cf49371 ci: use latest docker image v0.4-rc7

Device Tree (12):

  • 06f4daf8 dts: add parentheses around argument in macro __SIZE_K
  • 37028baf dts/bindings: Remove redundant clock properties in st,stm32-i2c…
  • b63a5928 dts: kconfig: Remove redundant ‘default n’ properties
  • 3d53ddd4 dts/arm/st: Fix OTG_FS endpoint number for STM32F4 SoCs
  • c32681f7 dts: arm: st: Correct pin assignment of node [email protected]
  • 9b046ec0 dts/stm32: add clock property to spi nodes
  • d5100d79 dts/st: add clock property to i2c nodes
  • dbf11bef dts: stm32f7-pinctrl Add definitions for F7 USART/UARTs
  • db1075e4 dts: Fix warning related to arm,v{6,7,8}m-nvic yaml files
  • ce983e77 dts/arm/st: Fix I2C1 clock property
  • ebc5e51e dts/arm/st: Fix I2C3 clock property on L0 series
  • 1af5ce40 dts/arm/st: Fix SPI1 clock property on F0 series

Documentation (15):

  • 3bdb52f1 doc: improved error reporting for non-UTF8 docs
  • 934a4d2b doc: fix genrest.py to use utf-8 encoding
  • cf9bfb20 doc: net: Add information about websocket server API
  • 90380730 doc: fix misspelling in watchdog Kconfig
  • ca16b6f8 doc: fix misspelling in hci API docs
  • a9e0d14b doc: fix misspelling in vlan document
  • c7388348 doc: intel_s1000: Procedure to obtain toolchain
  • 00ef6b5e doc: Enumerate threats in model
  • 45745052 doc: dt: Clarify the relationship between DT and Kconfig
  • 63ef7465 doc: boards: arm: Update datasheet link
  • af05ff6c doc: Introduct debugging and downloading using Jlink on stm32 boards
  • 8c5c111c doc: net: Add information about gPTP
  • e1af33b4 doc: native_posix: Add paragraph about ASan
  • 8c94b535 doc: device: dts: Fix the error in the doc.
  • e09af5f0 doc: enhance cross compile section in getting started

Drivers (107):

  • a313e5c7 drivers: eth: gmac: Fix cache support for SAM GMAC
  • 0a6046cf drivers: eth: gmac: Ensure caches are enabled before using them
  • fab8246b drivers: serial: simplify Kconfig.nrfx by using HAS_HW_NRF_UART0
  • e682652d drivers: usb: Fix build error for intel_s1000.
  • 1b0641e2 drivers: usb: Add High Speed support for DesignWare USB
  • a3095087 subsys: usb: Make HID payload size configurable
  • 6f61f098 drivers: can: Set a initial state to the can device before HAL_CAN_Init
  • 1edc29c4 drivers: i2c: Add shims for nrfx TWI and TWIM drivers
  • 1aa61d60 drivers: i2c: Removed redundant i2c_nrf5 shim
  • 5417f29d drivers: plic: do not compile plic for qemu target
  • 2b10dd8a drivers: rtc: Fix build
  • b25567ea usb: Allow to enable stack on native_posix arch
  • 7eb05cd1 usb: webusb: Correct total length
  • 2be6594d usb: bos: Add linker sections for USB BOS descriptor
  • f07275e6 usb: trivial: Remove unneeded braces
  • c1724f65 usb: bos: Add USB BOS descriptors API
  • c6b38a2a usb: tests: Add usb_bos_desc to sanitycheck table
  • b9c82121 usb: bos: unit: Add unit test for BOS testing
  • 0d895c8a usb: webusb: Refactor WebUSB using BOS API
  • d930c21e drivers: spi: Fix SPI_2_NRF_SPIS-related dependency loop
  • f6d8ab82 subsys: console: Factor out fifo-based console input abstraction
  • 5acb7fc9 subsys: console: Make CONSOLE_GETCHAR and *_GETLINE optional
  • cfc18f21 drivers: pwm: Add shim for nrfx PWM HW driver
  • 23ce6f44 drivers: flash: w25qxxdv: Add options for delay and device ID
  • 5ea637d2 drivers: entropy: native: implement standard ISR-specific call
  • 48ff1175 usb: webusb: Strip CDC ACM function from the code
  • c36e800e usb: remove all CONFIG_*_EP_ADDR options
  • daef3cc5 drivers: uart: nrf: fixing hardware flow control
  • ed25a16a driver: ptp_clock: PTP clock driver definition
  • 9e82ef13 drivers: entropy: nrf5: Use nrf_rng hal for registers w sideeffects
  • f3d1b224 subsys: usb: Fixes USB DFU class by updating the bcdUSB value.
  • ff41ef47 drivers: eth: gmac: Cast to type expected by HAL
  • 19d78035 drivers: sensor: Kconfig: Remove redundant ‘default n’ properties
  • 4df673f3 drivers: clock_control: STM32F7 family clock control
  • cfb25c74 drivers: flash: stm32: STM32F7 flash memory suport
  • a229500d drivers: gpio: stm32: STM32F7 GPIO support
  • 7482969d drivers: pinmux: stm32: STM32F7 pinmux support
  • 1fdc790c serial: stm32: STM32F7 UART support
  • 75d3d94c drivers: interrupt_controller: stm32: STM32F7 EXTI support
  • 5a1313f8 drivers: console: rtt: RTT session awareness
  • 0ba41f5b drivers: serial: Fix syntax error
  • cd0a8216 drivers/clock_control: stm32: fix HCLK calculation when using MSI
  • 964979f5 usb: mark unused arguments correctly
  • 197740bd drivers: uart: nrf: fixing interrupt driven API
  • 1ce259d1 drivers: i2c: nrfx: Move device tree selection to driver Kconfig
  • ac1a9c4e drivers: led: Add LED driver support for NXP PCA9633
  • 536d77ab drivers: eth: stm32: Added missing ethernet_init() call
  • 9e97e5b5 include: i2c: replace num_bytes type u8_t with u32_t
  • 5fa89ae1 drivers: pinmux: stm32f4: Added pinmux macros for I2S master
  • 06ac62ed usb: usb_descriptor: fix null pointer dereference
  • ec6b6c9f eth: mcux: Add an option for randomized, but stable MAC address
  • 13cb4cbb drivers: interrupt_controller: Remove redundant ‘default n’ properties
  • f7b441a8 drivers: grove: Kconfig: Remove redundant ‘default n’ properties
  • cddca708 drivers: rtc: Kconfig: Remove redundant ‘default n’ properties
  • 7cdd946d drivers: usb: Kconfig: Remove redundant ‘default n’ properties
  • bfed59c1 drivers: led: Kconfig: Remove redundant ‘default n’ properties
  • d7fa8b25 drivers: pinmux: Kconfig: Remove redundant ‘default n’ properties
  • 8308a519 drivers: counter: Kconfig: Remove redundant ‘default n’ properties
  • 31a0763a drivers: net: Kconfig: Remove redundant ‘default n’ properties
  • d77663ac drivers: spi: Kconfig: Remove redundant ‘default n’ properties
  • 04cc6bff drivers: clock_control: Remove redundant ‘default n’ properties
  • 86c46864 drivers: ethernet: Kconfig: Remove redundant ‘default n’ properties
  • 00f363e4 drivers: flash: Kconfig: Remove redundant ‘default n’ properties
  • 2713e445 drivers: adc: Kconfig: Remove redundant ‘default n’ properties
  • f30b1636 drivers: pwm: Kconfig: Remove redundant ‘default n’ properties
  • 09acea9f drivers: watchdog: Kconfig: Remove redundant ‘default n’ properties
  • 27b9c05d drivers: can: Kconfig: Remove redundant ‘default n’ properties
  • 120b8fc3 drivers: timer: Kconfig: Remove redundant ‘default n’ properties
  • 133a299b drivers: i2c: Kconfig: Remove redundant ‘default n’ properties
  • f912dfeb drivers: gpio: Kconfig: Remove redundant ‘default n’ properties
  • a816d105 drivers: crypto: Kconfig: Remove redundant ‘default n’ properties
  • 2d50da70 drivers: ipm: Kconfig: Remove redundant ‘default n’ properties
  • 38185db8 drivers: display: Kconfig: Remove redundant ‘default n’ properties
  • cc74397a drivers: dma: Kconfig: Remove redundant ‘default n’ properties
  • 7b0f00cf drivers: pci: Kconfig: Remove redundant ‘default n’ properties
  • 6d954487 drivers: ptp_clock: Kconfig: Remove redundant ‘default n’ properties
  • 3e0a900a drivers: bluetooth: Kconfig: Remove redundant ‘default n’ properties
  • 21d4adef drivers: wifi: Kconfig: Remove redundant ‘default n’ properties
  • a81bc326 drivers: ieee802154: Kconfig: Remove redundant ‘default n’ properties
  • 78fdf692 drivers: aio: Kconfig: Remove redundant ‘default n’ properties
  • 3ec8dd57 drivers: led_strip: Kconfig: Remove redundant ‘default n’ properties
  • 00ab5ed2 drivers: entropy: Kconfig: Remove redundant ‘default n’ properties
  • dc9c0f12 drivers: i2c: Kconfig: Remove redundant ‘default n’ properties
  • 44e5b05f drivers: gpio: nrfx: Move device tree selection to driver Kconfig
  • 5aa09c6b drivers: entropy: stm32: add support for STM32F7
  • cc419166 i2c: stm32: check messages before starting transmission
  • 81cfdec3 i2c: stm32_v2: restructure interrupt handling
  • d55a6aa3 i2c: Add new I2C Slave syscalls
  • 9a73cdfe i2c: slave: Add EEPROM I2C Slave driver
  • c7875b75 i2c: stm32_v2: implement slave support
  • 6e15dc78 usb: tests: Fix BOS test related to linker order
  • 16f31f1d drivers: eth: native_posix: Enable gPTP support
  • 28bf2812 drivers: pwm: nrf: Add nrfx_pwm.c to the build when PWM_NRFX is enabled
  • 7cb86893 usb: netusb: Add ethernet_init()
  • 8a75e43b drivers: dma_cavs: preserve DMA LLIs on stop
  • 6c0d0895 drivers: usb_dc_stm32: don’t wait for semaphore in ISR context
  • b6da8be3 drivers: pinmux: stm32: STM32F7 added ETH support to pinmux
  • 86de2048 drivers/dma: dma_stm32f4x: Fix Peripheral To Memory case
  • b29dabaf drivers/dma: dma_stm32f4x: use dma_slot to select peripheral
  • 6091a7fd drivers: clock_control: Add support for stm32f2
  • 6fb7b044 drivers: stm32-gpio: Provide GPIO driver for stm32f2
  • 6488ab21 driver: pinmux: Add pinmux driver for stm32f2
  • dffac9ab driver: interrupt_controller: Add support for stm32f2
  • bdeece01 driver: uart_stm32: add support for stm32f2 series
  • 1b577524 usb: add callback codes for Set/Clear Feature ENDPOINT_HALT
  • 3a471e32 subsys: usb: stall if there is no data buffer
  • 25b0212f subsys: usb: class: add loopback function

External (16):

  • 1112f252 ext/hal/nxp/imx: Import the nxp imx6 freertos bsp
  • 13eba397 ext: nordic: Correct CMakeLists.txt
  • f0df45dd ext: hal: nordic: nrfx: Add nRF52810 configuration
  • 7eb2276a ext: stm32cube: update stm32f1xx cube version
  • 5347dc1a ext: stm32cube: update stm32f3xx cube version
  • 176042ff ext: stm32cube: update stm32f4xx cube version
  • 875afddb ext: stm32cube: update stm32f7xx cube version
  • b3127629 ext: stm32cube: update stm32l4xx cube version
  • e1ff7cef ext: debug: segger: Move RTT configuration to KConfig
  • e892ca08 ext: debug: segger: Updating Segger RTT to 6.32d
  • 414291cc ext: lib: mgmt: mcumgr: update to latest master
  • f0abb24a ext: nordic: Fix PWM related nrfx_config entries for nRF52840
  • 396bf477 hal: stm32f2x: Add HAL for the STM32F2x series
  • 40f7a024 ext: debug: segger: Fix CONFIG_SEGGER_RTT_MODE generation.
  • 71ba2de7 ext: stm32cube: stm32f4xx: shift I2SR field in PLLI2SCFGR register
  • 9a893202 ext: stm32cube: stm32f7xx: shift I2SR field in PLLI2SCFGR register

Firmware Update (2):

  • cd1111e1 mgmt: Reduce net_buf user data requirement
  • 4535b944 subsys: dfu: img_util: Fix warning with ERR log

Kernel (11):

  • 92b8a41f include: create kernel_includes.h header to hold kernel includes
  • 7727d1a4 kernel: Kconfig: Remove redundant ‘default n’ properties
  • 80e6a978 kernel/drivers: fix compile warnings
  • d4dd928e kernel/stack: Introduce K_THREAD_STACK_LEN macro
  • 225c74bb kernel/Kconfig: Reorgnize wait_q and sched algorithm choices
  • 9f06a354 kernel: Add the old “multi queue” scheduler algorithm as an option
  • fe2ac39b kernel: Cleanup _ms_to_ticks().
  • e995c27b kernel: Do not use fixed list of “good” sys_clock_ticks_per_sec values.
  • 91fe22ec kernel: Improve tick <-> ms conversion.
  • 77f42f83 kernel: Move _ms_to_ticks() and __ticks_to_ms() close to each other.
  • 3808ca8e syscall: Add support for syscall_ret64_arg2

Libraries (3):

  • 2d71236a lib: libc: minimal: Get rid of the bit (256-byte) charmap table
  • 0785b79e lib: kconfig: Remove redundant ‘default n’ properties
  • 5193b557 lib: posix: Fix Out-of-bound write to char array

Maintainers (1):

  • 567be49a CODEOWNERS: fix due to username change

Miscellaneous (4):

  • 7a7e4f58 misc: kconfig: Remove redundant ‘default n’ properties
  • b26ca136 shell: Fix command completion logic
  • bbeef415 logging: subsystem major redesign
  • fdecc2b2 mailmap: add entry for ruuddw

Networking (50):

  • e6a746ea net: ieee802154: fix csma-ca backoff
  • c60df131 net: app: Split code for configuring network to a separate lib, “config”
  • 83b3f84d net: lib: app: Convert CMakeLists.txt to avoid library
  • 580596c3 net: if: Add TX timestamp callback support
  • 23526e4f net: if: vlan: Implement packet priority to PCP conversion
  • 59df651c include: Remove unused header
  • 099fe7b9 net/ethernet: Let’s use the same parameter names everywhere
  • 8ae6bad2 net: l2: Move the layer 2 code into subsys/net/
  • 98238527 net: buf: Make net_buf_user_data() parameter const
  • 45b06a25 net: gptp: Initial core IEEE 802.1AS support
  • 066edbb2 net: shell: Add gptp command
  • 89eeba42 net/arp: No need to expose publicly arp header
  • 0025a3fc net/arp: Optimize ARP table by switching to various single list
  • 35a7804c net/arp: Centralize ARP request timeout through one k_delayed_work
  • 2df23f56 net/arp: Let’s reduce the size of each ARP entry
  • 922d63ce net/arp: Normalize all function names
  • 837ed14a net: llmnr: Add link-local mcast name resolution client support
  • b833d010 net: llmnr: Add LLMNR responder support
  • a8d4b324 net: fix header guard
  • 0738ab3e net: shell: Check link address when printing iface info
  • 68f7e969 net/ipv4: Properly separate what belongs to ipv4 from the rest
  • d309c870 net/ipv6: Properly separate what belongs to ipv6 from the rest
  • c89a06db net: config: Introduce a dedicated header for the library
  • 7ba7119f net: l2: Fixed wifi can not connect to open AP.
  • 70b60cca net: gptp: Set priority of the sent gPTP packets
  • cf272e66 net: gptp: Use the ptp clock instead of zephyr uptime
  • b422d386 net: gptp: Fix sync follow up packets content
  • 7e545c99 net: gptp: Do not handle multiple pdelay requests at once
  • 93fe54d1 net: gptp: Fix sync timestamp callback registration
  • 5e3ea84e net: gptp: Use calculated neighbor ratios only once
  • f3146c09 net: gptp: Fix buf leak in PDELAY_REQ send
  • 58e40cb0 net: gptp: Fix shell statistics output
  • 2b6e70d1 net: icmpv4: Merge process_icmpv4_pkt() into net_icmpv4_input()
  • dadc5293 net: icmpv4: Simplify the flow at net_icmpv4_get_hdr()
  • 3fd2d53e net: mgmt: Add VLAN enabled / disabled event support
  • 65b15c32 net: eth: Add helper to return VLAN info for an interface
  • e9228a39 net: gptp: Allow gPTP to run over VLAN
  • 5356ee5d net: gptp: Init only the ports we have configured
  • b51f1ccc net: gptp: Fix validation of non-numeric inputs from net shell
  • 214aebc6 net: gptp: Fix gptp port number validation
  • fb6223b8 net: gptp: Drop the older pdelay req after receiving a new one
  • 65e9177a net: gptp: Print port state change information
  • 2ca3b1e3 net: if: Fix TX timestamp callbacks invocation
  • fd62617c net: gptp: Fix memcpy calls on arrays
  • 1a0968bd net: gptp: Normalize seconds and nanoseconds differences
  • 22ba08fa net: gptp: Send Announce messages with correct GM info
  • 226fa973 net: ethernet: Add 802.1Qav settings to eth mgmt api
  • 37125781 net: gptp: Fix debug prints and use correct modifier
  • 354c50e8 net: add bound checking in net_addr_pton()
  • 48802024 net: icmpv4: Set the ICMPv4 header correctly

Samples (21):

  • 11cb462d samples: mesh/onoff_level_lighting_vnd_app: States binding corrections
  • 3c6eb7d0 samples: smp_svr: Disable GATT Multiple Read
  • f01b8173 samples: net: Socket based echo_client
  • b8135020 samples: net: Socket based echo_server
  • 67b4c5d5 samples: net: gptp: Sample application for gPTP support
  • 3a7d4ef4 samples: subsys: logging: Add logger example
  • f4715151 samples: net: dns: Add LLMNR client support to DNS resolver
  • f8c6894f samples: net: dns: Cross reference mDNS config option
  • 8fe9f432 samples: sysview: limit to systems with enough ram
  • b3e7a8f6 samples: mesh/onoff_level_lighting_vnd_app: update publication context
  • 54df5b51 samples: mesh/onoff_level_lighting_vnd_app: update handlers mapping
  • 34d475ff samples: mesh/onoff_level_lighting_vnd_app: fix bug in state binding
  • e8ddd6de samples: mesh/onoff_level_lighting_vnd_app: edited message handlers
  • 2ef1e726 samples: drivers: Add sample application for PCA9633
  • a7e2c58a samples: sysview: Update memory requirements
  • 2ad2d07c samples: board: 96b_argonkey: Add testing of 12 on-board leds
  • ad150569 samples: net: gptp: Allow running gPTP over VLAN
  • 0febf03d samples: mesh/onoff_level_lighting_vnd_app: Vendor Model upgrade
  • 182be3b4 samples: mesh/onoff_level_lighting_vnd_app: fix buffers length
  • 31cf5672 samples: mesh/onoff_level_lighting_vnd_app: corrected printk message
  • c789662f samples: mesh/onoff_level_lighting_vnd_app: improved state binding

Scripts (8):

  • 54a5997f kconfiglib: Add dependency loop detection
  • d317a0e6 kconfiglib: Update to use redesigned ‘referenced’ API
  • 60e97de5 scripts: runner: nrfjprog: Allow specifying serial number of nrfjprog
  • 08216f5e scripts: extract_dts_includes.py: refactor for better maintenance
  • 53f41890 scripts: kconfig: Do not print warnings for choice overriding
  • ca7fc2ad scripts: extract_dts_includes.py: fix false info message
  • fa5d6ec3 scripts: devicetree.py: get alternate labels from dt
  • deb0941c scripts/extract/globals: treat node alternate names as ‘aliases’

Testing (23):

  • 064608b4 include: remove unused macros from include/arch/*/arch.h
  • c6336371 tests: net: Add unit test for network pkt timestamping
  • 34e11f0c tests: kconfig: Remove redundant ‘default n’ properties
  • 6eeeb2a3 tests: Fix sizing for several test for chips with 24KB of RAM
  • c4123643 tests: fp_sharing: Extract x86 configs to separate .conf
  • 2c8c1310 tests: net: ptp: Add ptp clock driver tests
  • c52439a6 tests: ztest: fixed off-by-one in sys_bitfield_find_first_clear
  • 80e02a93 tests: ztest: added test case for multiple mock expects
  • 2b02f8d3 tests: sprintf: suppress Wformat-truncation warning
  • 0b00493d tests: drivers: adc: fix failing test for frdm_k64f
  • 17ae882b tests: subsys: logging: Add tests for log_msg and log_list
  • 1a125714 tests/net: Fix L2 directory lookup for header inclusion
  • 9127c4b3 tests: Cleanup converting int result to string
  • 305ec675 tests: fix struct initialization
  • dd33b37e tests/sched/scheduler_api: samples/philosophers: Use SCHED_SCALABLE
  • 94d31565 test: i2c: Add i2c_slave_api test
  • 482865c4 tests: net: ptp: Make sure we check clock increment properly
  • 8a74e705 tests: ztest: ztest_mock to support multiple calls to same mock
  • b4dae007 tests: net: tx_timestamp: Check max number of interfaces
  • 01c11c17 tests: net: Add 802.1Qav test
  • 2f5fea0e benchmarks: app_kernel: Fixed coverity issue.
  • 0de49e5d tests: kernel: Add description for test case
  • f5ec5674 tests: net: trickle: Initialize test variables earlier
comments powered by Disqus