
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), pluscmake,makeandg++. - Docs:
doxygen, and Python 3 withsphinxandbreathe. - 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
- Pick up a GitHub issue. Every piece of work starts as one.
- Before any layout or code, open a Design Review Request issue, and start once a reviewer adds the
cleared-to-proceedlabel. - Branch as
First-Last/Topic, for exampleEthan-Eggert/Comms-Brainstorming. - Open a pull request and fill in the template: summary, requirements traceability, the hardware or firmware checklist, ATP impact and any deviations.
- 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; seedocumentation/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 indocumentation/templates/.