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

Similar documents
Farklı Arduino Boardlar

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

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

Intel Galileo gen 2 Board

Cypress Roadmap: CapSense Controllers Q Owner: JFMD CapSense Roadmap

Lesson 6 Intel Galileo and Edison Prototype Development Platforms. Chapter-8 L06: "Internet of Things ", Raj Kamal, Publs.: McGraw-Hill Education

More info about the competition and the Intel Galileo Gen 2

FOR IOT PRODUCT DEVELOPMENT

Soletta. Closing the IoT Development Gap. OpenIoT & ELC Europe 2016

Lesson 5 Arduino Prototype Development Platforms. Chapter-8 L05: "Internet of Things ", Raj Kamal, Publs.: McGraw-Hill Education

The IoT and Thread in PHYTEC Nodes. Jonas Remmert July 15th, 2016

Zephyr on Beetle. Vincenzo Frascino Senior Engineer. OpenIoT, Portland, Oregon 22/02/2017 ARM 2017

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

Major Components of the Internet of Things Systems

RENESAS SYNERGY PLATFORM

Cookie User Manual. For NuMicro Edition 1.0. Rev. 1.0 Release: forum.coocox.org.

EVE2 BLE Datasheet. The EVE Platform features standardized IO, common OS and drivers and ultra-low power consumption.

Cypress PSoC 4 Microcontrollers

Network Embedded Systems Sensor Networks Fall Hardware. Marcus Chang,

EMBEDDED SYSTEMS WITH ROBOTICS AND SENSORS USING ERLANG

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

SiFive Freedom SoCs: Industry s First Open-Source RISC-V Chips

Kinetis KE1xF512 MCUs

BLE121LR Bluetooth Smart Long Range Module 5/12/2014 1

COL862 - Low Power Computing

STM32F3. Cuauhtémoc Carbajal ITESM CEM 12/08/2013

Daniele Alessandrelli. OpenIoT Summit North America 2017

ARROW ARIS Board Software User s Guide 27/07/2016

STSW-BLUENRG1-DK. BlueNRG-1, BlueNRG-2 DK SW package

DFRobot CurieNano A mini Genuino/Arduino 101 Board SKU: DFR0453

Bluegiga Wi-Fi Software 9/19/2013 1

EVE2 BLE CAN Datasheet

User Manual Rev. 0. Freescale Semiconductor Inc. FRDMKL02ZUM

Distributed Real- Time Control Systems

ARROW ARIS EDGE Board User s Guide 27/09/2017

ARDUINO BOARD LINE UP

NFC Framework and NT3H1201 Device Driver v1.1

Cypress PSoC 4 Microcontrollers

Integrating Custom Hardware into Sensor Web. Maria Porcius Carolina Fortuna Gorazd Kandus Mihael Mohorcic

STM32G0 MCU Series Efficiency at its Best

Interconnects, Memory, GPIO

Leveraging IoT Biometrics and Zephyr RTOS for Neonatal Nursing in Uganda

AVR XMEGA Product Line Introduction AVR XMEGA TM. Product Introduction.

ARROW ARIS EDGE S3 Board User s Guide 21/02/2018

HOW TO INTEGRATE NFC CONTROLLERS IN LINUX

Overview The Microcontroller The Flex Board Expansion boards Multibus board Demo board How to: Compile demo Flash & Run Demos

Building Real-Time Embedded Applications on QduinoMC

Intel Quark Microcontroller Developer Kit D2000

Diploma in Embedded Systems

Datasheet. RS485 description The UART/RS485 physical layer gives support for UART communication and higher level Modbus protocol.

FRDM-KL26Z User s Guide

Designing Embedded Processors in FPGAs

FRDM-KL03Z User s Guide

Bluetooth Smart Development with Blue Gecko Modules. Mikko Savolainen October 2015

Bluegiga Bluetooth Smart Software v.1.3 5/28/2014 1

RetroBSD - a minimalistic Unix system. Igor Mokoš bsd_day Bratislava

Copyright 2014 Xilinx

Si7013 Temperature Humidity Driver v1.2

STM32 Cortex-M3 STM32F STM32L STM32W

Basic Components of Digital Computer

XNUCLEO-F030R8, Improved STM32 NUCLEO Board

Unlocking the Potential of Your Microcontroller

Low-Cost Microcontrollers

ARDUINO YÚN MINI Code: A000108

Release Notes for ADuCM302x EZ-KIT Lite Board Support Package 1.0.3

