# ROMEO Onboard Software (OBSW) ## What is ROMEO? [For a broader introduction and documentation refer to the OBSW Wiki in the ROMEO Knowledge Base](https://openproject.mm.intra.irs.uni-stuttgart.de/projects/romeo-phase-c/wiki/obsw). This README gives a very brief introduction and aims to document the compile process for experienced developers. [_Research and Observation in Medium Earth Orbit (ROMEO)_](https://www.irs.uni-stuttgart.de/en/research/satellitetechnology-and-instruments/smallsatelliteprogram/romeo/) is the third small satellite of the Institute of Space Systems (IRS), University of Stuttgart with the objective of technology demonstration in Medium and Low Earth Orbit (MEO/LEO) with a mission duration of 1 year. The Onboard Software (OBSW) is written in Rust for run-time stability. The implemented framework is losely based on the C++ Flight Software Framework (FSFW) developed at the IRS in cooperation with industry. The shift to Rust was discussed in Paul Nehlich's master thesis: [_Analysis and preparation of the transformation of the Flight Software Framework from C++ to Rust_](https://www.researchgate.net/publication/372439213_Analysis_and_preparation_of_the_transformation_of_the_Flight_Software_Framework_from_C_to_Rust). ROMEO Preliminary Design (design from IRS ROMEO Website) ## How to Configure This Repository? TODO # First Stage Bootloader (FSBL) FSBL code is at https://github.com/Xilinx/embeddedsw/ ## Scope This is the central repository for the flight software of the ROMEO satellite. It will eventually become the new base of a Rust Flight Software Framework replacing the C++ Flight Software Framework of the FLP, EIVE and SOURCE. The current working steps are: - Build Toolchain (Daniel Philipp) - Hardware itnerfaces (Paul Nehlich) - CAN Bus (Andy Hinkel) - RS422 (Paul Nehlich, Joris Janßen) - Device Handling Fundamentals (Joris Janßen) - Framework Core Component Implementation (Paul Nehlich, Ulrich Mohr) - Integration of Space Packets and PUS Services (to be scheduled, Paul Nehlich) - OBC Board support and Linux Boot Management (Michael Steinert) - Device Integration - AOCS - TCS - Communications Interfaces ## How to build the software? Consider using Docker or setting up a local compile toolchain. Please refer to [BUILD_WITH_DOCKER.md](./BUILD_WITH_DOCKER.md) or [BUILD_WITH_CMAKE.md](./BUILD_WITH_CMAKE.md). ## How to debug on hardware? Please refer to [DEBUG_ON_ZEDBOARD.md](./DEBUG_ON_ZEDBOARD.md)