FreeRTOS …What’s new in the FreeRTOS project

Richard Barry Founder, FreeRTOS Project Principal Engineer, AWS IoT

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Agenda

The FreeRTOS Kernel Amazon FreeRTOS New Ecosystem Projects New Architecture Ports

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. FreeRTOS—Open source real time kernel

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. FreeRTOS downloads per month over 15 years

14,000

12,000

10,000

8,000

6,000

Downloads 4,000

2,000

0

Date

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. gbm java apache (http server) cerebro alks-cli oss-attribution-generator libfabric xen devel cryptography tslint-eslint-rules cynical glib incubator mxnet arrow rollbar linux (kvm) hue rgp netlink gerrit-check

web socket sharp cni jgi scapy tabular diaporama packer json11 postcss-extract-animations authenticator fast align tez emscripten lmdbjava gucumber security security monkey

linux-nvme-cli t licensee lombok dovecot smack aalto-xml homebrew nodejs pygresql amphtml flink gpy wing slight.alexa

2018 cldr unicode gpyoptapache phoenix libarchive capybara jcommander tslint appium little proxy little typescript-fsa

kotlinpoet zipper moby go- cmock

plantuml-syntax esp-open-rtos gradle kuromoji github-plugin cbmc elastalert libsoup eclipse paho mariadb-connector-j kappa

irate mysql workbench pyzmq cnn r509-ocsp-responder cocoapods cmis_5

flask-sqlalchemy devkit iot aws tensorboard

git lfs git rails fortune fortune server 389ds

quicktype appium-gulp-plugin californium

redis pkcs7pad wycheproof sockeye google guava spack xcpretty address street wing irqbalance goa

tinyxml12 open mpi pyinvestigate pysnmp 2017 openjdk miniredis graphql-java tinycorelinux kcov convolutional-pose-machines-tensorflow catwatch sync tacacs_plus plus tacacs fabric apache spark apache

libfuse apache hive focus-android sqoop teleport webdriveragent

yubico chart.js notebook s2n libc django-debug-toolbar astrum oci-fetch yarn apache joshua ex_aws mosquito llvm scipy moto

bundler debugger remote appium

yarn picker react daterange

grpc appium-chromedriver apache beam wycheproof

boto 3 uml-utilities jawk mysql scikit-fuzzy bixie react-hot-loader ansible keras pig

gulp-typescript ompi

ubuntu mshadow libgxps apache jena safe-eval FreeRTOS

ldns mqtt 2016 hypothesis tvm oauth2 dmlc grpc-go appium-android-bootstrap apache commons dbutils kpatch graal boogieman bam bam joshua decoder lantram typescript-json-schema cargo-kcov ublockorigin apache hadoop nimbus-jose-jwt

parquet-mr presto react-native-swipeout glib-openssl iu kernel linux clearlydefined peewee linux (pm) linux xfs counterfeiter libjson geckodriver akka xcode-install gvsbuild libuavcan dynamic-object firefox jupyter notebook appiumadb glib-networking rosette protobuf chromium fop assertj-core chromium vim glib docker presto hadoop apache 2 -webkit-debug-proxy lang go liboqs ndbench qemu statsd backend tercom

word segmentation (nvme) linux dynamodb-milkhatx wordpress

apache pig apache mvel apache ant apache nnvm nginx libmoon

logstash-input-udp apache commons lang

openfire gsettings-test eslint open quantum safe dpdk immutables.org ffmpeg netty

moses iputils tsung ruby-simple-queue hana webhooks s3_file wingtk apache activemq jest wired tiger tupl databind jackson bencode-go multi-module-maven-release-plugin treeextra xenbits liblouis curator

swaggercodegen aws-scala go-btrfs sentry -retry filequeue ts-test txthings linux-fsdevel lsp-intellij-spacemacs parsimonious sparkmagic jetty.project kotlin httpclient httpcomponents agent webdriver facebook autovpn phoenix xen (devel) gpyopt beanstalker go-dockerclient libkv apache mxnet openssl apache httpcomponents core cmake

