This repository contains software components, configuration profiles, and tools for developing and deploying embedded system applications. It supports multiple target architectures (e.g., ARM Cortex-M, RISC-V) and integrates with real-time operating systems (RTOS), bare-metal environments, or custom hardware abstraction layers (HALs).
- β Modular architecture (Drivers, Middleware, RTOS Abstraction)
- β Support for multiple MCUs and development boards
- β Real-time capabilities with optional RTOS integration (FreeRTOS, Zephyr, etc.)
- β HAL/LL driver layer abstraction
- β Firmware configuration and device profiles
- β Peripheral support (I2C, SPI, UART, ADC, PWM, etc.)
- β Build system compatibility: Make, CMake, and PlatformIO
- β Unit testing and simulation stubs for host-side development
βββ config/ # Board-specific configurations and profiles
βββ drivers/ # Low-level peripheral drivers
βββ middleware/ # Protocol stacks or libraries (e.g., MQTT, Modbus)
βββ rtos/ # RTOS abstraction layer
βββ utils/ # Logging, debugging, timebase, etc.
βββ examples/ # Sample applications and test cases
βββ docs/ # Documentation and design notes
βββ tests/ # Unit tests and host simulation
βββ CMakeLists.txt # Build configuration
βββ README.md # Project overview (this file)
## βοΈ Features
- π **Modular Drivers** for peripherals like GPIO, UART, I2C, SPI, ADC, PWM
- π **Middleware Support** (e.g., MQTT, Modbus, BLE, LoRa)
- β±οΈ **RTOS Ready** with abstraction for FreeRTOS, Zephyr, or custom kernels
- π§© **Configuration Profiles** for easy board and MCU switching
- π§ͺ **Unit Tests & Host Simulation** with stub/mock layers
- π **In-Repo Documentation** to support architecture understanding and onboarding
- π οΈ **Cross-platform Build System** via `CMake` (can support Make or PlatformIO)
- GCC toolchain (e.g., arm-none-eabi-gcc)
- Python 3.x (for scripts and utilities)
- CMake or Make
- Optional: PlatformIO, Docker, QEMU for simulation
mkdir build
cd build
cmake
make flash
Make sure your device is connected and debugger (e.g., ST-Link, J-Link) is configured properly.
Unit tests can be run on host using stubs/mocks. Navigate to the tests/ directory:
cd tests
make test
Documentation is available in the docs/ folder. Key topics include:
- System Architecture
- Driver & HAL Layer Design
- RTOS Integration
- Debugging & Logging Setup
- Deployment Guide
- STM32F103 (Blue Pill)
- STM32F4 Discovery
- ESP32 DevKit
- NXP LPC1768
- β Add your own via /config/
Configuration profiles are defined in the config/ directory. These include:
- Clock & PLL settings
- Peripheral enable/disable
- Linker script and memory layout
- Startup sequences
Use config/profile_selector.h to switch between board targets.
This project is licensed under the MIT License.
Contributions are welcome! Please:
- Fork the repo
- Create a feature branch
- Submit a pull request
See CONTRIBUTING.md for full guidelines.