All Projects → DISTORTEC → Distortos

DISTORTEC / Distortos

Licence: mpl-2.0
object-oriented C++ RTOS for microcontrollers

Programming Languages

cpp
1120 projects
cpp11
221 projects

Projects that are alternatives of or similar to Distortos

rnk
rnk is a RTOS targeting ARM architecture.
Stars: ✭ 22 (-93.79%)
Mutual labels:  arm, real-time, microcontroller, cortex-m, operating-system, rtos
DemOS
Free, simple, extremely lightweight, stackless, cooperative, co-routine system (OS) for microcontrollers
Stars: ✭ 18 (-94.92%)
Mutual labels:  arm, microcontroller, cortex-m, operating-system, rtos
Tock
A secure embedded operating system for microcontrollers
Stars: ✭ 3,258 (+820.34%)
Mutual labels:  arm, microcontroller, cortex-m, operating-system, embedded
mdepx
MDEPX — A BSD-style RTOS
Stars: ✭ 17 (-95.2%)
Mutual labels:  arm, microcontroller, embedded, cortex-m, rtos
Zephyr
Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
Stars: ✭ 5,335 (+1407.06%)
Mutual labels:  microcontroller, real-time, rtos, embedded
Incubator Nuttx Apps
Apache NuttX Apps is a collection of tools, shells, network utilities, libraries, interpreters and can be used with the NuttX RTOS
Stars: ✭ 65 (-81.64%)
Mutual labels:  microcontroller, real-time, rtos, embedded
Incubator Nuttx
Apache NuttX is a mature, real-time embedded operating system (RTOS)
Stars: ✭ 591 (+66.95%)
Mutual labels:  microcontroller, real-time, rtos, embedded
Pyocd
Open source Python library for programming and debugging Arm Cortex-M microcontrollers
Stars: ✭ 550 (+55.37%)
Mutual labels:  arm, microcontroller, cortex-m, embedded
Daplink
Stars: ✭ 1,162 (+228.25%)
Mutual labels:  arm, microcontroller, cortex-m, embedded
Qpc
QP/C real-time embedded framework/RTOS for embedded systems based on active objects (actors) and hierarchical state machines
Stars: ✭ 379 (+7.06%)
Mutual labels:  framework, arm, rtos, embedded
Erika3
ERIKA Enterprise v3 RTOS
Stars: ✭ 98 (-72.32%)
Mutual labels:  arm, cortex-m, real-time, rtos
IntrOS
Free cooperative operating system (OS) for microcontrollers
Stars: ✭ 38 (-89.27%)
Mutual labels:  microcontroller, cortex-m, operating-system, rtos
Drone
CLI utility for Drone, an Embedded Operating System.
Stars: ✭ 114 (-67.8%)
Mutual labels:  framework, real-time, rtos, embedded
apex
Apex RTOS - A (somewhat) Linux compatible real time operating system
Stars: ✭ 15 (-95.76%)
Mutual labels:  real-time, embedded, operating-system, rtos
alloc-cortex-m
A heap allocator for Cortex-M processors
Stars: ✭ 139 (-60.73%)
Mutual labels:  arm, microcontroller, cortex-m
Pikort
A tiny Linux-like real-time kernel optimized for ARM Cortex-M chips
Stars: ✭ 268 (-24.29%)
Mutual labels:  arm, cortex-m, rtos
Drone Core
The core crate for Drone, an Embedded Operating System.
Stars: ✭ 263 (-25.71%)
Mutual labels:  real-time, rtos, embedded
ez-rtos
A micro real-time operating system supporting task switching, delay function, memory allocator and critical section. It is writen on ARM Cortex-M3 assemble language, it runs successfully on STM32F103 MCU.
Stars: ✭ 57 (-83.9%)
Mutual labels:  arm, cortex-m, operating-system
ewok-kernel
A secure and high performances microkernel for building secure MCU-based IoTs
Stars: ✭ 69 (-80.51%)
Mutual labels:  arm, microcontroller, embedded
Svd2rust
Generate Rust register maps (`struct`s) from SVD files
Stars: ✭ 347 (-1.98%)
Mutual labels:  arm, microcontroller, cortex-m

distortos

object-oriented C++ RTOS for microcontrollers

Homepage
Documentation
Source Code @ GitHub
Forum

Build Test
Test Board Generator
Unit Tests

Configuration & building