linux-pci leveldb pyaad rust xen sequel corenlp troposphere apache commons-compress netty reactive streams packr cyrus-sasl pidgin react-int ntpsec apache oozie seunjeon open fire containerd badssl.com pynamodb celery dynamodb backend glisten cairo

apache zeppelin rigor gtk+

allure mqtt js

apache bigtop emrun airlift apache tomcat apache red red hat deniswernert/udev kinesalite goleveldb nginx go-statsd-client elephas bandit

iu (xendrivers) linux lombok

irate apache commons io parquet-python elasticsearch yield-java conda errors pkg git-bigstore linux (fbdev) pcehdo yarn hadoop apache

rebouncer boringssl exoplayer immutableassign paramz botoflow kenlm mithriljs cloud-init

ews java api graph janus papaparse haproxy

apache lucene containernetworking dynamic-object

airflow gatsby sys-proctable appium-dot-exe git-lfs macports angular tooltips angular s3fs linux kexec jose hypothesis-python behave jackson-dataformats-binary ultipart-parser appium-uiautomator2-server kubernetes dtcoretext bro

apache hbase coreos sparklingml vowpal wabbit koji bin go-winio linux (blkfront) conda-build repolinter typed definitely redux seabiosrusqlite recrud linux (arch) retool postgresql intellij-community openjml wireshark react-native jdk react-spinkit jscolor spark-redshift webkit multi-module-mave functional-streams-for-scala foolbox goics jepsen glide selenium jedis apache solr istio pydeepgp

spring framework apache incubator airflow graphql-go p5-protocol-http2 deep visualization toolbox gdk-pixbuf mxnet notebooks react-draft-wysiwyg

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. gbm java apache (http server) cerebro alks-cli oss-attribution-generator libfabric xen devel cryptography tslint-eslint-rules cynical glib incubator mxnet jruby arrow rollbar linux (kvm) hue rgp netlink gerrit-check

web socket sharp cni jgi scapy tabular diaporama packer json11 postcss-extract-animations authenticator fast align tez emscripten lmdbjava gucumber security security monkey

linux-nvme-cli t licensee lombok dovecot smack aalto-xml homebrew nodejs pygresql amphtml flink gpy wing slight.alexa

2018 cldr unicode gpyoptapache phoenix libarchive capybara jcommander tslint appium little proxy little typescript-fsa

kotlinpoet zipper moby go-git cmock

plantuml-syntax esp-open-rtos gradle kuromoji github-plugin cbmc elastalert libsoup eclipse paho mariadb-connector-j kappa

irate mysql workbench pyzmq cnn r509-ocsp-responder cocoapods cmis_5

flask-sqlalchemy devkit iot aws tensorboard

git lfs git rails fortune fortune server 389ds

quicktype appium-gulp-plugin californium

redis pkcs7pad wycheproof sockeye google guava spack xcpretty address street wing irqbalance goa

tinyxml12 open mpi pyinvestigate pysnmp 2017 openjdk miniredis graphql-java tinycorelinux kcov convolutional-pose-machines-tensorflow catwatch sync tacacs_plus plus tacacs fabric apache spark apache

libfuse apache hive focus-android sqoop teleport webdriveragent

yubico chart.js notebook s2n libc django-debug-toolbar astrum oci-fetch yarn apache joshua ex_aws mosquito llvm scipy moto

bundler debugger remote appium

yarn picker react daterange

grpc appium-chromedriver apache beam wycheproof

boto 3 uml-utilities jawk mysql scikit-fuzzy bixie react-hot-loader ansible keras pig

gulp-typescript ompi

ubuntu mshadow libgxps apache jena safe-eval FreeRTOS

ldns mqtt 2016 hypothesis tvm oauth2 dmlc grpc-go appium-android-bootstrap apache commons dbutils kpatch graal boogieman bam bam joshua decoder lantram typescript-json-schema cargo-kcov ublockorigin apache hadoop nimbus-jose-jwt

parquet-mr presto react-native-swipeout glib-openssl iu kernel linux clearlydefined peewee linux (pm) linux xfs counterfeiter libjson geckodriver akka xcode-install gvsbuild libuavcan dynamic-object firefox jupyter notebook appiumadb glib-networking rosette protobuf chromium fop assertj-core chromium vim glib docker presto hadoop apache 2 ios-webkit-debug-proxy lang go liboqs ndbench qemu statsd backend tercom

