Embox is a configurable RTOS designed for resource constrained and embedded systems

Overview

Embox 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-
   

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 , break : ).

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

Comments
  • risc-v version command wrong output

    risc-v version command wrong output

    template: riscv/qemu-sifive-u qemu: 4.1.0 gcc:

    $ riscv64-unknown-elf-gcc --version
    riscv64-unknown-elf-gcc (SiFive GCC 8.2.0-2019.05.3) 8.2.0
    
    $qemu-system-riscv32 -nographic -machine sifive_u -kernel embox
    ***
    [email protected]:/#version                                                            
    
    .------.          _
    |  ____|         | | 
    | |____ _ __ ___ | |_    _____  __
    |  ____| '_ ` _ \|  _ \ / _ \ \/ /
    | |____| | | | | | |_) | (_) >  <  
    |______|_| |_| |_|____/ \___/_/\_\
    
    Tue Jan 28 18:30:00 MSK 2020
    
    Compiler: 8.2.0
    

    On host:

    $ date
    Tue Jan 28 19:24:41 MSK 2020
    

    But version works fine on x86 and arm.

    invalid arch:risc-v 
    opened by alexkalmuk 29
  • modified: riscv_clk.c and qemu-sifive-u/mods.config

    modified: riscv_clk.c and qemu-sifive-u/mods.config

    Closes #1791 The recommended frequency of sifive coreclk is 1.0 GHz. include embox.arch.system(core_freq=1000000000) #define HZ 100000 then the clock works correctly

    opened by Painkhw 28
  • Implemented functions feof(), ferror() and clearerr()

    Implemented functions feof(), ferror() and clearerr()

    closes #997: Implementing ferror and friends and closes #1746 I have added functionality for detection of EOF and any ERR in the files->flags by creating macros IO_EOF_ (0x0010) and IO_ERR_ (0x0020) and updating files->flags, whenever any file IO function encounters EOF or any kind of error occurs, which is detected by functions feof() and ferror() and cleared by clearerr(). file IO functions where EOF may occur -> fread() file IO functions where ERR is set -> fflush(), fread(), fseek() and fwrite().

    opened by Suraj-Upadhyay 22
  • STM32F4 default config keeps restarting

    STM32F4 default config keeps restarting

    Using arm/stm32f4-discovery default configuration, immediately after exec'ing tish and showing the prompt, it show the following error and restarts.

    Started shell [tish] on device [diag]
    loading start script:
    (...)
    > ifconfig lo 127.0.0.1 netmask 255.0.0.0 up
    > route add 127.0.0.0 netmask 255.0.0.0 lo
    > ifconfig eth0 192.168.1.128 netmask 255.255.255.0 hw ether AA:BB:CC:DD:EE:02 up
    > route add 192.168.1.0 netmask 255.255.255.0 eth0
    embox>
    
      ______
     |  ____|                                            __          __
     | |___  _ __ ___            ____  ____  ____  _____/ /   _____ / /
     |  ___|| '_ ` _ \          / __ \/ __ \/ __ \/ ___/ /   |_____| |
     | |____| | | | | |_ _ _   / /_/ / /_/ / /_/ (__  )_/    |_____| |
     |______|_| |_| |_(_|_|_)  \____/\____/ .___/____(_)           | |
                                         /_/                        \_\
     ASSERTION FAILED on CPU 0
            at src/kernel/irq.c:163
            in function irq_dispatch
    
    irq_stack_protection() == 0
    
            (Stack overflow detected on irq dispatch)
    Embox kernel start
            unit: initializing embox.arch.arm.fpu.fpv5:
    (...)
    

    After bisecting the tree, the bug started at: 84747575fc6d87bbca4e1a1d713a4ca6265c4794 : third-party: Porting new version of linenoise

    Obs: There are two different observable behaviors: The one explained previously happens after 84747575fc6d87bbca4e1a1d713a4ca6265c4794, and before 4d092c573d10883c0cef3f8bad7b68d6d3f42414: drivers: Refactor cortexm systick. It changes after 4d092c573d10883c0cef3f8bad7b68d6d3f42414, showing the following instead:

    > ifconfig lo 127.0.0.1 netmask 255.0.0.0 up
    > route add 127.0.0.0 netmask 255.0.0.0 lo
    > ifconfig eth0 192.168.1.128 netmask 255.255.255.0 hw ether AA:BB:CC:DD:EE:02 up
    > route add 192.168.1.0 netmask 255.255.255.0 eth0
    
    done
    runlevel: init level is 3
    

    apparently, leaving 'gracefully' the shell, however leaving the system without ways of interacting with it anymore.

    Just reverting 84747575fc6d serves as a workaround, however 4d092c573d10 probably implies a different bug is occurring.

    opened by ThePiGrepper 17
  • driver: clock: Add driver support for SP804

    driver: clock: Add driver support for SP804

    This adds driver support for ARM Dual-Timer Module (SP804) which is emulated in qemu-vexpress-a9.

    This closes #1769.

    Signed-off-by: Nishant Malpani [email protected]

    opened by layman-n-ish 17
  • compat: Add atexit()

    compat: Add atexit()

    • static implementation of atexit() with ATEXIT_MAX=32 registered functions.

    I wrote this yesterday so I thought it could be useful after seeing that an issue was opened for it. It's a simple static solution. Expanding it to one that allocates memory would be relatively simple, although I don't know if it would be actually needed. It might solve #1816 .

    module:kernel compat 
    opened by ThePiGrepper 17
  • Third-party: BSP: Port Embox to Nucleo-l476rg

    Third-party: BSP: Port Embox to Nucleo-l476rg

    Add the BSP and template for the ST's Nucleo-l476rg Board. This closes #2034 It builds correctly but I have to test it on the board.

    Signed-off-by: Puranjay Mohan [email protected]

    opened by puranjaymohan 16
  • add test for pthread_kill

    add test for pthread_kill

    Close #1716 Done with several problems.

    • Send signal 0 with pthread_kill will return -1
    • Send signal to terminated threads behave wierd (Even crashed when the signal is SIGALRM)
    opened by nilCux 16
  • Mirror Linux lsblk command

    Mirror Linux lsblk command

    Fixes #1699

    • This PR improves the available lsblk command in Embox. It mirrors the linux lsblk command adding the -b, --bytes flags to choose the unit of displaying size.

      lsblk

    I tried multiple ways to round the value of size to the nearest integer but they all failed resulting in the error message posted on the issue page. The current behavior is typecasting the float to uint64_t (flooring).

    cmds 
    opened by ahmedkrmn 16
  • Implement 'du' command

    Implement 'du' command

    man du

    Implement only for regular files and it's enough to follow flags:

          -B, --block-size=SIZE
                  scale  sizes  by  SIZE  before printing them; e.g., '-BM' prints
                  sizes in units of 1,048,576 bytes; see SIZE format below
    
           -b, --bytes
                  equivalent to '--apparent-size --block-size=1'
    
    cmds Good First Issue 
    opened by anton-bondarev 15
  • Extend block_dev_test command with new options

    Extend block_dev_test command with new options

    block_dev_test command is a simple testing tool for block devices like hdd, usb, flash, etc. It checks that read/write routines work correct.

    We suggest extending the existing functionality with the following options:

    • Add parameter which specifies the block number at which the command should start at.
    • Add parameter which specifies blocks count to be tested.
    • Add option to read/write multiple blocks in a single iteration (currenly, we read/write only single block in one iteration)
    cmds Good First Issue 
    opened by alexkalmuk 15
  • Unable to Build Opencv

    Unable to Build Opencv

    Hi, I tried to build the opencv with stm32f746g-discovery template in Ubuntu 20.04 I am using the release version of embox-0.5.6

    Its downloading gcc version 6.3 and fails to compile it make confload-project/opencv/stm32f746g-discovery Config complete make -j4

    Failed as below checking for the correct version of gmp.h... no configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+. Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify

    then I ran this command to download those sources

    embox-0.5.6/build/extbld/third_party/gcc/gcc_build/gcc-6.3.0$ ./contrib/download_prerequisites

    and tried to compile gcc manually it fails at

    0.5.6/build/extbld/third_party/gcc/gcc_build/gcc-6.3.0/isl/include -o ubsan.o -MT ubsan.o -MMD -MP -MF ./.deps/ubsan.TPo ../.././gcc/ubsan.c ../.././gcc/ubsan.c: In function ‘bool ubsan_use_new_style_p(location_t)’: ../.././gcc/ubsan.c:1474:23: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]

    then after correcting this It got failed again at

    g++ -fno-PIE -c -DIN_GCC_FRONTEND -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -DHAVE_CONFIG_H -I. -I. -I../.././gcc -I../.././gcc/. -I../.././gcc/../include -I../.././gcc/../libcpp/include -I/home/prabhumk/Downloads/embox-0.5.6/build/extbld/third_party/gcc/gcc_build/gcc-6.3.0/host-x86_64-pc-linux-gnu/gmp -I/home/prabhumk/Downloads/embox-0.5.6/build/extbld/third_party/gcc/gcc_build/gcc-6.3.0/gmp -I/home/prabhumk/Downloads/embox-0.5.6/build/extbld/third_party/gcc/gcc_build/gcc-6.3.0/host-x86_64-pc-linux-gnu/mpfr -I/home/prabhumk/Downloads/embox-0.5.6/build/extbld/third_party/gcc/gcc_build/gcc-6.3.0/mpfr -I/home/prabhumk/Downloads/embox-0.5.6/build/extbld/third_party/gcc/gcc_build/gcc-6.3.0/mpc/src -I../.././gcc/../libdecnumber -I../.././gcc/../libdecnumber/dpd -I../libdecnumber -I../.././gcc/../libbacktrace -I/home/prabhumk/Downloads/embox-0.5.6/build/extbld/third_party/gcc/gcc_build/gcc-6.3.0/host-x86_64-pc-linux-gnu/isl/include -I/home/prabhumk/Downloads/embox-0.5.6/build/extbld/third_party/gcc/gcc_build/gcc-6.3.0/isl/include -o cc1-checksum.o -MT cc1-checksum.o -MMD -MP -MF ./.deps/cc1-checksum.TPo cc1-checksum.c g++: error: cc1-checksum.c: No such file or directory g++: fatal error: no input files compilation terminated.

    Is there anyway to skip the gcc compilation and use the inbuilt gcc compiler.

    Below the version of gcc and arm-gcc compilers in the system gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none:hsa OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)

    arm-none-eabi-gcc -v Using built-in specs. COLLECT_GCC=arm-none-eabi-gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-none-eabi/9.2.1/lto-wrapper Target: arm-none-eabi Configured with: ../configure --build=x86_64-linux-gnu --prefix=/usr --includedir='/usr/lib/include' --mandir='/usr/lib/share/man' --infodir='/usr/lib/share/info' --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir='/usr/lib/lib/x86_64-linux-gnu' --libexecdir='/usr/lib/lib/x86_64-linux-gnu' --disable-maintainer-mode --disable-dependency-tracking --mandir=/usr/share/man --enable-languages=c,c++,lto --enable-multilib --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --enable-tls --build=x86_64-linux-gnu --target=arm-none-eabi --with-system-zlib --with-gnu-as --with-gnu-ld --with-pkgversion=15:9-2019-q4-0ubuntu1 --without-included-gettext --prefix=/usr/lib --infodir=/usr/share/doc/gcc-arm-none-eabi/info --htmldir=/usr/share/doc/gcc-arm-none-eabi/html --pdfdir=/usr/share/doc/gcc-arm-none-eabi/pdf --bindir=/usr/bin --libexecdir=/usr/lib --libdir=/usr/lib --disable-libstdc++-v3 --host=x86_64-linux-gnu --with-headers=no --without-newlib --with-multilib-list=rmprofile CFLAGS='-g -O2 -fdebug-prefix-map=/build/gcc-arm-none-eabi-Gl9kT9/gcc-arm-none-eabi-9-2019-q4=. -fstack-protector-strong' CPPFLAGS='-Wdate-time -D_FORTIFY_SOURCE=2' CXXFLAGS='-g -O2 -fdebug-prefix-map=/build/gcc-arm-none-eabi-Gl9kT9/gcc-arm-none-eabi-9-2019-q4=. -fstack-protector-strong' FCFLAGS='-g -O2 -fdebug-prefix-map=/build/gcc-arm-none-eabi-Gl9kT9/gcc-arm-none-eabi-9-2019-q4=. -fstack-protector-strong' FFLAGS='-g -O2 -fdebug-prefix-map=/build/gcc-arm-none-eabi-Gl9kT9/gcc-arm-none-eabi-9-2019-q4=. -fstack-protector-strong' GCJFLAGS='-g -O2 -fdebug-prefix-map=/build/gcc-arm-none-eabi-Gl9kT9/gcc-arm-none-eabi-9-2019-q4=. -fstack-protector-strong' LDFLAGS='-Wl,-Bsymbolic-functions -Wl,-z,relro' OBJCFLAGS='-g -O2 -fdebug-prefix-map=/build/gcc-arm-none-eabi-Gl9kT9/gcc-arm-none-eabi-9-2019-q4=. -fstack-protector-strong' OBJCXXFLAGS='-g -O2 -fdebug-prefix-map=/build/gcc-arm-none-eabi-Gl9kT9/gcc-arm-none-eabi-9-2019-q4=. -fstack-protector-strong' INHIBIT_LIBC_CFLAGS=-DUSE_TM_CLONE_REGISTRY=0 AR_FOR_TARGET=arm-none-eabi-ar AS_FOR_TARGET=arm-none-eabi-as LD_FOR_TARGET=arm-none-eabi-ld NM_FOR_TARGET=arm-none-eabi-nm OBJDUMP_FOR_TARGET=arm-none-eabi-objdump RANLIB_FOR_TARGET=arm-none-eabi-ranlib READELF_FOR_TARGET=arm-none-eabi-readelf STRIP_FOR_TARGET=arm-none-eabi-strip Thread model: single gcc version 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] (15:9-2019-q4-0ubuntu1)

    opened by pkuppusamy77 5
  • add Embox article to English Wikipedia

    add Embox article to English Wikipedia

    @anton-bondarev

    Embox is mentioned in https://en.wikipedia.org/wiki/Comparison_of_real-time_operating_systems but I can't find the Embox article in the English Wikipedia. There is https://ru.wikipedia.org/wiki/Embox but there is no https://en.wikipedia.org/wiki/Embox .

    opened by frantony 1
