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.