word segmentation (nvme) linux dynamodb-milkhatx wordpress

apache pig apache mvel apache ant apache nnvm nginx libmoon

logstash-input-udp apache commons lang

openfire gsettings-test eslint open quantum safe dpdk immutables.org ffmpeg netty

moses iputils tsung ruby-simple-queue hana webhooks s3_file wingtk apache activemq jest wired tiger tupl databind jackson bencode-go multi-module-maven-release-plugin treeextra xenbits liblouis curator

swaggercodegen aws-scala go-btrfs sentry rspec-retry filequeue ts-test txthings linux-fsdevel lsp-intellij-spacemacs parsimonious sparkmagic jetty.project kotlin httpclient httpcomponents agent webdriver facebook autovpn phoenix xen (devel) gpyopt beanstalker go-dockerclient libkv apache mxnet openssl apache httpcomponents core cmake

linux-pci leveldb pyaad rust xen sequel corenlp troposphere apache commons-compress netty reactive streams packr cyrus-sasl pidgin react-int ntpsec apache oozie seunjeon open fire containerd badssl.com pynamodb celery dynamodb backend glisten cairo

apache zeppelin rigor gtk+

allure mqtt js

apache bigtop emrun airlift apache tomcat apache red red hat deniswernert/udev kinesalite goleveldb nginx go-statsd-client elephas bandit

iu (xendrivers) linux lombok

rdoc irate apache commons io parquet-python elasticsearch yield-java conda errors pkg git-bigstore linux (fbdev) pcehdo yarn hadoop apache

rebouncer boringssl exoplayer immutableassign paramz botoflow kenlm mithriljs cloud-init

ews java api graph janus papaparse haproxy

apache lucene containernetworking dynamic-object

airflow gatsby sys-proctable appium-dot-exe git-lfs macports angular tooltips angular s3fs linux kexec jose hypothesis-python behave jackson-dataformats-binary ultipart-parser appium-uiautomator2-server kubernetes dtcoretext bro

apache hbase coreos sparklingml vowpal wabbit koji bin go-winio linux (blkfront) conda-build repolinter typed definitely redux seabiosrusqlite recrud linux (arch) retool postgresql intellij-community openjml wireshark react-native jdk react-spinkit jscolor spark-redshift webkit multi-module-mave functional-streams-for-scala foolbox goics jepsen glide selenium jedis apache solr istio pydeepgp

spring framework apache incubator airflow graphql-go p5-protocol-http2 deep visualization toolbox gdk-pixbuf mxnet notebooks react-draft-wysiwyg

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Use Cases

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon FreeRTOS

Things Cloud Sense & Act Storage & Compute

Secure local Secure device Fleet Fleet IoT data triggers, actions, connectivity onboarding, audit and analytics and and data sync and messaging management protection intelligence Endpoints and SW updates Gateway

Intelligence Insights & Logic → Action

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon FreeRTOS

User (application) code

MQTT agent OTA agent BLE management

FreeRTOS kernel Amazon FreeRTOS libraries

Vendor supplied libraries

Hardware

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. New Ecosystem Products

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark Percepio Device Firmware Monitor ™

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 4-305 Percepio Device Firmware Monitor ™

Your office OEM Account Customer devices

Customer 1

Device log data DFM Tracealyzer/DFM Firmware Agent Percepio Account alerts Customer 2

Developers/QA DFM Classification Engine Customer 3

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 4-568 SEGGER Driven Remote Development

AWS Cloud

EC2 instance

SWD/JTAG

Development J-Link Remote Server SEGGER Tunnel Server Board (Tunnel Mode)

SEGGER SEGGER Amazon Workspaces Embedded Studio J-Link Library Client

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. New Architecture Ports FreeRTOS Kernel V10.2.0

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark ARMv8-M (Cortex-M33)

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. RISC-V

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. RISC-V ISA & Foundation Overview Rick O’Connor, Executive Director [email protected] http://www.riscv.org