S32 SDK for Power Architecture Release Notes Version EAR

Release Notes for ADuCM302x EZ-KIT Lite Board Support Package 1.0.2

Oberon M2M IoT Platform. JAN 2016

2-Oct-13. the world s most energy friendly microcontrollers and radios

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

i.mx 7 - Hetereogenous Multiprocessing Architecture

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

Custom Silicon for all

Freescale Semiconductor Inc. Microcontroller Solutions Group. FRDM-KL46Z User s Manual FRDM-KL46Z-UM Rev. 1.0

Getting to know the Arduino IDE

FRDM-KE02Z User s Manual

NimBLE - portable Bluetooth stack from Apache Mynewt

Fujitsu System Applications Support. Fujitsu Microelectronics America, Inc. 02/02

Embedded Linux With Raspberry Pi IOT

Introduction to ARM LPC2148 Microcontroller

Goal: We want to build an autonomous vehicle (robot)

LPC4370FET256. Features and benefits

MQX -celeration RTOS-integrated solutions

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

EMBEDDED SYSTEMS READY TO USE LECTURE MATERIALS FOR UNDERGRADUATES

S32K AND ISELED DRIVER

The Riverside Robotic Society June 2016 ESP8266

Microcontroller: CPU and Memory

EDJE PROJECT. The Software Foundation for IoT Devices. IS2T S.A All rights reserved.

Arduino Uno R3 INTRODUCTION

PBLN52832 DataSheet V Copyright c 2017 Prochild.

TEVATRON TECHNOLOGIES PVT. LTD Embedded! Robotics! IoT! VLSI Design! Projects! Technical Consultancy! Education! STEM! Software!

Release Notes for ADuCM302x EZ-KIT Board Support Package 1.0.6

MYD-C437X-PRU Development Board

ARDUINO LEONARDO ETH Code: A000022

ARDUINO MICRO WITHOUT HEADERS Code: A000093

ARDUINO INDUSTRIAL 1 01 Code: A000126

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

The friendly operating system for the IoT!

Hands-On Workshop: ARM mbed

Transcription:

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

Agenda Intel Quark MCU Platforms Intel Quark Microcontroller Software Interface (QMSI) Zephyr/QMSI Integration Contiki/QMSI Integration Final Considerations 2

Intel Quark Microcontrollers

Intel Quark MCU D2000 Processor core 32 MHz clock frequency Pentium 586 ISA compatible without x87 Float Point Unit Memory system 32 KB Flash 8 KB OTP Code 4 KB OTP Data 8 KB SRAM 4

Intel Quark MCU D2000 I/O Peripheral UART, I2C, SPI, GPIO, PWM, ADC, Analog Comparator, and DMA Timer RTC, Watchdog, Always-On Counters 5

Intel Quark MCU Developer Kit D2000 Small form-factor Flash storage 6-axis compass/accelerometer Temperature sensor Arduino-Uno compatible shield interface 6

Intel Quark SE MCU C1000 Processor core 32 MHz clock frequency Pentium 586 ISA compatible without x87 Float Point Unit Memory system 384 KB Flash 8 KB OTP 80 KB SRAM 7

Intel Quark SE MCU C1000 I/O Peripheral UART, I2C, SPI, GPIO, PWM, Analog Comparator, DMA, USB, I2S, Mailbox Timer RTC, Watchdog, Always-on Counters Sensor subsystem ARC EM4 DSP with floating point extension I2C, SPI, GPIO, ADC, Timers 8

Intel Curie Module Intel Quark SE MCU C1000 BLE radio Pattern Matching Engine 6-axis accelerometer/gyroscope Used in Arduino/Genuino 101 9

Intel Quark Microcontroller Software Interface (QMSI)

QMSI Hardware Abstraction Layer for Intel Quark MCUs Specifies APIs for all peripherals present in Quark MCUs Provides a common API for different MCUs Reduces learning curve for new MCUs Currently supports Quark D2000 and Quark SE C1000 Current version: 1.2 11

QMSI BSP Open source implementation of QMSI specification Bootloader Device drivers for almost all peripherals Linker scripts and crt0 Newlib system calls Missing I2S, SPI and I2C slave mode Static library libqmsi fstat(), write(), and sbrk() pico_printf() Bare-metal example applications 12

QMSI BSP BSD 3-clause License Drivers available on github.com/quark-mcu/qmsi Bootloader available on github.com/quark-mcu/qm-bootloader 13

