Slide 1: Zephyr Project: Unlocking Innovation with an Open Source RTOS
Zephyr Project: Unlocking Innovation with an Open Source RTOS Kate Stewart, The Linux Foundation Carles Cufi, Nordic Semiconductor Marti Bolivar, Nordic Semiconductor Copyright © 2020 The Linux Foundation. Made avaiilable under Attribution-ShareAlike 4.0 International
Slide 2: Zephyr Project
Zephyr Project • Open source real time operating system Open Source, RTOS, Connected, Embedded Fits where Linux is too big • Vibrant Community participation • Built with safety and security in mind • Cross-architecture with broad SoC and Zephyr OS development board support. 3rd Party Libraries • Ven
Slide 3: Products Running Zephyr Today
Products Running Zephyr Today Grush Gaming hereO Proglove Rigado IoT Gateway Distancer Toothbrush Smartwatch Ellcie-Healthy Smart Intellinium Safety Adero Tracking Anicare Reindeer GNARBOX 2.0 SSD Sentrius Connected Eyewear Shoes Devices Tracker GEPS Point Home Alarm RUUVI Node HereO Core Box Safety
Slide 4: Zephyr Supported Hardware Architectures
Zephyr Supported Hardware Architectures Cortex-M, Cortex-R & Cortex-A X86 & x86_64 32 & 64 bit Xtensa Coming soon:
Slide 5: Development Boards Shipping with Zephyr Today
Development Boards Shipping with Zephyr Today Nordic Thingy91 Phytec Reel Board Icarus (Adafruit Feather) - Actinius Antmicro Badge Phytec Link Board BASE Electronuts Papyr
Slide 6: Board Support – 200+ and growing
Board Support – 200+ and growing Arduino Due Nucleo 103RB Adafruit Feather Nucleo64 L476RG Nucleo F411RE NRF91 pca10090 Nucleo F334R8 Synopsys EMSK Minnowboard Altera MAX10 Nucleo 401RE Vega Board ARM V2M MPS2 STM3210c Atmel SAM E70 NRF51 NXP FRDM K64F NRF52 Seed Carbon TI Launchpad Wifi BBC Microbi
Slide 7: Code Repositories
Code Repositories Backports & Keeping Configurations in Sync Long Term Development Support Auditable Community Safety & Security “Stable” Contributions Processes via DCO Certifiable Releases LTS Releases Releases
Slide 8: Zephyr OS: Long Term Support (LTS - 1.14)
Zephyr OS: Long Term Support (LTS - 1.14) It is: • Product Focused • Current with latest Security Updates • Compatible with New Hardware: We will make point releases throughout the development cycle to provide functional support for new hardware. • Tested: Shorten the development window and extend t
Slide 9: Zephyr OS: Long Term Support (LTS - 1.14)
Zephyr OS: Long Term Support (LTS - 1.14) Delivering bug fixes and latest security updates! 9
Slide 10: Vulnerability Management Process
Vulnerability Management Process ●Early in 2020 the project received a bulk vulnerability report ●Highlighted need to better document vulnerability management processes ●Added vulnerability reporting to project docs and top level web pages ●Process: ○Embargo period ○Stages issue goes through ○Workin
Slide 11: Project Security Documentation
Project Security Documentation ●Project Security Overview ●Started with documents from other projects ●Built around Secure Development, Secure Design, and Security Certification ●Ongoing process, rather than something to just be accomplished
Slide 12: CVE Numbering Authority with PSIRT
CVE Numbering Authority with PSIRT ●PSIRT is Subset of Security Subcommittee ●CNA: CVE Numbering Authority ●Registered with MITRE as the numbering authority for the project. We issue our own CVEs ●Must satisfy MITRE documentation and process requirements
Slide 13: Recent Security Report
Recent Security Report ●NCC Group reported ~26 issues ●Critical, High and Medium made into JIRA tickets ●These have now been fixed ●Embargo is past, everything updated now in the vulnerability report page ●Most issues identified resulted in 1 or more CVEs being reported
Slide 14: Results from the Report
Results from the Report ●Most issues were fixed in reasonable time and included in releases ●One issue, recommendation is to disable ●Increased embargo from 60 to 90 days ○Zephyr isn’t an end product, vendors need time to incorporate fixes into products ○Zephyr needs alert system to notify vendors ●
Slide 15: Vulnerability Alert Registry
Vulnerability Alert Registry ●For Embargos to work, product makers need to be notified early so they can remediate ●Created Vulnerability Registry for vendors to register to receive these alerts for free ●Goal: Zephyr to fix issues within 30 days and then give product makers 60 days before publicati
Slide 16: Zephyr in RTOS Landscape 2020/08/24
Zephyr in RTOS Landscape 2020/08/24 #1 #1 Total Total Contributors Commits Rank RTOS # Rank RTOS # 1 Zephyr 747 1 Zephyr 43,312 2 mbed OS 612 2 nuttX 38,031 3 RT-Thread 288 3 RIOT 31,144 16
Slide 17: Github Web Traffic
Github Web Traffic 2 weeks of traffic to github.com/zephyr code repository as of 2020/09/22
Slide 18: Growing a Diverse Community!
Growing a Diverse Community! Lifetime project participation Company Participation over the last 12 months • 2016/2: 80 Authors • 2020/9: 766 • 2016/2: 2,806 Commits • 2020/9: 44,306 • 2016/2: 4 Boards • 2020/9: 200+
Slide 19: Vibrant, Active & Global Community
Vibrant, Active & Global Community > 4300 Followers on Twitter > 1200 Active on LinkedIn > 325 Members in WeChat Group > 1500 Active on Slack
Slide 20: Zephyr: Technology Overview
Zephyr: Technology Overview Ca rle s Cu fí, No rd ic Se m icon d u ctor
Slide 21: Zephyr Ecosystem
Zephyr Ecosystem Zephyr Community Zephyr “Community” Kernel / drivers • 3rd Party modules and libraries • Scheduler • Support for Zephyr in 3rd party projects, Zephyr Project • Kernel objects and services for example: micro-ROS, Tensorflow • low-level architecture and board support LITE, Micropython
Slide 22: Zephyr Repositories
Zephyr Repositories • Ma in (or m a n ife st re p osito ry): h ttp s://gith u b .com /ze p h yrp ro je ct-rto s/ze p h yr • Contains all core Zephyr code • All (or almost) code is Apache v2 licensed • Exte rn a lly m a in ta in e d co d e is in se p a ra te re p o sito rie s • Vendor HALs (CMSIS, st
Slide 23: Build and configuration systems
Build and configuration systems • Ze p h yr is cro ss-p la tform a n d ca n b u ild , fla sh a n d d e b u g on a ll m a jor Op e ra tin g Syste m s (Win d o ws, m a cOS, Lin u x) • CMa ke • Industry standard build system • Cross-platform • Extensible and script-based • Kcon fig • Configuration syst
Slide 24: Architecture
Architecture Application • Highly Configurable, Highly Modular Application Smart Objects / High Level APIs / Data Models Services … LWM2M MQTT HTTP CoAP • Cooperative and Preemptive Threading DTLS TLS • Memory and Resources are typically TCP/UDP statically allocated Thread Device Mgmt IPv6/IPv4 6LoW
Slide 25: Kernel and drivers
Kernel and drivers Flexible and modern RTOS kernel • Single core, SMP and AMP (via IPM driver) support • Cooperative and preemptible threads • Extensive set of synchronization and data-passing primitives • User mode (userspace): • Isolates user mode threads from kernel and each other • Exposes a sub
Slide 26: Native IP Stack
Native IP Stack • Build from scratch for Zephyr • Using Zephyr native kernel concepts • Dual mode IPv4/v6 stack • TCP v4/v6, second generation • DHCP v4; IPv4 autoconf; IPv6 SLAAC; DNS; SNTP • Multiple network interfaces support • Time Sensitive Networking support • 802.1QAV API • 802.1AS (gPTP, gen
Slide 27: Zephyr Networking Features
Zephyr Networking Features High-Level Protocols Supported technologies • CoAP v1 • Ethernet • MQTT Client v3.1.1 • Ethernet over USB • HTTP • WiFi with IP offload • Native HTTP client • IEEE 802.15.4 with 6Lo • Server is implemented using CivetWEB library • Bluetooth LE with 6Lo • Websocket client •
Slide 28: Bluetooth Host and Mesh
Bluetooth Host and Mesh • Bluetooth 5.1 compliant • Low Energy & experimental Bluetooth Classic • Multiple HCI transports • Qualified (as of 1.14.1) for LE and Mesh • Can be built separately or combined with the controller • Active community developing upcoming standards • Mesh & GATT reference stac
Slide 29: Bluetooth Low Energy Controller
Bluetooth Low Energy Controller Second-generation open source BLE software Controller: • Bluetooth 5.1 compliant and qualified (v1.14.1) • Split design with Upper and Lower Link Layers • Support for multiple BLE radio hardware architectures • Nordic nRF5 on Arm Cortex-M (Arm v6-M, v7-M and v8-M) • V
Slide 30: Zephyr USB Device Stack
Zephyr USB Device Stack • Supports multiple MCU families (STM32, Kinetis, nRF, SAM, …) • USB 2.0 support • Full and High speed support • Supported classes: • CDC ACM, ECM, EEM • RNDIS • HID • Mass Storage • Bluetooth • Device Firmware Update • Tight integration with the RTOS • Flexible descriptor in
Slide 31: Native Execution on a POSIX-compliant OS
Native Execution on a POSIX-compliant OS • Build Zephyr as native Linux application • Enable large scale simulation of network or Bluetooth tests without involving HW • Improve test coverage of application layers • Use any native tools available for debugging and profiling • Develop GUI applications
Slide 32: POSIX API on Zephyr
POSIX API on Zephyr Provides familiar API to non-embedded programmers, Application especially to Linux developers Enable re-use (portability) of existing libraries POSIX POSIX PSE52 BSD Sockets Middleware based on POSIX APIs PSE51 File System Networking • Provides efficient subset appropriate for sm
Slide 33: and much more...
and much more... • Powerful logging subsystem with multiple backends • Fully-featured shell for interaction with the system • Device Firmware Update support via multiple mechanisms • MCUMgr (UART, BLE, TCP/IP) • Updatehub (TCP/IP) • Hawkbit (HTTP) • Display support with LVGL • Multiple filesystems a
Slide 34: Thank you for watching
Thank you for watching Ca rle s Cu fí, No rd ic Se m icon d u ctor
Slide 35: Building with Zephyr? West overview
Building with Zephyr? We st o ve rvie w Ma rti Bo liva r, Nord ic Se m icon d u ctor
Slide 36: Outline: Presenter: Marti Bolivar
Outline: Presenter: Marti Bolivar - Ze p h yr a n d we st d e ve lo p e r - Wh a t we ’re d oin g tod a y: - Overview of what’s available in west - Good starting points for experimenting and getting help - He lp fu l if you ’ve a lre a d y go n e th ro u gh th e Ze p h yr Ge ttin g Sta rte d Gu id e
Slide 37: What is west?
What is west? Ze p h yr’s “m e ta -to o l” o r “swiss a rm y kn ife ,” u se d fo r m a n y co m m on d e ve lop m e n t wo rkflo ws. An e xte n sib le com m a n d lin e too l fo r m a n a gin g a Ze p h yr wo rksp a ce : h ttp s://d ocs.ze p h yrp roje ct.o rg/2.3.0/gu id e s/we st/in d e x.h tm l R
Slide 38: West "proper" vs. Zephyr uses
West “proper” vs. Zephyr uses West “proper” Zephyr’s west usage and extensions ● Workspace commands (init , update , etc.) ● Zephyr module integration ● Configuration command ● Extension commands (config ) (build , flash , debug , ● APIs for adding extension etc.) commands (external plug- ins) In th
Slide 39: Creating a workspace: west init
Creating a workspace: west init $ west init - m h t t p s : / / gi t h ub . c om/ z e p hy r p r o j e c t - r t o s / z e ph yr \ - - mr v 2 . 3 . 0 z e p h y r p r o j e c t Results (simplified) Vocabulary z e phyr pr oj e c t ● zephyrproject: the west workspace’s top level directory, or topdir. T
Slide 40: Manifest file, west.yml
Manifest file, west.yml Sim p lifie d con te n ts of ze p h yr/we st.ym l in v2.3.0. • remotes : where projects can be fetched • projects : a list of git repositories in the workspace • self : configures the manifest repository (zephyr) itself
Slide 41: Manifest file semantics
Manifest file semantics zephyrproject-rtos/zephyr zephyrproject-rtos/<project> west.yml manifest: projects: - ... zephyrproject-rtos/<project> -… - ... zephyrproject-rtos/<project> Every element of the projects list is another Git repository that is included in the upstream Zephyr project distributi
Slide 42: Updating a workspace: west update
Updating a workspace: west update $ west update # r u n i n s i d e t h e “ z e p h y r p r o j e c t ” wo r k s p a c e Results (simplified) Vocabulary z e phyr pr oj e c t ● Modules: third-party code with Zephyr ├── b o o t l o a d e r integration, can be integrated into Zephyr │ └── mc u b o o t
Slide 43: Other workspace commands
Other workspace commands Som e a d d ition a l worksp a ce m a n a ge m e n t co m m a n d s: list p rin t in form a tio n a b o u t p ro je cts in th e we st m a n ife st manifest slice a n d d ice th e we st m a n ife st diff "git d iff" fo r o n e o r m o re p ro je cts status "git sta tu s" fo r
Slide 44: Zephyr extension commands
Zephyr extension commands Som e a d d ition a l Ze p h yr d e ve lo p m e n t e xte n sio n co m m a n d s: build com p ile ze p h yr a p p lica tio n s flash fla sh a com p ile d a p p lica tio n to a b o a rd debug fla sh a n a p p lica tio n a n d e n te r a d e b u gge r (u su a lly GDB) debugse
Slide 45: Most common extension issue
Most common extension issue If you see this when running an extension like west build : west: error: argument <command>: invalid choice: 'build' (...) Then you’re not in your workspace, so the extension can’t be found. See this item on the troubleshooting page: https://docs.zephyrproject.org/2.3.0/g
Slide 46: West configuration files
West configuration files ● “INI-like” (Python configparser syntax) ● We saw .west/config earlier; that’s the workspace configuration file ● You can also set user- and system-wide configuration values ● Run west config to manage your configuration ● See also: https://docs.zephyrproject.org/2.3.0/guid
Slide 47: Help and troubleshooting
Help and troubleshooting Docu m e n ta tion : West page in the Zephyr guides a n d Troubleshooting west . Also: $ west help List a ll co m m a n d s a n d o n e lin e h e lp fo r e a ch (in clu d in g e xte n sion s). $ west <command> help He lp for a sp e cific <co m m a n d >, like west help init
Slide 48: www.zephyrproject.org
www.zephyrproject.org
Slide 49: Q&A
Q&A