Releases(v0.5.7)
  • v0.5.7(Oct 23, 2022)

    • Improved E2k support
    • Started port Rust language
    • Improved pthread and signals
    • Improved dev_conf
    • Added motor driver API
    • Improved math lib
    • Improve build system
    • a lot of fixes and improvements
    Source code(tar.gz)
    Source code(zip)
  • v0.5.6(Apr 1, 2022)

    • Improved builtin libm implamentation
    • Improved RISC-V support
    • Improved E2k arch support
    • Improved USB stack
    • Improved PCI subsystem
    • Improved usb-net
    • Added PCI MSI subsystem
    • A lot of fixes and improvements
    Source code(tar.gz)
    Source code(zip)
  • v0.5.5(Jan 1, 2022)

    • Improved USB stack
    • Improved Audio subsystem
    • Improved E2k architecture support
    • Improved file system subsystem
    • Improved STM32 support (including USB host & audio drivers)
    • Added new boards support (including stm32f411-blackpill, stm32f429i-discovery)
    • Improved LVGL support
    • A lot of fixes and improvements.
    Source code(tar.gz)
    Source code(zip)
  • v0.5.4(Oct 1, 2021)

    • Improved file subsystem
    • Improved STM32 USB host driver
    • Reworked init subsystem
    • Started DMA subsystem
    • Improved Raspberry PI support
    • Improved SPI subsystem
    • Improved SDL2 support
    • Ported NPF, libpcap and several other libraries
    • Improved compatibility layers
    • A lot of fixes and improvements
    Source code(tar.gz)
    Source code(zip)
  • v0.5.3(Jul 1, 2021)

    • Improved C++ support
    • Improved input devices subsystem
    • Improved RaspberryPI support
    • Added 'button' input devices type
    • Added BFK board support (Baikal-T1 CPU)
    • Added STM32H745i-discovery board support
    • Added STM32 USB-HCD driver
    • Ported paho-mqtt-cpp
    • A lot of fixes and improvements
    Source code(tar.gz)
    Source code(zip)
  • v0.5.2(Apr 1, 2021)

    • Improved FS. Clean FS and rework some FS drivers
    • Improved EFM32 support
    • Improved build system
    • Ported LVGL
    • Ported paho.mqtt.c library
    • Added Nucleo f030r8 platform
    • Improved MAiX-bit support
    • Reworked sd card driver for STM32
    • A lot of fixes and improvements
    Source code(tar.gz)
    Source code(zip)
  • v0.5.1(Dec 31, 2020)

    • Added JS support (duktape)
    • Improved STM32 platforms
    • Added STM32H7 series support
    • Added RTC subsystem
    • Improved efm32zg sk3200
    • Added UHCI USB host controller support
    • Improved time & clock sources subsystems
    • Improved C++ support
    • Improved block_dev subsystem
    • Improved input devices subsystem
    • Improved Qt support
    • A lot of fixes and improvements
    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Oct 23, 2020)

    • Improved STM32Cube support (add f1, clean f3, f4,f7, l4)
    • Improved Dialog support (Enable extended sleep mode, clean)
    • Separated tasks and threads
    • Enabled thread stack settings
    • Enabled NETLINK socket support
    • Added I2C combined transactions support
    • Improved dns settings
    • Fixed cadence gem net driver
    • Cleaned ttyS
    • Cleaned devfs
    • Clean some projects (Quake3, Mesa3d, PJSIP ...)
    • A lot of fixes and improvements
    Source code(tar.gz)
    Source code(zip)
  • v0.4.3(Sep 1, 2020)

    • Improved build system
      • Switched build to absolute paths
      • Added folder 'project'
      • Enabled ext_project
      • Started 'device tree' sub-system
    • Improved STM32
      • Enabled cache for STM32F7
      • Switched stm32_uart to 'device tree' config
      • Cleaned ports for f4 & f7 series
      • Switched to 'Cube's from github
      • Enabled UDC driver
    • Improved RISC-V support
      • Added 'MAiX BiT' board support
      • Improved timer
      • Improved 64bits version
      • Improved interrupts
    • Improved USB-gadget subsystem
    • Improved graphic subsystem
    • Improved Qt4 support
    • Improved OpenCV support
    • A lot of fixes and improvements
    Source code(tar.gz)
    Source code(zip)
  • v0.4.2(Jul 1, 2020)

    • Added support RISCV64 arch
    • Improved support RISCV arch
    • Reworked irq subsystem for cortex-m (static irq)
    • Improved timer subsystem
    • Added support nucleo-f429zi & nucleo-l476rg
    • Added support Dialog MCUs (da14680 & da14695)
    • Worked on network subsystems
    • Reworked USB host stack
    • Started work on USB gadgets
    • Reworked input devices subsystem
    • Added touchscreen support
    • A lot of fixes
    Source code(tar.gz)
    Source code(zip)
  • v0.4.1(Apr 1, 2020)

    • Restored working on Raspberry Pi
    • Improved RISC-V (context switch, vfork, etc.)
    • Improved imx6 support (reworked some drivers)
    • Added USB support for imx6
    • Improved USB ehci driver
    • Reworked USB stack
    • Reworked file subsystem
    • Restored DumbFS on STM32
    • Enabled lua on STM32
    • Improved dwc_gmac network driver
    • Added ethernet driver for Elbrus (Monocub)
    • Enable ethernet driver for Baikal-t CPU
    • A lot of fixes and changes
    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(Jan 9, 2020)

    • Added RISC-V support
    • Added some platforms support
      • MIPS (baikal-t)
      • RISC-V (qemu virt, sifive-e & sifive-u)
      • ARM (de0-nano-soc (cyclon-v fpga), stm32l4-discovery)
    • Reworked, improved and clean file systems
      • Hard reworked file sub-system
      • Fixed some fs drivers (fat, nfs, cifs).
      • Cleaned VFSes (oldfs & dvfs)
      • Added inode_operations to oldfs in devfs
      • Unified some fs (drivers initfs, ramfs, fatfs)
    • Reworked block_dev sub-system
      • Unified oldfs & dvfs versions
      • Added lsblk command
      • Added partitions
    • Reworked USB-stack
      • Enabled usb-hubs
      • Added ehci hc driver
    • Designed MMC sub-system (enabled dw_mmc, pl181. sdhci)
    • Improved CI and added autotests system
    • Added some drivers (SPI, sensors, etc. )
    • A lot of fixes and improves
    Source code(tar.gz)
    Source code(zip)
  • v0.3.28(Oct 23, 2019)

    • Started porting RISC-V architecture (diag, setjmp)
    • Improved AArch64 architecture (vfork, MMU, start code)
    • Some fix in FS
    • Some fixes in TCP/IP
    • Refactored PCI subsystem
    • Improved USB (add ehci on qemu)
    • Improved some boards support
    • Added 'DE0 Nano SoC' board support
    Source code(tar.gz)
    Source code(zip)
  • v0.3.27(Aug 1, 2019)

    • Add support for AArch64
    • Add support for i.MX8
    • Improve C++ support
    • Enable Qt on STM32F7-Discovery
    • Enable OpenCV on STM32F7-Discovery
    • Improve ld script declarations in templates
    • A lot of improvements in memory management subsystem
    • Enable MMU for 'e2k' arch
    • Improve support of STM32 Discovery boards
    • A lot of fixes
    Source code(tar.gz)
    Source code(zip)
  • v0.3.26(May 3, 2019)

    • Improved C++ support;
    • Improved mmap and mmu subsystems;
    • Improved POSIX compatible layer;
    • Enabled some features in E2K (irq, timers, setjmp, context_switch);
    • Improved graphic subsystem (double-buffering, gallium for etnaviv, some libraries);
    • Added and fixed some tests in CI;
    • Fixed some problems in telnet (tty, exit, stm32fxx);
    • Improved STM32xxx;
    • A lot of fix and cleanings;
    Source code(tar.gz)
    Source code(zip)
  • v0.3.25(Feb 17, 2019)

    • Improve Mesa3d support
    • Rework character devices subsystem
    • Port Quake3
    • Enable SIP-phone on qemu-system-i386 and stm32f7discovery
    • Add I2C subsystem
    • Add SPI subsystem
    • Rework GPIO subsystem
    • Update dropbear
    • Fix a lot of templates
    • Fix many bugs
    Source code(tar.gz)
    Source code(zip)
  • v0.3.24(Oct 23, 2018)

    • Fixed a lot of templates;
    • Fixed support some platforms;
    • Improved fs;
    • Fixed gcc 8 compilation;
    • Fixed c++ compilation;
    • Added some platforms support;
    • Improved etnaviv 3d driver for imx6;
    Source code(tar.gz)
    Source code(zip)
  • v0.3.23(Sep 3, 2018)

    • Started supporting E2K arch
    • Improved STM32Fx platform
    • Improved ARM arch
    • Improved IP stack and network subsystem
    • Improve graphics for IMX6
    • Some another drivers
    • A lot of another fixes
    Source code(tar.gz)
    Source code(zip)
  • v0.3.22(Jun 30, 2018)

    * Enable ARM FPU (vfp)
    * Fix ti816 and other cortex-a8 templates
    * Add a new platform arm/am3505
    * Fix a lot of drivers
    * Fix build qemu templates for all archs
    * Enable init_log()
    * Improve ARM arch code
    * Fix builds with O2
    
    Source code(tar.gz)
    Source code(zip)
  • v0.3.21(Mar 31, 2018)

  • v0.3.20(Dec 31, 2017)

    • Enabled nuklear examples
    • Improved support ARM MMU
    • Improved imx6 platform
      • Added LVDS video output
      • Updated clocks
      • Enabled swrast mesa example
    • Improved STM32F7 platform
    • Improved video subsystems
    • Improved docker support
    • Improved testing on CI (travis)
    • Added a new 'loadable' applications
    • Fixed a lot of templates
    • Fixed some problems with gcc6
    Source code(tar.gz)
    Source code(zip)
  • v0.3.19(Sep 1, 2017)

    • stm32f7 support improved;
    • Xen support improved;
    • Some errors in FS on stm32xxx fixed;
    • ARMv7 architecture support improved;
    • PL111 framebuffer driver implemented;
    • Other minor bugs fixed (templates and stuff);
    Source code(tar.gz)
    Source code(zip)
  • v0.3.18(Jul 1, 2017)

    • Ported mesa for osmesa and swrast modes (enabled opengl)
    • Improved imx6 support (SPI, sdhc, pl310)
    • Fixed some bugs in network
    • Updated MIPS compiler flags
    • Improved mmap
    • Added timerfd api
    Source code(tar.gz)
    Source code(zip)
  • v0.3.17(Apr 1, 2017)

    • Added support ELVEES's el24d2 board (with ethernet driver);
    • Switched to a new STM32FxCube version;
    • Improved ARM MMU;
    • Added support STM32F7 (ethernet & LCD);
    • Improved microblaze/qemu template (enable telnet & httpd);
    • Added fec ethernet driver for imx6;
    • Enabled microphone in intel8x0 sound card
    Source code(tar.gz)
    Source code(zip)
  • v0.3.16(Jan 3, 2017)

    • Added sound subsystem:
      • microphone support
      • pl041 support (arm sound card)
    • Improved STM32 support:
      • Switched to stm32cube for all supported boards
      • Added STM32F7 discovery support (UART, timer, irq_ctrl)
    • Improved MMU support
    • Improved ARM arch
    • Added support nrf24l01
    • Added el24d2 development board support
    Source code(tar.gz)
    Source code(zip)
  • v0.3.15(Oct 24, 2016)

  • v0.3.14(Sep 1, 2016)

    • Reworked 'mmu' subsystem for 'x86' and 'arm'
    • Integrated 'libcoap'
    • Improved 'imx6' support
    • Added 'fec' ethernet driver
    • Cleaned project and remove some unsupported templates
    Source code(tar.gz)
    Source code(zip)
  • v0.3.13(Jul 1, 2016)

    • Add iMX6 boards support
    • Enable network for mipssim and integratorcp platforms
    • Qemu templates for x86, mips, arm architectures
    • New init process for "user" level
    Source code(tar.gz)
    Source code(zip)
  • v0.3.12(Apr 16, 2016)

    • Improve STM32Fx platform support
    • Improve 'dvfs' file subsystem
    • Add 'FUSE' and 'ext' driver for it
    • Improve IP stack
    • Improve ti816x net-driver
    Source code(tar.gz)
    Source code(zip)
  • v0.3.11(Jan 10, 2016)