QMSI Structure Overview $ tree -d -L 1. -- board -- doc -- drivers -- examples -- include -- soc -- sys -- tools `-- usb <<<<<<<<<- Board level drivers Project documentation and guidelines QMSI drivers Example applications using QMSI APIs Top level headers SoC-specific support crt0 and newlib syscalls Helper tools USB device stack 14

Zephyr/QMSI Integration

Zephyr Overview Open source small-footprint RTOS Multiple architecture support Networking support Bluetooth Low Energy, IEEE 802.15.4, Ethernet IoT communication protocols x86, ARC, ARM, and Nios2 6LoWPAN, RPL, CoAP, MQTT Supports Quark D2000 and Quark SE C1000 Apache License version 2.0 Available in zephyrproject.org 16

Zephyr/QMSI Integration Reused components Bootloader Device drivers* Not reused components Newlib system calls Linker script and crt0 Device drivers Interrupt controller Local APIC Timer Mailbox 17

Zephyr Device Driver Model Overview Unified peripheral API Applications access peripherals devices via Zephyr peripheral APIs Device drivers implement Zephyr peripheral APIs Top-level include/ directory Top-level drivers/ directory Device driver is selected during kernel configuration 18

Driver Model Architecture 19 19

Device Driver Integration QMSI shim drivers Zephyr has a copy from the latest QMSI release Shim layer between Zephyr and QMSI Implements Zephyr driver APIs using QMSI APIs Eventually translates Zephyr APIs parameters into QMSI APIs parameters Located in drivers/ directory ext/hal/qmsi/ directory QMSI drivers are built by Zephyr build system when the corresponding shim driver is selected during kernel configuration Optional: link against libqmsi (see CONFIG_QMSI_LIBRARY option) 20

Device Driver Integration Example static int rtc_qmsi_set_config(struct device *dev, struct rtc_config *cfg) { qm_rtc_config_t qm_cfg; qm_cfg.init_val = cfg->init_val; qm_cfg.alarm_en = cfg->alarm_enable; qm_cfg.alarm_val = cfg->alarm_val; qm_cfg.callback = (void *) cfg->cb_fn; qm_cfg.callback_data = dev; return qm_rtc_set_config(qm_rtc_0, &qm_cfg); } 21

QMSI Shim Driver Architecture 22

Integration Highlights QMSI shim drivers are used by all Quark MCU based boards D2000 CRB, SE C1000 devboard, and Arduino 101 Shim drivers approach enabled us to rapidly support Intel Quark MCUs peripherals Minimum overhead 23

Contiki/QMSI Integration

Contiki Overview Open source OS for the Internet of Things Multiple architecture support x86, ARM, 8051, AVR, MSP430 IoT communication protocols support BSD 3-clause License Available in contiki-os.org Quark D2000 and Quark SE C1000 ports available in github.com/otcshare/contiki-x86 Pull-request for Contiki upstream (Quark D2000 devkit) 25

Contiki/QMSI Integration Helper script to download and build libqmsi and bootloader All BSP components are reused out-of-the-box Bootloader Linker scripts and crt0 Newlib syscalls implementation Device drivers Contiki links against libqmsi 26

Contiki Port Timers Support Clock module support Enables Timer, Stimer, Etimer, and Ctimer libraries Located in platform/qmsi-common/core/sys/clock.c Implemented using qm_pic_timer driver Rtimer library support Located in platform/qmsi-common/core/sys/rtimer-arch.c Implemented using qm_rtc driver Watchdog support Located in platform/qmsi-common/core/dev/watchdog.c Implemented using qm_wdt driver 27 27

Contiki Port I/O Support No unified API I/O APIs are platform dependent Serial C library API for output core/dev/serial-line.h for input 28 28

Contiki Port Architecture 29 29

Integration Highlights Initial Quark D2000 port done in 4 small patches Initial Quark SE C1000 port done in 2 patches Quark SE C1000 port was very straightforward once another QMSI-based port was already in place Clock, rtimer, watchdog, stdout support is shared between both ports Initial ports are pretty decent Support for main Contiki subsystems Support for all I/O devices via QMSI APIs 30

Final Considerations

Final Considerations QMSI is the way to go with Intel Quark MCU platforms Abstracts away peripheral device complexities No need to jump into datasheet at first APIs are very simple Good documentation Example applications are very useful Reusing QMSI BSP components can accelerate your porting work Zephyr and Contiki showcase two different approaches on how to integrate with QMSI They can provide guidelines on porting other IoT OSs to Intel Quark MCU platforms 32

Q&A

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