Tweezers placing a microchip onto a circuit board

Welcome to OSUSat

This guide takes you from a fresh laptop to your first reviewed pull request. Work through it in order, and ask in a GitHub issue if anything doesn’t match what you see.

Get the code

Everything lives in the OSUSat/cubesat repository: firmware, KiCad hardware, design docs, checklists and templates. Clone it with its submodules, because the EPS and OBC firmware pull in the shared osusat/core and osusat/messaging libraries.

git clone --recursive https://github.com/OSUSat/cubesat.git

Already cloned? Run git submodule update --init --recursive.

Install the toolchain

  • Firmware: the ARM GCC toolchain (gcc-arm-none-eabi), plus cmake, make and g++.
  • Docs: doxygen, and Python 3 with sphinx and breathe.
  • Hardware: KiCad 10. Link the OSUSat project template into your KiCad template folder as described in shared/kicad/README.md.

Build and test

Every firmware project builds for the flight board and for your laptop. From a subsystem’s firmware folder (for example eps/v1/firmware), build for the board:

cmake -B build_arm -S . -DCMAKE_TOOLCHAIN_FILE=arm-none-eabi-toolchain.cmake
cmake --build build_arm

Then build and run the unit tests on your machine:

cmake -B build_hitl -S . -DTARGET_ARCH=HOST -DBUILD_HITL=ON
cmake --build build_hitl
cd build_hitl && ctest --output-on-failure

CI builds whatever subsystems your change touches, runs the tests and comments on your pull request with a preview of the generated docs.

Make your first contribution

  1. Pick up a GitHub issue. Every piece of work starts as one.
  2. Before any layout or code, open a Design Review Request issue, and start once a reviewer adds the cleared-to-proceed label.
  3. Branch as First-Last/Topic, for example Ethan-Eggert/Comms-Brainstorming.
  4. Open a pull request and fill in the template: summary, requirements traceability, the hardware or firmware checklist, ATP impact and any deviations.
  5. Run the matching checklist against your own work, log it in documentation/process/self_review.md, and have a co-lead, faculty advisor or teammate countersign it.

Know the standards

  • Firmware is C formatted with the repo’s .clang-format (LLVM style, 4-space indent). Services are event-driven and the HAL stays policy-free; see documentation/design_guidelines/.
  • Hardware follows the CubeSat Design Specification (Rev 14.1), derates parts per NASA EEE-INST-002 and uses the shared 4-layer stackup in shared/kicad/.
  • Schematic, layout, bring-up and firmware checklists live in documentation/checklists/. ATP and ICD templates are in documentation/templates/.