Skip to content
@embvm

Embedded Virtual Machine

An Embedded Artistry project.

Embedded Virtual Machine Project

The Embedded Virtual Machine (Embedded VM or embvm for short) is an experimental development effort by Embedded Artistry. We are creating a software framework that demonstrates how developers can create software that is easy to change, easy to test, and easy to reuse. We hope that it can serve as a model of evolutionary embedded software design techniques.

The ultimate goals of the Embedded Virtual Machine project are:

  • Increasing the ability to reuse embedded systems software across products
  • Minimizing the cost of hardware changes in an embedded system by constraining existing code modifications to isolated modules
  • Reduce time-to-market by enabling developers to build embedded systems software by leveraging modular, tested component
  • Provide developers with tools and constructs that enable them to develop, test, and debug embedded software on their development machines

We carefully selected these goals because we were continually tired of repeatedly facing the same challenges the past twelve years. We're tired of being stuck in the software development dark ages. We want to do our part to improve the state of the art in embedded systems software development, enabling users like you to more quickly develop reliable embedded systems software.

Status

This project is still in its infancy and quite experimental.

What is currently represented is our initial approach. While working on our Designing Embedded Software for Change and Abstractions and Interfaces courses, we realized that we could simplify some of the central ideas by changing our approach to abstraction. This work will begin once version of Designing Embedded Software for Change is completed.

Core Project

embvm-core is the primary Embedded VM repository. This repo provides the core abstractions, boot-related code, utilities, and supporting libraries that are used to build Embedded VM applications. These abstractions are used to quickly create and port embedded systems software from one platform to another. It is the minimal dependency needed for a new Embedded VM project.

Reference Projects

Demonstration Projects

We provide a number of demonstration projects.

Applications

  • embvm/blinky contains the application layer code for a simple blinky example. This project runs on a personal computer using an Aardvark adapter hooked up to an LED, an nRF52840 development kit, an nRF USB Dongle, and an STM32 NUCLEO-L4R5ZI development board.
  • embvm-demo contains a more complicated example application involving LEDs, a time-of-flight sensor, and an OLED display. This application runs on a personal computer using an Aardvark adapter, an nRF52840 development kit, and an STM32L4R5ZI-P Nucleo development kit.

Hardware Platforms

  • embvm-demo-platforms contains example platforms and hardware platforms that are shared by our blinky and embvm-demo projects
  • stm32l4 provides an example hardware platform, platform, and blinky application that will run on an STM32 NUCLEO-L4R5ZI development kit.

Processor Support

We have modules that provide minimal support for the following processors:

OS Support

Related Efforts

Contributor Guidelines

We welcome contributions from the community for all of our projects. If you are interested in contributing, please review the following information:

If you are unfamiliar with open source development, you will want to start with our Open Source Contribution Guide.

Pinned

  1. embvm-core embvm-core Public

    Core components, subsystems, and utilities for the Embedded Virtual Machine

    C++ 40 8

  2. c-interfaces c-interfaces Public

    Collection of Interfaces Written in C

    C 5

  3. blinky blinky Public

    Blinky example application that uses the Embedded Virtual Machine.

    Meson

  4. embvm-demo embvm-demo Public

    Embedded Virtual Machine demo application that runs on multiple hardware platforms, including a personal computer (with required hardware).

    Meson 1

Repositories

Showing 10 of 11 repositories
  • embvm-project-skeleton Public template

    A template repository that can be used as a quick-start embvm projects.

    Meson 0 1 1 0 Updated Dec 7, 2023
  • embvm-demo-platforms Public

    Platforms for the blinky and embvm-demo projects

    C++ 0 0 0 0 Updated Dec 7, 2023
  • freertos-interface Public

    Provides standardized Embedded VM OS interface support for FreeRTOS-based systems.

    C++ 0 0 0 0 Updated Dec 7, 2023
  • nordic Public

    Nordic Product Line Support (Processors + Development Kits)

    C 0 0 0 0 Updated Dec 7, 2023
  • stm32l4 Public

    embvm support for STM32L4 processors.

    C++ 3 1 0 0 Updated Dec 7, 2023
  • arm-architecture Public

    Embedded VM drivers and supporting infrastructure for ARM processors.

    C++ 0 0 0 0 Updated Dec 7, 2023
  • blinky Public

    Blinky example application that uses the Embedded Virtual Machine.

    Meson 0 0 0 0 Updated Dec 7, 2023
  • embvm-demo Public

    Embedded Virtual Machine demo application that runs on multiple hardware platforms, including a personal computer (with required hardware).

    Meson 1 0 0 0 Updated Dec 7, 2023
  • embvm-core Public

    Core components, subsystems, and utilities for the Embedded Virtual Machine

    C++ 40 8 2 0 Updated Dec 7, 2023
  • c-interfaces Public

    Collection of Interfaces Written in C

    C 5 MIT 0 2 0 Updated Dec 6, 2023

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…