Easy Embedded Framework (EZ Framework) is a lightweight, vendor-neutral, and modular framework designed to simplify embedded system development. It acts as the glue between application logic, hardware-dependent code (drivers, startup), and third-party libraries (RTOS, file systems, etc.), enabling rapid prototyping and robust production firmware.
- Hardware Abstraction Layer (HAL): Unified APIs for GPIO, UART, I2C, SPI, and more.
- Middleware Support: OS abstraction, file system (TBA).
- services Support: event bus, rpc, cli, data model, and more
- RTOS Integration: Out-of-the-box support for FreeRTOS, ThreadX, and bare-metal.
- Extensible Drivers: Easily add or swap hardware drivers.
- Cross-Platform: Build and test on Linux, WSL, or real hardware (STM32, Pi Pico, etc.).
- Comprehensive Testing: Modular unit tests and code coverage.
- Documentation: Sphinx-based docs and Doxygen API reference.
- Docker Support: Reproducible development environment.
- Getting Started
- Building
- Running Tests
- Documentation
- Project Structure
- Integration Guide
- Contributing
- License
- Roadmap
- Linux or WSL
- CMake ≥ 3.25
- GCC, Make
- Python 3
- Doxygen, Graphviz, gcovr (for docs/coverage)
Install dependencies:
sudo apt-get install build-essential cmake doxygen graphviz gcovr python3git clone https://github.com/QuangHaiNguyen/EasyEmbeddedFramework.git
cd EasyEmbeddedFrameworkList available build presets:
cmake --list-presetsRecommended build (e.g., ThreadX on Linux):
cmake --preset=linux_threadx_debug
cmake --build --preset=linux_threadx_debug./build_linux_threadx_debug/targets/linux_threadx/ez_targetBuild and run in Docker:
make docker_build_image
make docker_run_bashSee all commands:
make helpBuild and run all tests:
cmake --preset=linux_test_debug
cmake --build --preset=linux_test_debug
ctest --preset=linux_test_debugcmake --build --preset=linux_test_debug --target=coverage- API Docs: Generated with Doxygen
- User/Dev Docs: Sphinx (see
docs/)
Generate documentation:
cmake --build --preset=linux_test_debug --target=doxygenEasyEmbeddedFramework/
├── src/ # Framework source code (HAL, middleware, services, utilities)
├── inc/ # Public headers
├── tests/ # Unit and integration tests
├── targets/ # Example target projects (Linux, STM32, etc.)
├── extern/ # Third-party libraries (FreeRTOS, littlefs, etc.)
├── tools/ # Code generation and helper scripts
├── docs/ # Documentation (Sphinx, Doxygen)
├── dockerfile # Docker environment
├── CMakeLists.txt # Top-level build script
└── ...
To add EZ Framework to your project:
- Add as a subdirectory in your CMake project:
add_subdirectory(EasyEmbeddedFramework)
- Link the library:
target_link_libraries(YOUR_PROJECT PRIVATE easy_embedded_lib)
See docs/system_overview.rst and docs/system_architecture.rst for more details.
Contributions are welcome! Please see CONTRIBUTING.md (if available) or open an issue/PR.
- Bug reports and feature requests: GitHub Issues
- Pull requests: Please use the provided templates in
.github/PULL_REQUEST_TEMPLATE/
This project is licensed under the MIT License. See LICENSE for details.
- Implement interface to interact with network stack
- Implement interface to interact with filesystem
- Bug fix for v1.0.0
- TBD