IntroductionΒΆ

What is Nexus?ΒΆ

Nexus is a world-class embedded software development platform designed for building reliable, secure, and portable embedded applications. It provides a comprehensive set of abstraction layers and middleware components that enable developers to write code once and deploy across multiple MCU families.

Key FeaturesΒΆ

  • Unified APIs: Consistent interfaces across different hardware platforms

  • Portability: Write once, run on multiple MCU families (STM32, ESP32, nRF52)

  • Quality: MISRA C compliant, thoroughly tested code with 90%+ coverage

  • Security: Built-in security features for IoT applications

  • Real-time: Support for FreeRTOS and bare-metal configurations

  • Ecosystem: Rich middleware, cloud integration, and tooling

Why Nexus?ΒΆ

For Embedded Developers:

  • Reduce time-to-market with ready-to-use components

  • Focus on application logic instead of low-level drivers

  • Easy migration between MCU platforms

For Teams:

  • Consistent coding standards across projects

  • Comprehensive documentation and examples

  • Active community and support

Architecture OverviewΒΆ

Nexus follows a layered architecture that separates hardware-specific code from application logic:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      Applications                            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                      Middleware                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”‚
β”‚  β”‚  Shell  β”‚ β”‚   Log   β”‚ β”‚  Config β”‚ β”‚  Event  β”‚           β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                         OSAL                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”‚
β”‚  β”‚  Task   β”‚ β”‚  Mutex  β”‚ β”‚  Queue  β”‚ β”‚  Timer  β”‚           β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                          HAL                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”‚
β”‚  β”‚  GPIO   β”‚ β”‚  UART   β”‚ β”‚   SPI   β”‚ β”‚   I2C   β”‚           β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                    Platform / Hardware                       β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”‚
β”‚  β”‚ STM32F4 β”‚ β”‚ STM32H7 β”‚ β”‚  ESP32  β”‚ β”‚  nRF52  β”‚           β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Layer DescriptionsΒΆ

Application Layer

User applications built on top of Nexus platform.

Middleware Layer

Common services including logging, shell, configuration management, and event handling.

OSAL (OS Abstraction Layer)

Portable interface for RTOS primitives: tasks, mutexes, semaphores, queues, and timers. Supports FreeRTOS and bare-metal backends.

HAL (Hardware Abstraction Layer)

Unified API for hardware peripherals: GPIO, UART, SPI, I2C, Timer, ADC. Hides hardware differences from application code.

Platform Layer

MCU-specific implementations including startup code, linker scripts, and vendor SDK integration.

Supported PlatformsΒΆ

Platform

MCU

Status

RTOS Support

STM32F4

STM32F407VGT6

βœ…

FreeRTOS, Bare

STM32H7

STM32H743ZIT6

🚧

FreeRTOS, Bare

ESP32

ESP32-WROOM-32

🚧

FreeRTOS

nRF52

nRF52840

🚧

FreeRTOS, Zephyr

Native

x86/x64

βœ…

pthreads

Legend: βœ… Supported, 🚧 In Progress

Project StructureΒΆ

nexus/
β”œβ”€β”€ hal/                    # Hardware Abstraction Layer
β”‚   β”œβ”€β”€ include/            # Public headers
β”‚   └── src/                # Common HAL code
β”œβ”€β”€ osal/                   # OS Abstraction Layer
β”‚   β”œβ”€β”€ include/            # Public headers
β”‚   └── adapters/           # RTOS adapters (FreeRTOS, native)
β”œβ”€β”€ framework/              # Middleware components
β”‚   └── log/                # Logging framework
β”œβ”€β”€ platforms/              # Platform-specific code
β”‚   β”œβ”€β”€ stm32f4/            # STM32F4 platform
β”‚   └── native/             # Native (PC) platform
β”œβ”€β”€ applications/           # Example applications
β”œβ”€β”€ tests/                  # Unit tests
β”œβ”€β”€ docs/                   # Documentation
└── cmake/                  # CMake modules and toolchains

LicenseΒΆ

Nexus is released under the MIT License. See the LICENSE file for details.

Getting StartedΒΆ

Ready to start? Follow these guides:

  1. Installation - Set up your development environment

  2. Quick Start - Build your first Nexus application

  3. Architecture - Deep dive into the architecture