Owner
Embox
Essential toolbox for embedded development
Embox
X-CUBE-AZRTOS-F4 (Azure RTOS Software Expansion for STM32Cube) provides a full integration of Microsoft Azure RTOS in the STM32Cube environment for the STM32F4 series of microcontrollers.

X-CUBE-AZRTOS-F4 Azure RTOS Software Expansion for STM32Cube With Azure RTOS complementing the extensive STM32Cube ecosystem providing free developmen

STMicroelectronics 28 Dec 7, 2022
X-CUBE-AZRTOS-F7 (Azure RTOS Software Expansion for STM32Cube) provides a full integration of Microsoft Azure RTOS in the STM32Cube environment for the STM32F7 series of microcontrollers.

X-CUBE-AZRTOS-F7 Azure RTOS Software Expansion for STM32Cube With Azure RTOS complementing the extensive STM32Cube ecosystem providing free developmen

STMicroelectronics 7 Nov 17, 2022
A place to collaborate on code for the Embedded.fm book club. Currently reading "STM32 ARM Programming for Embedded Systems".

Welcome to the Book Club Code site! This is a place for the Embedded.fm book club to collaborate and learn together. Repo Structure Guide Top-level fo

Peter Griffin 11 Jul 21, 2022
Realtime Micro Kernel -- Event-driven Run-to-Completion RTOS with Active Objects, Timed Events, Memory Pools, and Message Queues

