ARM-software / open-iot-sdk

Open-IoT-SDK - Home of the Total Solution applications.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Overview

Welcome to Arm's Open-IoT-SDK, where you have access to a wide variety of IoT targeted software applications and components ready to run on Arm based platforms. This software framework accelerates intelligent, connected IoT product design by allowing developers to focus on what really matters - innovation and differentiation.

The Open-IoT-SDK contains Total-Solutions applications that allow the user to explore and evaluate not only Arm IP, and the Open-CMSIS-CDI API's, but several other Arm tools as well. It is strongly recommended to explore these pages thoroughly as you will find information on the code itself, the different ways to build and execute the applications as well as the different tools that are available to you, such as Arm Virtual Hardware.

The Open-IoT-SDK located within GitHub is a read-only downstream Arm project mirror of the upstream project located in GitLab:Open-IoT-SDK. Any enhancement requests or bugs identified for this repository will need to be submitted to the upstream GitLab:Open-IoT-SDK project.

Below is a list of software topics to explore and utilize:

The goal of this repository is to provide you the developer with as many software choices as possible to run on Arm IP without downloading a huge monolithic codebase. This repository utilizes a multi-repository architecture stored in various locations across the internet. All the source code located in this GitHub repository is a subset of repositories stored and maintained within the GitLab:Open-IoT-SDK framework.

The Total-Solutions applications you have access to here, when built, will pull down only the required software components that are needed thus saving time and hard disk space. To further explore the next level of source code, you can go to the home of the GitLab:Open-IoT-SDK framework.

To get started quickly... Keep reading!


Arm Total Solutions

Arm IoT Total Solutions provides a complete solution designed for specific use-cases containing everything needed to streamline the design process and accelerate product development. To accelerate your software development needs, each Total Solutions brings together:

  • Hardware IP
  • CSP cloud connectivity middleware
  • Real-time OS support
  • Machine learning (ML) models
  • Advanced tools such as Arm Virtual Hardware
  • Application specific reference code
  • 3rd Party support from the world's largest IoT ecosystem

The FreeRTOS kernel is already included in all application's and over time more RTOS kernel abstractions will be added demonstrating the usability of the Open-CMSIS-CDI RTOS interfaces.

Refer to our initial Total Solutions below, ATS-Keyword and ATS-Blinky for more information.


ATS-Keyword

This repo contains Arm's first IoT Total Solution, "Keyword Detection", that runs on Arm's newer platforms and processors from Armv8-M onwards. It provides general-purpose compute and ML workload use-cases, including an ML-based keyword-detection / keyword-spotting example that leverages the DS-CNN model from the Arm Model Zoo. This application also demonstrates various Cloud-connected functionality, such as Over-the-Air update and Security concepts via TrustedFirmware-M.

To experience and evaluate the Keyword Detection Total Solution, proceed to the ATS-Keyword folder.


ATS-Blinky

ATS-Blinky is a General-Purpose-Compute application that demonstrates blinking LEDs using Arm Virtual Hardware on Arm's more established processors based on Armv6-M and Armv7-M. To start exploring this baseline application, head on over to the ATS-Blinky project.


Things to know!

To build the Total-Solutions applications, there are some thing you need to know. If you want to tryout Arm Virtual hardware, proceed to the application that best fits your needs. You will find all the instructions needed to build the source code to work with the Arm Virtual Hardware platform.

If you are more of a Do-It-Yourself type of developer, wanting to know how to setup your local build environment, perform the build yourself and see what options are available; head on over to the Open-IoT-SDK developer page.

Known limitations

Build Environments Status
Linux Now supported
Windows (WSL)* Coming soon
Windows (DOS)* Coming soon
uVision (MDK) Coming soon
Keil Studio Coming soon
  • *Currently if your Windows system has WSL installed, you must use WSL for all builds.
  • Arm compiler 6 is the only compiler full supported, GCC support is in Beta status.
  • Accuracy of the ML detection running alongside cloud connectivity depends on the performance of the AVH server instance used. We recommend to use at least a t3.medium instance, though c5.large is preferred, when running on AWS.
  • Arm Virtual Hardware subsystem simulation is not time/cycle accurate. Performances will differ depending on the performances of the host machine.

Open-CMSIS-CDI

The Open-CMSIS-CDI standard is one the of the foundations of IoT Total Solutions and is designed to solve common industry problems, reduce barriers to deployment and enable scale across the Arm Cortex-M ecosystem. Open-CMSIS-CDI will define a common set of interfaces targeting cloud-service-to-device functionality to enable major IoT stacks to run across as broad a range of Arm-based MCUs as possible, with minimal porting effort.

