Skip to content

Robinhoets/systems-portfolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

Systems Programming Portfolio

A collection of progressively more advanced systems programming projects written in C on Linux. The goal of this repository is to build a strong foundation in Linux systems programming, embedded software concepts, and flight software architecture, culminating in applications built with NASA's Core Flight System (cFS).

Objectives

This portfolio focuses on developing practical experience with:

  • C programming
  • Linux systems programming
  • Processes and threads
  • Inter-process communication (IPC)
  • Networking
  • Daemon development
  • Unit testing
  • Telemetry and command systems
  • Embedded software concepts
  • Real-time software design
  • NASA Core Flight System (cFS)

Each project builds upon the previous one, introducing a new systems programming concept while reinforcing earlier material.


Learning Roadmap

Project Focus Major Concepts
01. Linux System Monitor Linux Fundamentals /proc, file I/O, parsing, Makefiles, unit testing
02. Health Monitor Daemon Long-running Services Daemons, signals, logging, configuration, systemd
03. Multithreaded Task Scheduler Concurrency POSIX threads, mutexes, condition variables, timing
04. Message Queue Library Inter-process Communication Producer/consumer, thread-safe queues, synchronization
05. Telemetry & Command Server Networking TCP sockets, serialization, command protocols
06. Mission Control Dashboard System Integration Telemetry visualization, command interface, monitoring
07. Software Bus Modular Architecture Publish/subscribe messaging, decoupled applications
08. Spacecraft Simulator Embedded Systems Modular subsystems, telemetry, command handling
09. RTOS Concepts Lab Real-Time Software State machines, periodic tasks, watchdogs, fault management
10. NASA cFS Application Suite Flight Software cFS applications, Software Bus, telemetry, command processing

Repository Structure

systems-portfolio/
│
├── 01-linux-system-monitor/
├── 02-health-monitor-daemon/
├── 03-multithreaded-task-scheduler/
├── 04-message-queue-library/
├── 05-telemetry-command-server/
├── 06-mission-control-dashboard/
├── 07-software-bus/
├── 08-spacecraft-simulator/
├── 09-rtos-concepts-lab/
├── 10-nasa-cfs-application-suite/
│
└── docs/

Long-Term Goal

The ultimate objective of this portfolio is to develop the knowledge and practical experience required for roles such as:

  • Linux Systems Engineer
  • Systems Software Engineer
  • Platform Engineer
  • Infrastructure Software Engineer
  • Ground Systems Software Engineer
  • Embedded Software Engineer
  • Flight Software Engineer

By the final project, the repository progresses from standalone Linux applications to software architectures inspired by real spacecraft flight software using NASA's Core Flight System (cFS).


Technologies

  • C
  • GNU Make
  • GCC
  • Linux
  • POSIX Threads
  • TCP/IP Networking
  • Git
  • Bash
  • systemd
  • NASA Core Flight System (cFS)

Status

Project Status
01. Linux System Monitor ⬜ Planned
02. Health Monitor Daemon ⬜ Planned
03. Multithreaded Task Scheduler ⬜ Planned
04. Message Queue Library ⬜ Planned
05. Telemetry & Command Server ⬜ Planned
06. Mission Control Dashboard ⬜ Planned
07. Software Bus ⬜ Planned
08. Spacecraft Simulator ⬜ Planned
09. RTOS Concepts Lab ⬜ Planned
10. NASA cFS Application Suite ⬜ Planned

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors