diff --git a/Cargo.lock b/Cargo.lock index 39a1dee..e9c6aac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,69 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "bare-metal" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5deb64efa5bd81e31fcd1938615a6d98c82eafcbcd787162b6f63b91d6bac5b3" +dependencies = [ + "rustc_version", +] + +[[package]] +name = "bitfield" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719" + +[[package]] +name = "cortex-m" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ec610d8f49840a5b376c69663b6369e71f4b34484b9b2eb29fb918d92516cb9" +dependencies = [ + "bare-metal", + "bitfield", + "embedded-hal", + "volatile-register", +] + +[[package]] +name = "cortex-m-rt" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "801d4dec46b34c299ccf6b036717ae0fce602faa4f4fe816d9013b9a7c9f5ba6" +dependencies = [ + "cortex-m-rt-macros", +] + +[[package]] +name = "cortex-m-rt-macros" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + +[[package]] +name = "embedded-hal" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35949884794ad573cf46071e41c9b60efb0cb311e3ca01f7af807af1debc66ff" +dependencies = [ + "nb 0.1.3", + "void", +] + [[package]] name = "equivalent" version = "1.0.2" @@ -36,14 +99,29 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" +[[package]] +name = "kaptan-kakute-f7-mini-v3" +version = "0.1.0" +dependencies = [ + "cortex-m", + "kaptan-spec", + "panic-halt", + "rtic", + "stm32f7", +] + [[package]] name = "kaptan-runtime" version = "0.1.0" +dependencies = [ + "kaptan-spec", +] [[package]] name = "kaptan-spec" version = "0.1.0" dependencies = [ + "syn", "trybuild", ] @@ -53,6 +131,33 @@ version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" +[[package]] +name = "nb" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f" +dependencies = [ + "nb 1.1.0", +] + +[[package]] +name = "nb" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d" + +[[package]] +name = "panic-halt" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a513e167849a384b7f9b746e517604398518590a9142f4846a32e3c2a4de7b11" + +[[package]] +name = "portable-atomic" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d20d5497ef88037a52ff98267d066e7f11fcc5e99bbfbd58a42336193aacec3" + [[package]] name = "proc-macro2" version = "1.0.106" @@ -71,6 +176,61 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "rtic" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16dff5e56cf22c25d0223e8abc0f60b428c577d4dd4a2459e55eeb289165106c" +dependencies = [ + "cortex-m", + "critical-section", + "portable-atomic", + "rtic-core", + "rtic-macros", +] + +[[package]] +name = "rtic-core" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9369355b04d06a3780ec0f51ea2d225624db777acbc60abd8ca4832da5c1a42" + +[[package]] +name = "rtic-macros" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14db06b1d38d3591975d0971b2a5cde129767a93f5815fb01c99efa8d1898c16" +dependencies = [ + "indexmap", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + [[package]] name = "serde" version = "1.0.228" @@ -122,6 +282,17 @@ dependencies = [ "serde_core", ] +[[package]] +name = "stm32f7" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a5df42747be8091db3cf560a4e1409b9fffc92fbba0ef5f9740b9dfdb54b76c" +dependencies = [ + "cortex-m", + "cortex-m-rt", + "vcell", +] + [[package]] name = "syn" version = "2.0.119" @@ -208,6 +379,27 @@ version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" +[[package]] +name = "vcell" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77439c1b53d2303b20d9459b1ade71a83c716e3f9c34f3228c00e6f185d6c002" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "volatile-register" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de437e2a6208b014ab52972a27e59b33fa2920d3e00fe05026167a1c509d19cc" +dependencies = [ + "vcell", +] + [[package]] name = "winapi-util" version = "0.1.11" diff --git a/Cargo.toml b/Cargo.toml index 8a5c639..2e25a69 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,7 @@ [workspace] members = [ - "kaptan-spec", + "boards/kakute-f7-mini-v3", + "libs/kaptan-spec", "kaptan-runtime", ] resolver = "2" diff --git a/boards/kakute-f7-mini-v3/Cargo.toml b/boards/kakute-f7-mini-v3/Cargo.toml new file mode 100644 index 0000000..1f0f0c1 --- /dev/null +++ b/boards/kakute-f7-mini-v3/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "kaptan-kakute-f7-mini-v3" +edition.workspace = true +license.workspace = true +repository.workspace = true +rust-version.workspace = true +version.workspace = true + +[features] +firmware = [] + +[dependencies] +cortex-m = "0.7" +panic-halt = "1" +rtic = { version = "2.3", default-features = false, features = ["thumbv7-backend"] } +stm32f7 = { version = "0.16", default-features = false, features = ["rt", "stm32f745"] } + +[build-dependencies] +kaptan-spec = { path = "../../libs/kaptan-spec", features = ["std"] } + +[[bin]] +name = "kaptan-kakute-f7-mini-v3" +path = "src/main.rs" +required-features = ["firmware"] +test = false +bench = false \ No newline at end of file diff --git a/boards/kakute-f7-mini-v3/build.rs b/boards/kakute-f7-mini-v3/build.rs new file mode 100644 index 0000000..600bc5e --- /dev/null +++ b/boards/kakute-f7-mini-v3/build.rs @@ -0,0 +1,3 @@ +fn main() { + kaptan_spec::validate_package(); +} diff --git a/boards/kakute-f7-mini-v3/src/main.rs b/boards/kakute-f7-mini-v3/src/main.rs new file mode 100644 index 0000000..5c1db92 --- /dev/null +++ b/boards/kakute-f7-mini-v3/src/main.rs @@ -0,0 +1,36 @@ +#![no_std] +#![no_main] + +use panic_halt as _; + +#[rtic::app(device = stm32f7::stm32f745, peripherals = true)] +mod app { + #[shared] + struct Shared { + // TODO + } + + #[local] + struct Local { + // TODO + } + + #[init] + fn init(_context: init::Context) -> (Shared, Local) { + (Shared {}, Local {}) + } + + #[task(binds = EXTI4, priority = 15)] + fn imu_data_ready(_context: imu_data_ready::Context) { + // TODO + } + + #[idle] + fn idle(_context: idle::Context) -> ! { + // TODO + + loop { + cortex_m::asm::wfi(); + } + } +} diff --git a/boards/kakute-f7-mini-v3/src/main.spec.md b/boards/kakute-f7-mini-v3/src/main.spec.md new file mode 100644 index 0000000..f9bdf55 --- /dev/null +++ b/boards/kakute-f7-mini-v3/src/main.spec.md @@ -0,0 +1,10 @@ +# --- version: 0.1.0 --- + +--- +title: Kaptan Support for Kakute F7 Mini V3 +status: in-progress +owners: + - Onur Özkan +--- + +## TODO \ No newline at end of file