All Projects → embox → Embox

embox / Embox

Licence: bsd-2-clause
Modular and configurable OS for embedded applications

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Embox

Frosted
Frosted: Free POSIX OS for tiny embedded devices
Stars: ✭ 194 (-66.32%)
Mutual labels:  kernel, os, posix, embedded
Tock
A secure embedded operating system for microcontrollers
Stars: ✭ 3,258 (+465.63%)
Mutual labels:  microcontroller, mcu, kernel, embedded
Daplink
Stars: ✭ 1,162 (+101.74%)
Mutual labels:  microcontroller, mcu, embedded
Lib Python
Blynk IoT library for Python and Micropython
Stars: ✭ 140 (-75.69%)
Mutual labels:  microcontroller, mcu, embedded
duckOS
Yet another hobby x86 UNIX-like operating system written in C and C++. Features a dynamically linked userspace, an in-house c standard library, and more! And yes, it runs DOOM.
Stars: ✭ 250 (-56.6%)
Mutual labels:  kernel, os, posix
Guilite
✔️The smallest header-only GUI library(4 KLOC) for all platforms
Stars: ✭ 5,841 (+914.06%)
Mutual labels:  microcontroller, mcu, embedded
Lvgl
Powerful and easy-to-use embedded GUI library with many widgets, advanced visual effects (opacity, antialiasing, animations) and low memory requirements (16K RAM, 64K Flash).
Stars: ✭ 8,172 (+1318.75%)
Mutual labels:  microcontroller, embedded, mcu
Nnom
A higher-level Neural Network library for microcontrollers.
Stars: ✭ 382 (-33.68%)
Mutual labels:  microcontroller, mcu, embedded
Fiwix
A UNIX-like kernel for the i386 architecture
Stars: ✭ 38 (-93.4%)
Mutual labels:  kernel, os, posix
Zephyr
Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
Stars: ✭ 5,335 (+826.22%)
Mutual labels:  microcontroller, mcu, embedded
kernel
Main kernel tree
Stars: ✭ 28 (-95.14%)
Mutual labels:  kernel, os, posix
rnk
rnk is a RTOS targeting ARM architecture.
Stars: ✭ 22 (-96.18%)
Mutual labels:  microcontroller, kernel, mcu
Incubator Nuttx
Apache NuttX is a mature, real-time embedded operating system (RTOS)
Stars: ✭ 591 (+2.6%)
Mutual labels:  microcontroller, mcu, 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 (-88.72%)
Mutual labels:  microcontroller, mcu, embedded
Dennix
Dennix is a unix-like hobbyist operating system written from scratch.
Stars: ✭ 53 (-90.8%)
Mutual labels:  kernel, os, posix
Embedded UKF Library
A compact Unscented Kalman Filter (UKF) library for Teensy4/Arduino system (or any real time embedded system in general)
Stars: ✭ 31 (-94.62%)
Mutual labels:  microcontroller, embedded, mcu
beeos
A simple "Unix-like" kernel trying to be POSIX compliant
Stars: ✭ 103 (-82.12%)
Mutual labels:  kernel, os, posix
ens
Supports de cours
Stars: ✭ 13 (-97.74%)
Mutual labels:  kernel, os, posix
Pyocd
Open source Python library for programming and debugging Arm Cortex-M microcontrollers
Stars: ✭ 550 (-4.51%)
Mutual labels:  microcontroller, mcu, embedded
Platformio Core
PlatformIO is a professional collaborative platform for embedded development 👽 A place where Developers and Teams have true Freedom! No more vendor lock-in!
Stars: ✭ 5,539 (+861.63%)
Mutual labels:  microcontroller, embedded

Embox Build Status Coverity Scan Build Status

Embox is a configurable RTOS designed for resource constrained and embedded systems. Embox main idea is using Linux software without Linux.

Achievements

Key features

  • POSIX-compliant
  • C++ support
  • File systems: FAT, ext2/3/4, ...
  • TCP/IP: BSD sockets; supported protocols: UDP, HTTP, ARP, NTP, ICMP, ...
  • Cross-platform: ARM, MIPS, x86, Microblaze, SPARC, PowerPC, E2K
  • Popular platforms: STM32, i.MX6, RaPi, ...
  • Provides popular desktop software on MCU (e.g. STM32): Qt, OpenCV, PJSIP, dropbear, ...
  • Unix-like shell utilities: ls, cat, mount, ...
  • Popular programming languages: java, python, lua, tcl, lisp, ruby

Contacts

Mailing lists:

Telegram chats:

Documentation

Getting started

Here's a quick overview on how to build and run Embox.

Required environment:

  • gcc and make
  • cross compiler for the target platform

Preparing environment

For Debian-based systems (most packages are installed out of box though):

$ sudo apt-get install build-essential gcc-multilib curl libmpc-dev python

For Arch Linux:

$ sudo pacman -S make gcc-multilib cpio qemu

For MAC OS X (requires MacPorts installed):

$ sudo port install i386-elf-gcc i386-elf-binutils cpio gawk qemu

For any system with Docker (more info on wiki Emdocker):

$ ./scripts/docker/docker_start.sh
$ . ./scripts/docker/docker_rc.sh

Building Embox

First of all:

$ git clone https://github.com/embox/embox.git embox
$ cd embox

Since Embox is highly configurable project, it is necessary to specify modules to be built and params for them. To build the OS make command is used. All commands described below are called from the embox directory, which includes src/, templates/, ...

Configuring the project

For configuring it is needed to specify params and modules supposed to be included into the system. Embox has several templates prepared, to list them use the following command:

$ make confload

The simplest way to load a template is to specify its name in the command:

$ make confload-<template>

For the quick overview you can use one of qemu templates that exist for most architectures, that is, x86/qemu for x86:

$ make confload-x86/qemu

Building the image

After configuring the project just run make to build:

$ make

Running on QEMU

The resulting image can now be run on QEMU. The simplest way is to execute ./scripts/qemu/auto_qemu script:

$ sudo ./scripts/qemu/auto_qemu

sudo is requried to setup a TUN/TAP device necessary to emulate networking.

After the system is loaded, you’ll see the embox> prompt, now you are able to run commands. For example, help lists all existing commands.

To test the connection:

ping 10.0.2.16

If everything's fine, you can connect to the Embox terminal via telnet.

To exit Qemu type ctrl + A and X after that.

Debugging

You can use the same script with -s -S -no-kvm flags for debugging:

$ sudo ./scripts/qemu/auto_qemu -s -S -no-kvm

After running that QEMU waits for a connection from a gdb-client. Run gdb in the other terminal:

$ gdb ./build/base/bin/embox
...
(gdb) target extended-remote :1234
(gdb) continue

The system starts to load.

At any moment in gdb terminal you can type ctrl + C and see the stack of the current thread (backtrace) or set breakpoints (break <function name>, break <file name>:<line number>).

Other architectures

Embox supports the following CPU architectures: x86, ARM, Microblaze, SPARC, PPC, MIPS.

In order to work with architectures other than x86 you'll need a cross compiler. After installing the cross compiler just repeat the step above, starting with configuring:

make confload-<arch>/qemu
make
sudo ./scripts/qemu/auto_qemu

The output is quite the same as in the case of the x86 architecture.

Networking support

Embox supports networking on qemu x86, ARM, MIPS and Microblaze.

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].