refactor: move firmware workspace under firmware

This commit is contained in:
Onur Özkan committed 2026-08-10 16:58:55 +03:00
1 parent 153b0bf262
commit f03fc119a4
222 files changed
+56 -13

No files matched your search

+2 -1
View File
@@ -18,6 +18,7 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Check host-SITL contracts - name: Check host-SITL contracts
working-directory: firmware
run: | run: |
python3 -m unittest tools/sitl/test_kaptan_sim.py python3 -m unittest tools/sitl/test_kaptan_sim.py
python3 tools/sitl/world-structure-test.py python3 tools/sitl/world-structure-test.py
@@ -37,4 +38,4 @@ jobs:
cargo test --locked -p kaptan-sitl cargo test --locked -p kaptan-sitl
- name: Run Docker closed-loop smoke - name: Run Docker closed-loop smoke
run: tools/sitl/e2e-smoke.sh run: firmware/tools/sitl/e2e-smoke.sh
+2 -1
View File
@@ -9,9 +9,10 @@ schedule, and an `INFO` optional-log threshold. The platform verifies these
values against the checked SPI3/USART2 typestate route before it enables values against the checked SPI3/USART2 typestate route before it enables
peripherals. They are compiled image policy, not ground-station parameters. peripherals. They are compiled image policy, not ground-station parameters.
Build and package from the workspace root: Build and package from the firmware workspace:
```sh ```sh
cd firmware
cargo build --release -p kaptan-geprc-f722-v2 --target thumbv7em-none-eabihf cargo build --release -p kaptan-geprc-f722-v2 --target thumbv7em-none-eabihf
./scripts/create-dfu-image.sh target/thumbv7em-none-eabihf/release/kaptan-geprc-f722-v2 ./scripts/create-dfu-image.sh target/thumbv7em-none-eabihf/release/kaptan-geprc-f722-v2
``` ```
+3 -2
View File
@@ -3,7 +3,7 @@
The Holybro Kakute F7 Mini V3 board declaration uses the MPU-6000 on SPI1, The Holybro Kakute F7 Mini V3 board declaration uses the MPU-6000 on SPI1,
MAVLink telemetry on USART1, and the MTF01 range/optical-flow route on UART4. MAVLink telemetry on USART1, and the MTF01 range/optical-flow route on UART4.
The checked-in manufacturer datasheet is The checked-in manufacturer datasheet is
`boards/kakute-f7-mini-v3/datasheet.pdf`. `firmware/boards/kakute-f7-mini-v3/datasheet.pdf`.
Its immutable board policy selects the MPU-6000 body-aligned mount, logical Its immutable board policy selects the MPU-6000 body-aligned mount, logical
MAVLink `Serial1`, endpoint `1/1`, 115200 baud, the documented telemetry MAVLink `Serial1`, endpoint `1/1`, 115200 baud, the documented telemetry
@@ -13,9 +13,10 @@ peripherals. They are compiled image policy, not ground-station parameters.
## Build and package ## Build and package
From the workspace root: From the firmware workspace:
```sh ```sh
cd firmware
cargo build --release -p kaptan-kakute-f7-mini-v3 --target thumbv7em-none-eabihf cargo build --release -p kaptan-kakute-f7-mini-v3 --target thumbv7em-none-eabihf
./scripts/create-dfu-image.sh target/thumbv7em-none-eabihf/release/kaptan-kakute-f7-mini-v3 ./scripts/create-dfu-image.sh target/thumbv7em-none-eabihf/release/kaptan-kakute-f7-mini-v3
``` ```
+4
View File
@@ -3,6 +3,7 @@
## Fast host checks ## Fast host checks
```sh ```sh
cd firmware
cargo test --workspace --offline cargo test --workspace --offline
cargo clippy --workspace --all-targets --offline --exclude kaptan-geprc-f722-v2 --exclude kaptan-kakute-f7-mini-v3 -- -D warnings cargo clippy --workspace --all-targets --offline --exclude kaptan-geprc-f722-v2 --exclude kaptan-kakute-f7-mini-v3 -- -D warnings
cargo clippy -p platform-stm32f7 --all-targets --offline -- -D warnings cargo clippy -p platform-stm32f7 --all-targets --offline -- -D warnings
@@ -13,6 +14,7 @@ git diff --check
## Target checks ## Target checks
```sh ```sh
cd firmware
cargo check -p kaptan-geprc-f722-v2 --release --target thumbv7em-none-eabihf --offline cargo check -p kaptan-geprc-f722-v2 --release --target thumbv7em-none-eabihf --offline
cargo check -p kaptan-kakute-f7-mini-v3 --release --target thumbv7em-none-eabihf --offline cargo check -p kaptan-kakute-f7-mini-v3 --release --target thumbv7em-none-eabihf --offline
``` ```
@@ -20,6 +22,7 @@ cargo check -p kaptan-kakute-f7-mini-v3 --release --target thumbv7em-none-eabihf
## Strict core coverage ## Strict core coverage
```sh ```sh
cd firmware
scripts/report-test-coverage.sh scripts/report-test-coverage.sh
``` ```
@@ -32,6 +35,7 @@ the gate.
## Simulation acceptance ## Simulation acceptance
```sh ```sh
cd firmware
python3 tools/sitl/world-structure-test.py python3 tools/sitl/world-structure-test.py
python3 -m unittest tools/sitl/test_kaptan_sim.py python3 -m unittest tools/sitl/test_kaptan_sim.py
tools/sitl/e2e-smoke.sh tools/sitl/e2e-smoke.sh
+8 -6
View File
@@ -2,12 +2,13 @@
## Prerequisites ## Prerequisites
Use the repository toolchain, Rust 1.90. The workspace declares the embedded Use the firmware toolchain, Rust 1.90. The firmware workspace declares the
F7 targets and `llvm-tools-preview` in `rust-toolchain.toml`. embedded F7 targets and `llvm-tools-preview` in `firmware/rust-toolchain.toml`.
For host development, run: For host development, run:
```sh ```sh
cd firmware
cargo test --workspace --offline cargo test --workspace --offline
cargo clippy --workspace --all-targets --offline --exclude kaptan-geprc-f722-v2 --exclude kaptan-kakute-f7-mini-v3 -- -D warnings cargo clippy --workspace --all-targets --offline --exclude kaptan-geprc-f722-v2 --exclude kaptan-kakute-f7-mini-v3 -- -D warnings
``` ```
@@ -19,10 +20,11 @@ target-specific commands in [Development and verification](development.md).
| Path | Responsibility | | Path | Responsibility |
| --- | --- | | --- | --- |
| `boards/` | Immutable board declarations and linker layouts. | | `firmware/boards/` | Immutable board declarations and linker layouts. |
| `platforms/stm32f7/` | Reviewed F722 RTIC platform and peripheral ownership. | | `firmware/platforms/stm32f7/` | Reviewed F722 RTIC platform and peripheral ownership. |
| `libs/` | Typed math, estimation, control, safety, protocol, and driver crates. | | `firmware/libs/` | Typed math, estimation, control, safety, protocol, and driver crates. |
| `tools/sitl/` | Host-only closed-loop Gazebo simulation. | | `firmware/tools/sitl/` | Host-only closed-loop Gazebo simulation. |
| `ground-suite/` | Desktop ground-control application. |
| `docs/` | This Markdown documentation site. | | `docs/` | This Markdown documentation site. |
Do not add board-local READMEs. Add a page here instead, then link it from Do not add board-local READMEs. Add a page here instead, then link it from
+7 -3
View File
@@ -12,6 +12,8 @@ Markdown.
## Index ## Index
- New contributors should read [Getting started](getting-started.md). - New contributors should read [Getting started](getting-started.md).
- Firmware source and its Rust workspace begin in `firmware/`; the desktop
application is a sibling project in `ground-suite/`.
- Board work belongs under [Boards](boards/index.md). - Board work belongs under [Boards](boards/index.md).
- The currently supported closed-loop simulation is [Host SITL](sitl.md). - The currently supported closed-loop simulation is [Host SITL](sitl.md).
- [Configuration](configuration.md) distinguishes the current SITL profile - [Configuration](configuration.md) distinguishes the current SITL profile
@@ -22,9 +24,11 @@ Markdown.
## Documentation conventions ## Documentation conventions
Documentation is centralized in `docs/src/`; source directories do not carry Documentation is centralized in `docs/src/`; individual crates and board
README files. Keep pages in Markdown, add each page to `SUMMARY.md`, and place directories do not carry README files. The top-level `firmware/README.md`
commands beside the assumptions and safety boundary they depend on. only defines the firmware workspace boundary. Keep pages in Markdown, add each
page to `SUMMARY.md`, and place commands beside the assumptions and safety
boundary they depend on.
The current configuration contract is intentionally deployment-specific. A The current configuration contract is intentionally deployment-specific. A
SITL Quad-X profile is a bounded restart-only CBOR snapshot; F722 hardware SITL Quad-X profile is a bounded restart-only CBOR snapshot; F722 hardware
+1
View File
@@ -20,6 +20,7 @@ upload sequence, [Logs](logs.md) for receiver decoding and filtering, and
Before review, run: Before review, run:
```sh ```sh
cd firmware
cargo fmt --all --check cargo fmt --all --check
cargo test --workspace --locked --offline cargo test --workspace --locked --offline
cargo clippy --workspace --all-targets --locked -- -D warnings cargo clippy --workspace --all-targets --locked -- -D warnings
+1
View File
@@ -17,6 +17,7 @@ arming-sequence reference. It does not grant hardware access or authority.
Run the structural guard after any platform or board change: Run the structural guard after any platform or board change:
```sh ```sh
cd firmware
cargo test -p platform-stm32f7 --test platform_safety_boundary --offline cargo test -p platform-stm32f7 --test platform_safety_boundary --offline
``` ```
+2
View File
@@ -11,6 +11,7 @@ It is a pre-bench software gate, not a physical-flight validation.
## Run the closed loop ## Run the closed loop
```sh ```sh
cd firmware
docker compose -f tools/sitl/compose.yaml up -d --build docker compose -f tools/sitl/compose.yaml up -d --build
tools/sitl/kaptan-sim ready tools/sitl/kaptan-sim ready
tools/sitl/kaptan-sim move 5 3 1 --wait tools/sitl/kaptan-sim move 5 3 1 --wait
@@ -21,6 +22,7 @@ docker compose -f tools/sitl/compose.yaml down
For the reproducible command-path gate, use: For the reproducible command-path gate, use:
```sh ```sh
cd firmware
tools/sitl/e2e-smoke.sh tools/sitl/e2e-smoke.sh
``` ```
File renamed without changes.
View File
File renamed without changes.
View File
File renamed without changes.
+26
View File
@@ -0,0 +1,26 @@
# Firmware
This directory is the Kaptan flight-controller firmware workspace. It owns the
Rust workspace manifest, board declarations, platform implementation, reusable
firmware crates, simulator, firmware scripts, and firmware test fixtures.
```text
firmware/
├── boards/ immutable board declarations and linker layouts
├── libs/ reusable no_std firmware crates
├── platforms/ hardware platform composition
├── tools/ SITL and firmware development tooling
├── scripts/ packaging, analysis, and coverage helpers
└── tests/ firmware integration-test fixtures
```
Run Cargo commands from this directory:
```sh
cd firmware
cargo test --workspace --locked --offline
```
The sibling `ground-suite/` directory is the desktop ground-control
application. It is intentionally a separate project and does not participate
in the firmware Cargo workspace.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loaded 100 of 222 files, more files were not shown because too many files have changed in this diff. Show more