Realtime Micro Kernel Features Active Objects Message queues Variable sized, custom messages Periodic and single timed events Memory pools Supported P

null 3 Nov 7, 2022
Because why not? Pi Zero bare metal project that ends in an RTOS implementation

PiZeroRTOS Because why not? This repo starts out as a Pi Zero bare metal project and it could very well end up as a viable RTOS implementation with a

null 7 Feb 13, 2022
A small RTOS for ARM Cortex-M3/M4 based Microcontrollers.

A tiny RTOS for ARM Cortex-M3/M4 based Microcontrollers. Explore the docs » View Demo · Report Bug · Request Feature Table of Contents About The Proje

Puranjay Mohan 34 Dec 31, 2022
Application server for constrained platforms

micurest Application server for constrained platforms Introduction μcuREST is a C++11 library for implementing REST services on constrained platforms,

Eugene Hutorny 18 Jan 21, 2022
CML - The Configurable Math Library

Configurable Math Library For CML version 1, please see https://github.com/demianmnave/CML1. License The Configurable Math Library (CML) is released u

null 81 Dec 30, 2022
Randomized configurable bodies for Skyrim: Anniversary Edition

autoBody AE A SKSE Plugin for distributing CBBE and HIMBO presets throughout the gameworld Configurable through morphs.ini files (optionally created b

null 10 Dec 14, 2022
A configurable in-memory binary patcher.

?? Lyptus ?? A configurable in-memory binary patcher. ?? Usage Set up the Lyptus config with a list of patches to apply, and inject the Lyptus DLL int

null 18 Dec 29, 2022
Fast glsl deNoise spatial filter, with circular gaussian kernel, full configurable

glslSmartDeNoise Fast glsl spatial deNoise filter, with circular gaussian kernel and smart/flexible/adaptable -> full configurable: Standard Deviation

Michele Morrone 212 Dec 24, 2022
AnalogWrite for ESP32 and ESP32-S2 with LEDC PWM. Includes PWM Phase Control, DAC and Smart GPIO resource management.

analogWrite() ESP32 Installation Instructions This library was tested using using the ESP32 Arduino IDE Boards Manager installation method. Stable rel

null 36 Jan 5, 2023
Tiny implementation of the GNU/Linux CGroupFS (sans resource controllers) as a PUFFS or FUSE filesystem for BSD platforms

CGrpFS CGrpFS is a tiny implementation of the GNU/Linux CGroup filesystem for BSD platforms. It takes the form of a either a PUFFS or FUSE filesystem,

null 13 Nov 8, 2022
Unix pager (with very rich functionality) designed for work with tables. Designed for PostgreSQL, but MySQL is supported too. Works well with pgcli too. Can be used as CSV or TSV viewer too. It supports searching, selecting rows, columns, or block and export selected area to clipboard.

Unix pager (with very rich functionality) designed for work with tables. Designed for PostgreSQL, but MySQL is supported too. Works well with pgcli too. Can be used as CSV or TSV viewer too. It supports searching, selecting rows, columns, or block and export selected area to clipboard.

Pavel Stehule 1.9k Jan 4, 2023
Embedded Flutter runtime targeting Embedded Linux with Wayland

ivi-homescreen IVI Homescreen for Wayland Strongly Typed (C++) Lightweight Clang 11 Release Stripped = 151k GCC 9.3 Release Stripped = 168k Source run

null 170 Dec 13, 2022
This is a project from my Embedded Systems Lab course. It's made using C and intended for the MSP430FG461 microcontroller.

This is a project from my Embedded Systems Lab course. It's made using C and intended for the MSP430FG461 microcontroller.

Ben Bruzewski 1 Dec 21, 2021
SAE J1939 protocol free to use for embedded systems or PC with CAN-bus

Open SAE J1939 SAE J1939 is a protocol for shaping the CAN-bus message in a specific way that suits industrial vehicles such as tractors, machinery, t

Daniel Mårtensson 127 Dec 23, 2022
Newlib for Xuantie RISC-V CPU, a lightweight C library for embedded systems.

README for GNU development tools This directory contains various GNU compilers, assemblers, linkers, debuggers, etc., plus their support routines, d

T-Head Semiconductor Co., Ltd. 5 Sep 9, 2022
F Graphics Library (FGL) is a small graphics C++ portable library for LCD displays on embedded systems

F Graphics Library (FGL) Full documentation: fgl.docsforge.com (By Filipe Chagas) F Graphics Library is a C++ library that I created for use in embedd

Filipe Chagas 9 Oct 31, 2022