Technical talks about Zephyr by Nordic in EOSS 2023
Going West: How we Develop and Maintain a Zephyr-based Microcontroller SDK - Carles Cufí, Nordic Semiconductor
Tuesday, June 27 09:00 - 09:40 (UTC/GMT +2)
Carles will be discussing the challenges and opportunities in developing, maintaining and distributing a Zephyr-based microcontroller SDK.
The talk will go over the work that Nordic has done over the past few years to develop a modern, scalable Software Development Kit (SDK) for all nRF microcontrollers that uses Zephyr Project's RTOS code and tools as its foundation.
In order to reach that point Nordic has made countless contributions to the Zephyr Project, both to enable the use cases that an SDK requires and also to improve the upstream project itself. Indeed part of the mission when building the SDK is also to ensure that the open source project thrives and becomes the de-facto standard for open source MCU RTOS.
A lot of work was also required downstream, where new processes had to be established within the company to make it possible to work in cooperation with the open source projects, new tooling had to be developed to deal with forks, new approaches for contribution and code review had to be defined, and all this with a small team, aptly named Vestavind (western wind in Norwegian), coordinating the interaction between the projects and the commercial offering.
System Devicetree Support in Zephyr - Marti Bolivar, Nordic Semiconductor
Tuesday, June 27 09:50 - 10:30 (UTC/GMT +2)
Zephyr's support for AMP SoCs... works, but has several well-known usability problems due to workarounds for deficiencies in our hardware support features at the following layers: - devicetree - hardware model - build system This talk will introduce the system devicetree specification and its role in solving some of these problems. System Devicetree is an extension of the standard Devicetree Specification. Its main extensions to the base specification allow simultaneous representation of multiple CPU clusters within a heterogenous SoC, along with their individual memory maps, memory partitions for different executable images, and peripheral assignments. The main goals of this talk are to define the problems being solved, the reasons why our current build system infrastructure doesn't suffice, and discuss where system devicetree can help. We will also cover the current status of ongoing work to support system devicetree in the Zephyr build system.
New USB Device Class API Introduction - Johann Fischer, Nordic Semiconductor
Tuesday, June 27 14:00 - 14:40 (UTC/GMT +2)
As part of the experimental USB support, a new device stack has been added to the Zephyr RTOS since version 3.3.0. Existing implementations of the USB classes (or functions) will be ported to the new USB device support (porting should be completed by presentation time). The USB device stack itself does not provide any useful functionality. The functionality can be provided by a class implementation like CDC ACM. There are USB-IF class specifications, like CDC ACM, or third-party specifications, like the Bluetooth HCI transport layer. New USB device support has a common API to interface with class implementations. A vendor-specific class or function must also use this API. The API will be mandatory for all new implementations. The stack also has management functions, such as adding or removing a class instance to or from a configuration at runtime. Johann will give an introduction to the new USB device class API in USB support, show how to implement a simple function that supports multiple instances, and briefly describe the API. The author will also cover relevant differences and features in the new USB device support.
USB Device Support in Zephyr RTOS from the Application Perspective - Johann Fischer, Nordic Semiconductor
Wednesday, June 28 11:10 - 11:50 (UTC/GMT +2)
Zephyr RTOS has an implementation of USB device support pretty much from the beginning. Apart from direct use in the user application, various subsystems in the Zephyr RTOS also make use of device support. Since version v.3.3.0 there is also a new device stack as part of the experimental USB support. Johann will give an overview of USB device support in the Zephyr RTOS from an application perspective. The author will also cover the differences and features in the new experimental support. The presentation will start with configuring USB device support, how to select the desired features (classes) and how to enable USB device support. Johann will give a step-by-step insight into the different USB class implementations and go into their peculiarities and how they work in or with other subsystems. Author will explain how and why some functions are described and configured via the device tree and others are not. Special attention will be given to the configuration and use of the CDC ACM class.
Differentiating Bluetooth Low Energy Products by Exploiting and Exploring Zephyr Bluetooth Controller Implementations - Vinayak Kariappa Chettimada, Nordic Semiconductor
(Virtual) Thursday, June 29 12:00 - 12:40 (UTC/GMT +2)
Since its original contribution to Zephyr Project in early 2016 and till date there has been constant enhancements by community members to feature set in the Zephyr Bluetooth Controller. With Bluetooth Core Specification v5.x versions, there is support for Longer Range, Higher Throughput, Direction Finding, and LE Isochronous Channels supporting LE Audio solutions. Besides Zephyr Bluetooth Controller's architecture permitting support for multiple vendor radio support, it is highly configurable, well structured and modular at primitives/utilities to allow easy replacement with enhanced implementations. This talk will briefly touch base on supported mature features set, implementation architectures, ideology, configurations to differentiate products, development plan/strategy, conformance and quality. Presentation details CPU utilization, execution context safety, race-to-idle concepts, memory and power consumption optimizations.
Analyze USB Traffic with Wireshark - Tomasz Moń, Nordic Semiconductor
(Virtual) Monday, June 26 12:00 - 12:40 (UTC/GMT +2)
Pretty much everyone uses USB, yet so few know how it works under the hood. This presentation explains basic concepts behind USB and how this information is presented in Wireshark. Getting familiar with USB on your own can be intimidating task, especially if you have no prior USB programming experience. Hopefully the talk will provide clear enough explanation so you can avoid scratching your head due to common misconceptions. During the talk a Zephyr-based device traffic captured both at a URB level (Linux usbmon) and USB packet level (OpenVizsla) will be discussed. This is updated version of USB Analysis 101 presented at SharkFest'20 Virtual. Wireshark USBLL dissector was significantly improved since October 2020 and now features transfer reassembly.
Nordic Semiconductor and Zephyr
How Nordic Semiconductor is using Zephyr
nRF Connect SDK, Nordic Semiconductor’s main Software Development Kit, is built on top of Zephyr RTOS. It integrates the RTOS and a wide range of full-fledged applications (such as asset tracker v2 and nRF Desktop), samples, application and networking protocols, libraries, hardware drivers, and more.
Nordic Semiconductor based its SDK on the Zephyr RTOS due to its rich ecosystem, high configurability, and modularity. This offers developers the flexibility to build size-optimized software for memory-constrained devices and powerful and complex software for more advanced devices and applications.
In addition to Zephyr’s rich ecosystem, nRF Connect SDK adds more libraries, networking protocols, and functionalities that are not part of Zephyr, including multiprotocol support (MPSL), 2.4 GHz proprietary, CryptoCell libraries, nRF9160 modem libraries, and more. It also supports all our prototyping platforms (for example Thingy:91) and reference designs (for example nRF Desktop).
As part of the nRF Connect umbrella, we also offer tools that aim to improve developers’ productivity and reduce time to market, such as a 1-click installer experience through the Toolchain Manager which is part of the nRF Connect for Desktop, and developer environments such as nRF Connect for VS Code. We also aim to equip developers with the technical information and the know-how to build tomorrow’s cutting-edge wireless products through our comprehensive Nordic Developer Academy online courses and documentation.