Using SoC Vendor HALs in the Zephyr Project. Maureen Helm, NXP

Similar documents
Using SoC Vendor HALs in the Zephyr Project. Maureen Helm, NXP

ZEPHYR PROJECT OVERVIEW. Kate Stewart, The Linux Foundation

What is Zephyr Project?

Enabling IoT OSs for Intel Quark MCU Platforms: the fast way. OpenIoT Summit Europe Andre Guedes

Kinetis SDK Release Notes for the TWR-K24F120M Tower System Module

Kinetis SDK v Release Notes for KV5x Derivatives

PERFORMANCE ANALYSIS USING NXP S I.MX RT1050 CROSSOVER PROCESSOR AND THE ZEPHYR OS

GET STARTED FAST WITH THIS COMPREHENSIVE ENABLEMENT OFFERING FOR LPC800 MCUS

Freescale Kinetis Software Development Kit Release Notes

Build the unified end to end IoT solution on ARM LEADING COLLABORATION IN THE ARM ECOSYSTEM

LF Real-Time Operating Systems: Evolution and Trends. Kate Stewart. Senior Director of Strategic

Kinetis SDK v Release Notes for the MK21DA5 and MKW24D5 Devices

A Big Little Hypervisor for IoT Development February 2018

UM2204. Getting started with STM32CubeH7 for STM32H7 Series. User manual. Introduction

mbed OS Update Sam Grove Technical Lead, mbed OS June 2017 ARM 2017

ARM TrustZone for ARMv8-M for software engineers

AN4624 Application note

UM2045 User manual. Getting started with the X-CUBE-NFC3 near field communication transceiver software expansion for STM32Cube.

Building mbed Together: An Overview of mbed OS and How To Get Involved

NXP MICROCONTROLLER INNOVATION CLOUD CONNECTIVITY WITH AWS & LPC54018

Building a reference IoT product with Zephyr. Ricardo Salveti Michael Scott Tyler Baker

Getting started with X-CUBE-LED channel LED driver software expansion based on LED1642GW for STM32Cube

Hands-On Workshop: Developing with the Kinetis Software Development Kit

Zephyr LTS Release. What to expect and why are we doing this. Anas Nashif, Intel Corp.

Kinetis Software Optimization

Software Design Challenges for heterogenic SOC's

Getting Started with MCUXpresso SDK CMSIS Packs

Getting started with the X-CUBE-IKA02A1 multifunctional software expansion for STM32Cube

An Incubator Project in the Apache Software Foundation. 13 July 2016

IoT Sensing SDK. Getting started with IoT Sensing SDK (ISSDK) v1.7 middleware. Document information. IoT Sensing SDK, ISSDK, MCUXpresso, middleware

SOMNIUM DRT Benchmarks Whitepaper DRT v3.4 release : August 2016

Getting Started with MCUXpresso SDK

Designing, developing, debugging ARM Cortex-A and Cortex-M heterogeneous multi-processor systems

Getting Started with Kinetis SDK (KSDK) v.1.2

Getting Started with Kinetis SDK (KSDK) v.1.3

Experiment 1. Development Platform. Ahmad Khayyat, Hazem Selmi, Saleh AlSaleh

NXP Semiconductors, 6501 William Cannon Drive West, Austin, Texas Kinetis SDK 2.0 Transition Guide Rev.

Quick Start Guide. High power stepper motor driver expansion board based on powerstep01 for STM32 Nucleo (X-NUCLEO-IHM03A1)


UM QN908x Quick Start. Document information. QN908x, Quick Start, Development Kit, QN9080 DK, QN9080 Development Kit

Getting Started with MQX RTOS for Kinetis SDK

Heterogeneous multi-processing with Linux and the CMSIS-DSP library

Security in Apple HomeKit. 4. Meeting IG sha 9. März 2017 in Horw Dr. Cuno Pfister

Implementing Secure Software Systems on ARMv8-M Microcontrollers

Getting started with the X-CUBE-NFC5 high performance HF reader / NFC initiator IC software expansion for STM32Cube

ARM mbed mbed OS mbed Cloud

Version (Apr 28, 2016)

Quick Start Guide. Bipolar stepper motor driver expansion board based on L6208 for STM32 Nucleo (X-NUCLEO-IHM05A1) Version 1.1.

Introduction to Keil-MDK-ARM. Updated:Monday, January 22, 2018

Backporting is so 1993

Kinetis KE1xF512 MCUs

Accelerating IoT with ARM mbed

UM1853 User manual. STM32CubeF1 Nucleo demonstration firmware. Introduction

Introduction to Keil-MDK-ARM. Updated:Thursday, February 15, 2018

Hands-On Workshop: ARM mbed

