HYper Dynamic Rocketry Avionics
uORocketry's next-generation avionics system
If you are in a DevContainer skip to step 5.
- Install Rust: https://www.rust-lang.org/tools/install
- Install necessary build tools:
- cargo-make:
cargo install cargo-make
- probe-rs:
cargo install probe-rs --features cli
- cargo-make:
- Install the ARM GNU Toolchain (last tested with 13.2) and have it available in your PATH
- Arch Linux:
sudo pacman -S arm-none-eabi-gcc
- Alpine/Debian/Ubuntu: https://pkgs.org/download/gcc-arm-none-eabi
- MacOS:
brew install arm-none-eabi-gcc
- Arch Linux:
- Build:
cargo build
- In case it fails, try
cargo build --release
- In case it fails, try
- Run tests:
- In the host machine:
cargo make test-host
- In the device:
cargo make test-device
- In the host machine:
- Flash on hardware:
cargo run --bin main
For more detailed instructions on flashing, debugging, and more, please see the wiki.
- Install Docker
- Install VS Code
- From VS Code, install the "Dev Containers" extension
- press
ctrl
+shift
+p
, and search forDev Containers: Open Folder in Container
- Enable WSL: https://learn.microsoft.com/en-us/windows/wsl/install
- Install a linux distro from the Microsoft Store
- Install the ARM GNU Toolchain
- NOTE: You may find this in your distro's package manager, but ensure it is version 13.2.
- Ubuntu has an outdated version in its repositories. If using Ubuntu, download it manually from the link above
- Follow the rest of the instructions in Getting Started
After plugging in J-Link, it will likely show up as unknown.
- Install Zadig: https://zadig.akeo.ie/
- From Zadig, select J-Link as the device and WinUSB as the driver
- click Install Driver
If using WSL or Docker with a WSL backend (you probably are), you need to tell Windows to share J-Link with WSL.
- From WSL, install linux-tools-generic
- on Ubuntu:
sudo apt install linux-tools-generic
- on Ubuntu:
- Install usbipd-win: https://github.com/dorssel/usbipd-win/releases
- Open command prompt/powershell with admin privileges and run
usbipd list
- Make note of the entry called J-Link and run
usbipd bind --busid <busid>
- Next, run
usbipd attach --wsl --busid <busid>
- You can now follow the flashing instructions in Getting Started
Run cargo doc --open
to build and open the documentation. Most documentation for this repo is contained in the common-arm
crate.
Documentation is also automatically built and deployed to https://hydra-docs.uorocketry.ca/common_arm
The project is structured in a way to allow reuse of the code across various boards and other projects.
boards
: Folder containing each individual board's binary crates. Any code in those crates should only contain logic specific to the board.debug
: Useful files for debugging, such as GDB and OpenOCD configuration.examples
: Example projects that can be used to quickly start a new board. Simply copy and paste one of those creates to theboards
folder, and rename as needed.libraries
:common-arm
: Common code that depends on embedded-specific logic or crates.
This project is licensed under GPLv3-only.
We please ask for any derivatives of this work to be kept open-source, even if such derivative is only for internal use.