Software for OBC and Ground Station

Specifications
Microscontroller (MCU)
ARM Cortex-R5
Programming language
C
Operating system (OS)
FreeRTOS v9
File transfer protocol (FTP)
in-house FTP loosely compliant with the CCSDS File Delivery Protocol standard
Filing system
Reliance Edge - protects critical data against corruption in the event of a sudden power loss
Bootloader
UART-based and specific to the TMS570LC43 ARM Cortex-R5 MCU. Communication protocol based on Ymodem protocol
Network stack
Cubesat Space Protocol (CSP)

Six-layer software structure

Diagram showing the six layer OBC software layout
Layer Functions
L0 - OS and hardware drivers
  • FreeRTOS Kernel
  • Hardware drivers
  • Interrupt service routines (ISRs)
  • Reliance Edge filing system
  • Driver code configured and generated by Texas Instruments’ HALCoGen code generation tool.
L1 - Subsystem equipment handlers
  • Functions that interact with the device drivers.
  • Exposes basic characteristics and abilities of the hardware devices while hiding details such as configuration registers, data formats, bit rates, and other datasheet details.
  • Comprises the Hardware Abstraction Layer (HAL).
L2 - Hardware interface
  • Provides the API for the application layer.
  • Comprises the HAL along with L1.
L3 - Telecommand/telemetry handling
  • CSP implemented as the network protocol.
  • Handles all functions necessary to establish and terminate communication links:
    • Multihop packet routing
    • Handles network connections
    • Facilitates packet retries
    • CRC32 checksums
    • XTEA encryption
  •  
L4 - On-board services
  • Exposes satellite functionality to the ground station operators.
  • Comprises the application layer.
L5 - On-board system tasks
  • Comprises the application layer along with L4.
  • Responsible for background tasks:
    • Housekeeping (collection and storage of system values)
    • Diagnostics
    • State transitions
    • Sending beacons
    • Executing scheduled tasks
  •  

Ground Station

  • A flask web app
  • Uses CSP Python bindings in the backend to allow similar data flow on the ground as on the satellite
  • Uses an SQL database to store telemetry
  • Uses GNU Radio to send data
  • Allows either live or scheduled commands

By Hogan Chen, Sam Belau and Alif Ahmed

This page was last updated May 2021