HYper Dynamic Rocketry Avionics
uORocketry's next-generation avionics system
- Install Rust: https://www.rust-lang.org/tools/install
- Build:
cargo build
- Install probe-run:
cargo install --git https://github.com/uorocketry/probe-run
probe-run
currently requires a patch to flash our chip, so please use the above version while the patch is upstreamed
- Install cargo-make:
cargo install cargo-make
- Flash:
cargo run --bin main
- Run tests:
cargo make test-host
orcargo make test-device
For more detailed instructions on flashing, debugging, and more, please see the wiki.
- Install Docker: https://docs.docker.com/desktop/install/windows-install/
- Install VS Code: https://code.visualstudio.com/download
- 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 ARM GNU Toolchain: https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
- NOTE: You may find this in your distro's package managerm, but make sure it is up to date.
- 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
- 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.