To configure & build distortos you need:

distortos tries to follow typical CMake cross-compiling workflow, which means that you always have to use a so-called toolchain file. Toolchain files in distortos also serve another purpose - they select the board which is going to be used by your application.

  1. Download source package of distortos in zip or tar.gz format and extract it;
  2. Create a build folder, for example output;
  3. From within the build folder, initialize it with CMake, for example with cmake .. -DCMAKE_TOOLCHAIN_FILE=../source/board/ST_STM32F4DISCOVERY/Toolchain-ST_STM32F4DISCOVERY.cmake -GNinja if you want a default configuration or cmake -C../configurations/ST_STM32F4DISCOVERY/test/distortosConfiguration.cmake .. -GNinja if you want to start from a saved configuration;
  4. Edit distortos configuration with a tool of your choice, for example cmake-gui .. (a GUI application) or ccmake .. (curses-based application);
  5. Execute selected build tool, for example ninja or ninja -v if you want to see all command lines while building;

You can obviously replace step 1 with git clone https://github.com/DISTORTEC/distortos.

Steps 2-4 can be all done from within cmake-gui. After starting the application use Browse Source... button to select the folder with distortos and Browse Build... button to select the build folder. Then click on Configure button. In the CMakeSetup window which appears select the generator of your choice and make sure that Specify toolchain file for cross-compiling is selected before going any further. Click Next and specify the toolchain file (which also selects the board), for example <source-folder>/source/board/ST_STM32F4DISCOVERY/Toolchain-ST_STM32F4DISCOVERY.cmake and click Finish button.

Test application

The default target of build - all - is just the static library with distortos libdistortos.a. If you want to build the test application, specify distortosTest as the target (for example ninja distortosTest if you use Ninja).

tl;dr

$ wget https://github.com/DISTORTEC/distortos/archive/master.tar.gz
$ tar -xf master.tar.gz
$ cd distortos-master
$ mkdir output
$ cd output
$ cmake .. -DCMAKE_TOOLCHAIN_FILE=../source/board/ST_STM32F4DISCOVERY/Toolchain-ST_STM32F4DISCOVERY.cmake -GNinja
$ cmake-gui ..
$ ninja

or

$ wget https://github.com/DISTORTEC/distortos/archive/master.tar.gz
$ tar -xf master.tar.gz
$ cd distortos-master
$ mkdir output
$ cd output
$ cmake -C../configurations/ST_STM32F4DISCOVERY/test/distortosConfiguration.cmake .. -GNinja
$ cmake-gui ..
$ ninja

Generating board

To generate a board you need:

  • Python (version 2.7, version 3.6 or later);
  • Jinja2 template engine for Python (version 2.10 or later);
  • ruamel.yaml YAML loader/dumper package for Python;

Both Jinja2 and ruamel.yaml can be easily installed with pip install jinja2 && pip install ruamel.yaml (or python -m pip install jinja2 followed by python -m pip install ruamel.yaml on Windows), however they may also be available in the package manager of your system.

Board generator - scripts/generateBoard.py - takes a *.yaml file as an input and produces a folder containing various board files: source files, headers, CMake files (including CMake toolchain file) and so on. The input *.yaml file describes the board hardware in a tree-like form. The idea is very close to devicetree and in fact earlier versions of board generator used devicetree files.

To get an idea about the format of the board YAML files, take a look at some of the existing files, for example source/board/ST_STM32F4DISCOVERY/ST_STM32F4DISCOVERY.yaml - which describes STM32F4DISCOVERY board from ST - or source/chip/STM32/STM32F4/chipYaml/ST_STM32F407VG.yaml - which describes STM32F407VG chip used on this board. There is also some documentation about YAML bindings in documentation/yaml-bindings

Assuming that you already have distortos either as part of your project or as a standalone folder, the basic invocation of the board generator is just path/to/distortos/scripts/generateBoard.py path/to/board.yaml (or python path/to/distortos/scripts/generateBoard.py path/to/board.yaml on Windows), for example ./scripts/generateBoard.py source/board/ST_STM32F4DISCOVERY/ST_STM32F4DISCOVERY.yaml. You may also generate so-called raw-boards, using chip YAML file as the input directly, for example ./scripts/generateBoard.py source/chip/STM32/STM32F4/chipYaml/ST_STM32F407VG.yaml -o output/path/of/raw/board.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].