Key Benefits. SAM S70 and E70 Devices

Accelerating IoT with ARM mbed

.org. IoT Development Platform

Getting started with the X-CUBE-53L1A1 Time-of-Flight long distance ranging sensor software expansion for STM32Cube

Quick Start Guide. Bluetooth Low Energy expansion board based on SPBTLE-RF module for STM32 Nucleo (X-NUCLEO-IDB05A1) Version 1.

The speed of containers, the security of VMs. KataContainers.io

Accelerating IoT with ARM mbed

HOW TO INTEGRATE NFC CONTROLLERS IN LINUX

UM1754 User manual. Getting started with STM32CubeL0 firmware package for STM32L0 series. Introduction

Quick Start Guide. Stepper motor driver expansion board based on L6474 for STM32 Nucleo (X-NUCLEO-IHM01A1) Version 1.2.

A brief intro to MQX Lite. Real work: hands-on labs. Overview, Main features and Code Size

Component-based Software Development for Microcontrollers. Zhang Zheng FAE, ARM China

NimBLE - portable Bluetooth stack from Apache Mynewt

Create an USB Application Using CMSIS-Driver. Klaus Koschinsky Senior Field Applications Engineer

ARM mbed Enabled. Mihail Stoyanov Partner Enablement Team Lead, ARM mbed. Xiao Sun Partner Enablement Engineer, ARM mbed

FreeRTOS and LPC Microcontrollers. Richard Barry Design West, San Jose, 2013

Quick Start Guide. Sound terminal expansion board based on STA350BW for STM32 NUCLEO (X-NUCLEO-CCA01M1) Version 1.1.

mbed Hello World! Introduction to mbed

WiFi and Secure Socket Offload in Zephyr TM

Bringing the benefits of Cortex-M processors to FPGA

David Harrison, CEO/Design Engineer for Model Sounds Inc.

Quick Start Guide. Dynamic NFC/RFID tag IC expansion board based on ST25DV04K for STM32 Nucleo (X-NUCLEO-NFC04A1) Version 1.

TI-RTOS overview. Nick Lethaby, TI-RTOS and IoT Ecosystem. May 2015

STM32 Embedded Software. Overview

Quick Start Guide. Bluetooth Low Energy expansion board based on BlueNRG for STM32 Nucleo (X-NUCLEO-IDB04A1) Version 1.

Quick Start Guide. Long distance ranging ToF sensor expansion board based on VL53L1X for STM32 Nucleo (X-NUCLEO-53L1A1) Version (February 20, 2018)

Hands-On Workshop: ARM mbed : From Rapid Prototyping to Production

Jinfan Shi. Director of Huawei LiteOS Marketing Huawei

MDK-ARM Version 5. ULINK Debug Adapters. Microcontroller Development Kit.

Beyond Hardware IP An overview of Arm development solutions

Supported Architectures Supported Cores Supported microcontroller families. Cortex-M0 Cortex-M1 Cortex-M3 Cortex-M4 ARM7 ARM720T ARM7DI ARM7TDMI

RN2483_Silica Documentation

Getting started with the software package for STEVAL-STLKT01V1 based on STM32Cube

MQX RTOS Release Notes for Kinetis SDK FRDM- KV10Z Freescale Freedom Development Platform

Hands-On Workshop: New Kinetis Development Platform

Evaluation of uclinux and PREEMPT_RT for Machine Control System

Hitex ARM Conference. Future Proof Software

ODP Relationship to NFV. Bill Fischofer, LNG 31 October 2013

OP-TEE Using TrustZone to Protect Our Own Secrets

Quick Start Guide (V1.0 May2015) Dynamic NFC tag expansion board based on M24SR for STM32 NUCLEO (X-NUCLEO-NFC01A1)

ARM mbed Technical Overview

Operating systems and concurrency B02

MCUXpresso SDK USB Power Delivery

MDK-ARM Trainings Preparation. prior to the day of the training

IoT.js. Next generation web for connected things. Samsung Electronics Software Center Piotr Marcinkiewicz 2017

Transcription:

Using SoC Vendor HALs in the Zephyr Project Maureen Helm, NXP

What is Zephyr Project? Small Footprint RTOS As small as 8KB Enables applications code to scale Configurable Modular Truly Open Source Apache 2.0 License Hosted by Linux Foundation Transparent development Cross Architecture ARM x86 ARC NIOS-II RISC-V Xtensa 2

