Skip to content

EXN is a modular open-source demonstration payload that combines a Raspberry Pi, STM32 (RTOS), and FPGA into an integrated Earth Observation system.

License

Notifications You must be signed in to change notification settings

ExoSpaceLabs/exn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

exn_logo

EXN [ExoSpaceLabs] – Advanced Satellite Telemetry, Recognition & AI

EXN is a modular open-source demonstration payload that combines a Raspberry Pi, STM32 (RTOS), and FPGA into an integrated Earth Observation system.
The goal is to showcase onboard image capture, CCSDS packetization, AI inference, and system-level coordination – all within a realistic space payload architecture.


🌌 Project Overview

EXN demonstrates how different embedded platforms can work together as a cohesive payload:

  • Pi (Camera Node): Captures images, pre-packets or streams raw data.
  • STM32 RTOS (Control Node): Supervises the system, handles CCSDS TeleCommands/TeleMetry, performs health checks, and routes control.
  • FPGA (Processing Node): Performs preprocessing (resize/normalize), inference acceleration, and postprocessing (argmax).
  • CCSDSPack: Provides CCSDS packet definitions and handling across nodes.

All interfaces (CCSDS, SPI/UART/CAN links, FPGA register maps) are defined in the central EXN interfaces specification, ensuring consistency across hardware.


📂 Repository Structure

This is the meta-repo that ties everything together.

  • interfaces/ → Packet interfaces: CCSDSPack .cfg, JSON mirrors, and MCU header-only definitions
  • docs/ → architecture docs, diagrams, and roadmaps
  • system/ → integration scripts, manifests, CI/CD workflows
  • submodules/:

🧭 Modular System Graph

graph LR
  %% GitHub-friendly Mermaid: quoted subgraph labels and explicit directions
  subgraph "Ground Station"
    direction TB
    GSNode[GS App APID 0x0F0 SrcID 0x10]
  end

  subgraph "EXN Payload"
  
      subgraph "MCU RTOS"
        direction TB
        MCUNode[MCU Controller APID 0x100 SrcID 0x01]
      end
    
      subgraph "PI CAM"
        direction TB
        PiNode[Camera Node APID 0x101 SrcID 0x02]
      end
    
      subgraph "FPGA AI"
        direction TB
        FpgaNode[Processing Node APID 0x102 SrcID 0x03]
      end
      
  end

  GSNode --> MCUNode
  MCUNode --> GSNode

  MCUNode --> PiNode
  MCUNode --> FpgaNode

  PiNode --> MCUNode
  FpgaNode --> MCUNode

  PiNode --> FpgaNode
Loading

Notes:

  • GS may request individual HK (Service 3/1) via MCU and may request a System HK aggregation (Service 3/10). MCU bridges/proxies; devices do not depend on GS.
  • All APIDs are fixed: GS=0x0F0, MCU=0x100, PI=0x101, FPGA=0x102. Source IDs: MCU=0x01, PI=0x02, FPGA=0x03, GS=0x10.

➕ Additional Diagrams

The sequence diagrams have been moved to a dedicated page for clarity. See:

  • docs/diagrams.md — Mermaid sequences for System HK aggregation and the GS-driven end-to-end flow.

📑 Interfaces & ICD

🧩 Interfaces

See also: docs/diagrams.md for the sequence diagrams moved from this README.


🛠 Roadmap

  1. Phase 1 – Pi Camera
    • Define ACK / NACK / TM and packets structures.
    • Bring up Pi camera, capture single frames
    • Export to CCSDS packets with CCSDSPack
  2. Phase 2 – STM32 RTOS
    • Implement TC/TM service handler
    • Add health monitoring + basic CAN/SPI link
  3. Phase 3 – FPGA Integration
    • AXI register map + resize block
    • Add inference model (ImageNet classifier)
  4. Phase 4 – Full System Integration
    • Pi → STM → FPGA workflow
    • End-to-end CCSDS packet chain
    • Demo: classification result sent as telemetry

📜 License

Apache 2.0 (open source, research & demonstration use).

About

EXN is a modular open-source demonstration payload that combines a Raspberry Pi, STM32 (RTOS), and FPGA into an integrated Earth Observation system.

Resources

License

Stars

Watchers

Forks

Languages