February 2019 RISC-V Foundation 17 RISC-V Ecosystem Growth

February 2019 RISC-V Foundation 18 Dec 2018 Summit / Ecosystem Growth

Past Workshop Attendees North America RISC-V Summit Dec 2018 1200 . over 1000 registered attendees 1000

. ~ 2X the attendance of the Milpitas 800 Workshop in Dec 2017 600 . ~ 250 abstracts submitted 400 . 59 sessions including keynotes, 200 tutorials and 3 tracks 0 Monterey Berkeley Redwood Boston Mountain Milpitas Santa . 29 exhibitors City View Clara

2015 2016 2017 2018 February 2019 RISC-V Foundation 19 RISC-V Foundation Growth History September 2015 to February 2019 240 220 200 180 160 140 120 100 80 60 40 20 0 Q3 Q4 Q1 Q2 2015 2015 Q3 2016 2016 Q4 Q1 2016 2016 Q2 Q3 2017 2017 Q4 Q1 2017 2017 Q2 Q3 2018 2018 Q4 Q1 2018 2018 Platinum Gold Silver Auditor Individual 2019 February 2019 RISC-V Foundation 20 Foundation: 200+ Members So what’s all the fuss about?

Its just an ISA right?

How did we get here?

February 2019 RISC-V Foundation 22 RISC-V Background

. Started as a research project at UC Berkeley in 2010 and resulted in the release of the base user spec in May, 2014 - many tapeouts and several research publications along the way . The name RISC-V (pronounced risk-five), was chosen to represent the fifth major RISC ISA design effort at UC Berkeley - RISC-I, RISC-II, SOAR, and SPUR were the first four projects with the original RISC-I publications dating back to 1981 . In August 2015, articles of incorporation were filed to create a non-profit RISC-V Foundation to govern the ISA

February 2019 RISC-V Foundation 23 Most CPU chips are SoCs with many ISAs

. Applications processor . Graphics processors . Image processors . Radio DSPs . Audio DSPs . Security processors . Power-management processor . …. NVIDIA Tegra SoC

. Apps processor ISA too large for base accelerator ISA . IP bought from different places, each proprietary ISA . Home-grown ISA cores . Over a dozen ISAs on some SoCs – each with unique software stack

February 2019 RISC-V Foundation 24 Why so Many ISAs? Do we need all these different ISAs?

Must they be proprietary?

What if there was one free and open ISA everyone could use for everything?

February 2019 RISC-V Foundation 25 What’s Different about RISC-V?

. Simple - Far smaller than other commercial ISAs . Clean-slate design - Clear separation between user and privileged ISA - Avoids µarchitecture or technology-dependent features . A modular ISA - Small standard base ISA - Multiple standard extensions . Designed for extensibility/specialization - Variable-length instruction encoding - Vast opcode space available for instruction-set extensions . Stable - Base and standard extensions are frozen - Additions via optional extensions, not new versions

February 2019 RISC-V Foundation 26 Summary

. The free and open RISC-V ISA is enabling a new innovation frontier across all computing devices . Strong Industry Support - ~200+ members; Broad commercial and academic interest . RISC-V Twitter http://twitter.com/risc_v @risc_v . RISC-V LinkedIn Page - http://www.linkedin.com/company/risc-v-foundation . RISC-V mail lists / groups - https://riscv.org/mailing-lists/

February 2019 RISC-V Foundation 27 FreeRTOS on RISC-V

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark RISC-V examples in FreeRTOS V10.2.0

Pre-configured examples: • QEMU sifive_e model using Freedom Studio • Microsemi/Future Electronics M2GL025-Creative-Board using SoftConsole • VEGAboard using vanilla Eclipse (https://www.open-isa.org)

FreeRTOS RISC-V specifics: • Including the source files • Setting the assembler’s include file • Set configCLINT_BASE_ADDRESS • #define portasmHANDLE_INTERRUPT • Install the FreeRTOS trap hander

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Thank You!

www.FreeRTOS.org

aws.amazon.com/freertos

Download, share and support

opensource.amazon.com/enterprise-oss-book

@AWSOpen | opensource.amazon.com | aws.github.io

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.