Open IoT-SDK is the reference implementation of the Centauri standards, Open-CMSIS-CDI and PSA. It is a software framework that demonstrates the capabilities that a Centauri-compliant device should have, including all the relevant APIs. This reference implementation provides a foundation for developers to build products upon in a scalable, consistent manner.

Click here learn more.


Open-CMSIS-Pack

The Open-CMSIS-Pack project delivers the infrastructure to integrate and manage software components and improve code reuse across embedded and IoT projects. Work is underway to integrate this technology into the Open-IoT-SDK and the Total-Solutions applications and is coming soon.

Click here to learn more.


Continuous Integration

Each Total Solution application has been built and verified using a continuous integration process. Inside each Total Solution application folder there are examples for CI systems such as GitHub. GitLab example files are coming soon!


Arm Virtual Hardware

Arm Virtual Hardware (AVH) helps software developers build Arm-based intelligent applications faster. AVH delivers models of Arm-based processors, systems, and boards for application developers and SoC designers to build and test software without hardware. It runs as a simple application in the cloud and is ideal for testing using modern agile software development practices such as continuous integration and continuous development CI/CD (DevOps) workflows.

Click here to learn more.


ML Embedded Eval Kit

The Arm ML Embedded Evaluation Kit , is an open-source repository enabling users to quickly build and execute machine learning software for evaluating and exercising Arm Cortex-M CPUs and Arm Ethos-U55/U65 NPUs.

With the ML Eval Kit you can run inferences on either a custom neural network on Ethos-U microNPU or using available ML applications such as Image classification, Keyword spotting (KWS), Automated Speech Recognition (ASR), Anomaly Detection, and Person Detection all using Arm Virtual Hardware.

Click here to learn more.


ML Inference Advisor

The Arm ML Inference Advisor (Arm MLIA) helps AI/ML developers tailor and optimize their Neural Networks (NNs) to run efficiently on Arm hardware. Arm MLIA provides compatibility and performance reports for select Arm IP and relevant software stacks. It also generates the optimization advice on how to modify the NN for improved memory and compute performance. Currently, Arm MLIA supports the Ethos-U microNPUs. In the future, support for more IP will be added.

The ATS-Keyword application will be the first to have the ML Inference Advisor active within the build. For more details see the application specific README.md file for details on how it is executed and configured.


Other Resources

Repository Description
Arm AI Ecosystem Catalog Connects you to the right partners, enabling you to build the next generation of AI solutions
Arm IoT Ecosystem Catalog Explore Arm IoT Ecosystem partners who can help transform an idea into a secure, market-leading device.
Arm ML Model Zoo A collection of machine learning models optimized for Arm IP.
Arm Virtual Hardware Documentation Documentation for Arm Virtual Hardware
Arm Virtual Hardware source code Source code ofArm Virtual Hardware
FreeRTOS Documentation Documentation for FreeRTOS.
FreeRTOS source code Source code of FreeRTOS.
AWS IoT Documentation for AWS IoT.
Trusted Firmware-M Documentation Documentation for Trusted Firmware-M.
Trusted Firmware-M Source code Source code of Trusted Firmware-M.
Mbed Crypto Mbed Crypto source code.
MCU Boot MCU Boot source code.
ml-embedded-evaluation-kit ML Embedded eval kit source code
Support A community.arm.com forum exists for users to post queries.

Future Enhancements


License and contributions

The software is provided under the Apache-2.0 license. All contributions to software and documents are licensed by the contributing organization under the same license model as the software/document itself (ie. inbound == outbound licensing). Arm Total Solutions applications may reuse software already licensed under another license, provided the license is permissive in nature and compatible with Apache v2.0.

Folders containing files under different permissive license than Apache 2.0 are listed in the LICENSE file.

Please see the CONTRIBUTING.md file in each folder for more information.

Security issues reporting

If you find any security vulnerabilities, please do not report it in the GitLab issue tracker. Instead, send an email to the security team at arm-security@arm.com stating that you may have found a security vulnerability in the IoT Total Solution Keyword Spotting project.

More details can be found at Arm Developer website.

About

Open-IoT-SDK - Home of the Total Solution applications.

License:Apache License 2.0


Languages

Language:C 92.8%Language:C++ 2.4%Language:CMake 2.2%Language:Python 1.9%Language:Shell 0.6%