EoS (CMake project EoS, v0.5.0) is a multi-platform embedded OS framework
written in pure C11: a lightweight RTOS kernel, a hardware abstraction layer
(HAL) with host (Linux) and bare-metal backends, a driver framework, and
networking, power-management, and runtime-service layers. Board/product
selection happens at configure time via descriptors in boards/ and profiles
in products/. (Provenance: README.md intro.)
kernel/— tasks, sync primitives, IPC, multicore — buildseos_kernelhal/— HAL platform split (hal_linux.c/hal_rtos.c, plushal_win32.c) — buildseos_haldrivers/— driver framework and thedevicetree/parser — buildseos_driversnet/— networking abstraction (POSIX backend on host builds; bare-metaleos_net_connect()returns-1) — buildseos_netpower/— power-management abstraction — buildseos_powercore/— OS config, logging, layer plumbingservices/— runtime services:crypto,security,os,linux,gps,motor,ota,filesystem,sensor,ui,init, and moresystems/— rootfs, image, and firmware assemblyboards/— board descriptor files (boards/*.yaml) plus linker scriptsproducts/— product-profile headers selected byEOS_PRODUCTlayers/,toolchains/,cmake/— layer definitions, cross-compile toolchain files, CMake helpersbackends/,sim/,pkg/,debug/— backend registry, simulation, packaging, debug (GDB stub, core dump)examples/— example apps (blink-gpio,ble-sensor, …)tests/— C unit tests plusfunctional/,fuzz/,performance/,simulation/docs/— full documentation set (mkdocs.yml); API docs viaDoxyfile
Requires CMake ≥ 3.16 and a C11 compiler (GCC/Clang; MSVC on Windows). Native host build:
cmake -B build/host -DCMAKE_BUILD_TYPE=Release
cmake --build build/host --parallelBuild options: EOS_BUILD_TESTS (default OFF), EOS_PLATFORM
(linux | rtos, default linux), EOS_PRODUCT (one of the product
profiles; empty = full build).
Cross-compile for a target board with a toolchain file:
cmake -B build/arm -G Ninja \
-DCMAKE_TOOLCHAIN_FILE=toolchains/arm-cortex-m4.cmake \
-DEOS_BUILD_TESTS=OFF
cmake --build build/arm --parallelEOS_PRODUCT=vbox_test is required alongside EOS_BUILD_TESTS=ON: the OTA,
sensor, motor, and power tests only compile against a product profile that
enables those services, and vbox_test is the profile meant for host-side
testing.
cmake -B build/host -DEOS_BUILD_TESTS=ON -DEOS_PRODUCT=vbox_test
cmake --build build/host --parallel
ctest --test-dir build/host --output-on-failure
python run_all_tests.pyPython tooling setup: pip install -r requirements-dev.txt (installs pytest
and pytest-cov). run_all_tests.py runs pytest over tests/unit,
tests/functional, tests/performance, and tests/simulation; direct run:
python -m pytest tests/ -v.
Not defined: no lint or format command is documented in README.md or
CONTRIBUTING.md. (A .clang-format and a .clang-tidy config file exist in
the tree, and ci.yml runs a cppcheck + clang-tidy static-analysis job, but
the repo documents no command to invoke a formatter or linter locally; C style
rules — C11, -Wall -Wextra clean, eos_ prefix, Doxygen doc comments — are
in CONTRIBUTING.md "Code Guidelines".)
See CONTRIBUTING.md: fork, create a feature branch (git checkout -b feat/my-feature), run the build and tests locally, then submit a pull request.
Follow Conventional Commits; the PR checklist requires zero-warning compiles on
GCC, Clang, and MSVC, passing tests, HAL stubs for new peripherals,
#ifdef platform guards, no GCC-only builtins without portable fallbacks, and
no hardcoded filesystem paths.
See SECURITY.md. Report vulnerabilities to security@embeddedos.org — do NOT
open public issues for vulnerabilities. Response within 48 hours.