Home

Awesome

Adamant A component-based, model-driven framework for constructing reliable and reusable real-time software

Run All Unit Tests Check Style Build All Documentation Build the User Guide

Adamant is a framework that enables efficient design, implementation, and test of embedded real-time software. Adamant was first developed for spacecraft flight software at the Laboratory for Atmospheric and Space Physics (LASP) at the University of Colorado, Boulder, and is now available for use under the Apache-2.0 license.

Adamant was created to solve two problems:

  1. Provide a technical solution that addresses the unique challenges of spacecraft flight software, with a focus on performance
  2. Allow for direct, verbatim code reuse from project to project to reduce development costs and increase reliability

The framework is used by first creating a model of the software in YAML-based domain specific language. This model defines a set of components and describes how they are connected together.

Adamant Component and Connector Diagram

This model is used to generate the structural code, documentation, unit test scaffolding, and command & telemetry interface for the system. Developers are then left the task of defining the system behavior via handwritten Ada.

What is Included

Getting Started

The best way to get started with Adamant is to try out the Example Project. The example demonstrates a functioning deployment of Adamant that runs on both Linux and an embedded Raspberry Pi Pico target. The example also provides a docker-based build environment that contains all the dependencies needed for working with Adamant. You are encouraged to clone the example project and begin modifying it to meet your needs.

If you want to create your own project from scratch, it is best to start by bringing up the provided Docker environment, which comes with Adamant's dependencies pre-installed. From here, you can build and run things within Adamant and then start building out your own project that uses it.

Want to read more first? See the Architecture Description Document and User Guide.

Need Help?

Contributing

Want to make Adamant better? For details on how to contribute, read CONTRIBUTING.md.

Resources

Below are some helpful resources for learning up on Adamant and the various tools used in this framework.

Directory Structure