Zephyr Eco-System Zephyr OS The kernel and HAL OS Services such as IPC, Logging, file systems, crypto Zephyr Project SDK, tools and development environment Additional middleware and features Device Management and Bootloader Zephyr Community 3rd Party modules and libraries Support for Zephyr in 3rd party projects, for example: Jerryscript, Micropython, Iotivity Zephyr Community Zephyr Project Zephyr OS Application Services OS Services Kernel / HAL Kernel / HAL Scheduler Kernel objects and services low-level architecture and board support power management hooks and low level interfaces to hardware OS Services and Low level APIs Platform specific drivers Generic implementation of I/O APIs File systems, Logging, Debugging and IPC Cryptography Services Networking and Connectivity Device Management Application Services High Level APIs Access to standardized data models High Level networking protocols

Why Use SoC Vendor HALs? Core and peripheral register definitions Low-level stateless peripheral drivers Bare metal transactional drivers Maintained by the SoC vendor License is often permissive Used in other projects, not just Zephyr Greater maturity and QA testing Simplifies adding new SoCs and drivers to Zephyr 4

Tradeoffs Code is maintained elsewhere More difficult to update upstream License new to Zephyr, or not compatible with Apache 2.0 Code is used elsewhere APIs not compatible Features not implemented 5

HALs Currently in Use Vendor HAL SoC Family Arm CMSIS SAM, nrf5, Kinetis, EFM32, STM32 Atmel ASF SAM Intel QMSI Quark Nordic MDK nrf5 NXP MCUXpresso SDK Kinetis SiLabs Gecko SDK EFM32 ST STM32Cube SDK STM32 TI SimpleLink SDK SimpleLink 6

Levels of Abstraction Transactional HAL driver Thin Zephyr shim driver MCUX and QMSI Low-level, stateless HAL driver Larger Zephyr shim driver STM32 Register definitions only Near-native Zephyr driver Atmel, Nordic 7

CMSIS CMSIS = Cortex Microcontroller System Interface Standard CMSIS-Core, -SVD, -DSP, -Driver, etc. Defined by Arm CMSIS-Core standardizes processor core access and peripheral definitions Arm provides generic Cortex-M header files Vendors provide device header files Zephyr kernel port uses CMSIS to access NVIC, SCB registers Zephyr drivers use CMSIS to access peripheral registers 8

MCUXpresso SDK Common enablement for NXP Cortex-M MCUs Peripheral register definitions CMSIS-Core compatible Generated from same source as hardware documentation Bare metal peripheral drivers Similar APIs across Kinetis and LPC families (UART/LPUART/LPSCI, SPI/DSPI/LPSPI, etc.) Stateless and transactional abstraction levels Minimal inter-dependencies Tested on all hardware platforms IDE Example projects Demonstrate peripheral driver APIs RTOS Application Code Stacks / Middleware Peripheral Drivers CMSIS-CORE and CMSIS-DSP Microcontroller Hardware Board Support 9

The ext/ Folder Externally maintained source code lives in ext/ Includes SoC vendor HALs, mbedtls, TinyCrypt, FatFS, Segger RTT Permissively-licensed, but not necessarily Apache 2.0 Many are BSD 3-clause Imported as-is with minimal modification If modifications are needed, make them in a separate commit Exempt from Zephyr coding style 10

Import Process 1. Submit Code Component README with source code patch to the TSC 2. Are the TSC members agreeable (via TSC vote) to the proposal? NO software is rejected YES TSC chair forwards README to the Governing Board for review 3. Does any member of the Governing Board raise concern over inclusion in 2 week review period NO software is accepted, and README is included within the project s documentation (in tree and external sites as appropriate) YES Governing Board will meet to discuss whether to override the TSC approval or identify other approaches 11

Code Component README Origin: XYZ (project that hosts original code) Status: The current version supported in Zephyr is XYZ 1.4. See https://github.com/xyz/releases for more details. Purpose: Hardware Abstraction Layer (HAL) for ABC Microcontroller products Description: XYZ is a Hardware Abstraction Layer (HAL) for ABC Microcontroller products. It currently supports the following SoCs: - ZBC DFG Microcontroller - ZBC DFH Microcontroller Dependencies: XYZ assumes.. is available to link to. URL: https://github.com/xyz commit: 08ded7f21529c39e5133688ffb93a9d0c94e5c6e Maintained-by: External License: BSD-3-Clause License Link: https://github.com/xyz/license 12

Adding a new Arm SoC Does the SoC belong to an existing family or series? Are there CMSIS headers available? Is the license compatible? Are there transactional or stateless drivers available? Is the license compatible? Are the APIs compatible? Can they be used for other SoCs in the same family? 13

Summary SoC vendor HALs reduce the amount of custom Zephyr code Can have different levels of abstraction Successfully used by many SoCs in Zephyr Review the Input Process and git history Talk with maintainers 14

Participate! Impact architecture Direction Marketing / Advocacy Decision making Examine the code and join! 15

www.zephyrproject.org 16