From 0b8bf041c93a1dcf70e6b4827e215cba0f7629bb Mon Sep 17 00:00:00 2001 From: Priec Date: Fri, 10 Oct 2025 19:12:45 +0200 Subject: [PATCH] working rtic on TM4C123GXL --- flake.nix | 4 +--- tm4c-rtic-example/.cargo/config.toml | 5 +++++ tm4c-rtic-example/.gitignore | 1 + tm4c-rtic-example/Cargo.lock | 2 ++ tm4c-rtic-example/Cargo.toml | 6 +++--- tm4c-rtic-example/memory.x | 5 +++++ tm4c-rtic-example/src/main.rs | 12 +++--------- tm4c-rtic-example/target/.rustc_info.json | 2 +- 8 files changed, 21 insertions(+), 16 deletions(-) create mode 100644 tm4c-rtic-example/.cargo/config.toml create mode 100644 tm4c-rtic-example/.gitignore create mode 100644 tm4c-rtic-example/memory.x diff --git a/flake.nix b/flake.nix index f5ae310..c3d773d 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "EK-TM4C123GXL (Tiva C) board RTIC dev flake using probe-rs"; + description = "EK-TM4C123GXL (Tiva C) board RTIC dev flake"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; @@ -27,7 +27,6 @@ cargo-binutils flip-link gcc-arm-embedded - probe-rs openocd cargo-generate ]; @@ -35,7 +34,6 @@ shellHook = '' echo ">>> EK-TM4C123GXL RTIC DevShell ready." rustc --version - probe-rs --version ''; }; }); diff --git a/tm4c-rtic-example/.cargo/config.toml b/tm4c-rtic-example/.cargo/config.toml new file mode 100644 index 0000000..b078fc8 --- /dev/null +++ b/tm4c-rtic-example/.cargo/config.toml @@ -0,0 +1,5 @@ +[target.thumbv7em-none-eabihf] +rustflags = ["-C", "link-arg=-Tlink.x"] + +[build] +target = "thumbv7em-none-eabihf" diff --git a/tm4c-rtic-example/.gitignore b/tm4c-rtic-example/.gitignore new file mode 100644 index 0000000..2f7896d --- /dev/null +++ b/tm4c-rtic-example/.gitignore @@ -0,0 +1 @@ +target/ diff --git a/tm4c-rtic-example/Cargo.lock b/tm4c-rtic-example/Cargo.lock index e18b215..235b89f 100644 --- a/tm4c-rtic-example/Cargo.lock +++ b/tm4c-rtic-example/Cargo.lock @@ -176,6 +176,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6bc68b1fa2eefbb7ad6747b299b79c8fca92163dfa46f0e279f39109cf272186" dependencies = [ "bare-metal 1.0.0", + "cortex-m", "critical-section", "portable-atomic", "rtic-core", @@ -281,6 +282,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbdca3909d1c9ab4aba7a85b6b606f90b1bf4ae19a14c9bc4772b02017a82aad" dependencies = [ "cortex-m", + "cortex-m-rt", "vcell", ] diff --git a/tm4c-rtic-example/Cargo.toml b/tm4c-rtic-example/Cargo.toml index ec36d1d..6234d2b 100644 --- a/tm4c-rtic-example/Cargo.toml +++ b/tm4c-rtic-example/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "tm4c-rtic-example" version = "0.1.0" -edition = "2021" +edition = "2024" [dependencies] cortex-m = "0.7.7" cortex-m-rt = "0.7.3" panic-halt = "0.2.0" -tm4c123x-hal = "0.10.1" -rtic = "2.0.0" +tm4c123x-hal = { version = "0.10.1", features = ["rt"] } +rtic = { version = "2.0.0", features = ["thumbv7-backend"] } diff --git a/tm4c-rtic-example/memory.x b/tm4c-rtic-example/memory.x new file mode 100644 index 0000000..c140005 --- /dev/null +++ b/tm4c-rtic-example/memory.x @@ -0,0 +1,5 @@ +MEMORY +{ + FLASH : ORIGIN = 0x00000000, LENGTH = 256K + RAM : ORIGIN = 0x20000000, LENGTH = 32K +} diff --git a/tm4c-rtic-example/src/main.rs b/tm4c-rtic-example/src/main.rs index 448bcda..80a26ad 100644 --- a/tm4c-rtic-example/src/main.rs +++ b/tm4c-rtic-example/src/main.rs @@ -6,12 +6,10 @@ #![deny(unsafe_code)] #![deny(missing_docs)] -use panic_semihosting as _; +use panic_halt as _; -#[rtic::app(device = lm3s6965, dispatchers = [SSI0])] +#[rtic::app(device = tm4c123x_hal::tm4c123x, dispatchers = [SSI0])] mod app { - use cortex_m_semihosting::{debug, hprintln}; - #[shared] struct Shared {} @@ -20,16 +18,12 @@ mod app { #[init] fn init(_: init::Context) -> (Shared, Local) { - hprintln!("init"); - foo::spawn().unwrap(); + foo::spawn().unwrap(); (Shared {}, Local {}) } #[task] async fn foo(_: foo::Context) { - hprintln!("foo"); - - debug::exit(debug::EXIT_SUCCESS); // Exit QEMU simulator } } diff --git a/tm4c-rtic-example/target/.rustc_info.json b/tm4c-rtic-example/target/.rustc_info.json index 979bf10..f52852e 100644 --- a/tm4c-rtic-example/target/.rustc_info.json +++ b/tm4c-rtic-example/target/.rustc_info.json @@ -1 +1 @@ -{"rustc_fingerprint":13532102840378780987,"outputs":{"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/nix/store/ykm6in4f9h723ca61pwmiyc0mzibrbcz-rust-default-1.92.0-nightly-2025-10-09\noff\npacked\nunpacked\n___\ndebug_assertions\nfmt_debug=\"full\"\noverflow_checks\npanic=\"unwind\"\nproc_macro\nrelocation_model=\"pic\"\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"x87\"\ntarget_has_atomic\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_has_reliable_f128\ntarget_has_reliable_f16\ntarget_has_reliable_f16_math\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"unknown\"\nub_checks\nunix\n","stderr":""},"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.92.0-nightly (b6f0945e4 2025-10-08)\nbinary: rustc\ncommit-hash: b6f0945e4681bc4d2faa7c22c5f61dc36abf7dd2\ncommit-date: 2025-10-08\nhost: x86_64-unknown-linux-gnu\nrelease: 1.92.0-nightly\nLLVM version: 21.1.2\n","stderr":""}},"successes":{}} \ No newline at end of file +{"rustc_fingerprint":13532102840378780987,"outputs":{"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/nix/store/ykm6in4f9h723ca61pwmiyc0mzibrbcz-rust-default-1.92.0-nightly-2025-10-09\noff\npacked\nunpacked\n___\ndebug_assertions\nfmt_debug=\"full\"\noverflow_checks\npanic=\"unwind\"\nproc_macro\nrelocation_model=\"pic\"\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"x87\"\ntarget_has_atomic\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_has_reliable_f128\ntarget_has_reliable_f16\ntarget_has_reliable_f16_math\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"unknown\"\nub_checks\nunix\n","stderr":""},"2668284298704293751":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.a\n/nix/store/ykm6in4f9h723ca61pwmiyc0mzibrbcz-rust-default-1.92.0-nightly-2025-10-09\noff\n___\ndebug_assertions\nfmt_debug=\"full\"\noverflow_checks\npanic=\"abort\"\nproc_macro\nrelocation_model=\"static\"\ntarget_abi=\"eabihf\"\ntarget_arch=\"arm\"\ntarget_endian=\"little\"\ntarget_env=\"\"\ntarget_feature=\"dsp\"\ntarget_feature=\"fpregs\"\ntarget_feature=\"mclass\"\ntarget_feature=\"thumb-mode\"\ntarget_feature=\"thumb2\"\ntarget_feature=\"v5te\"\ntarget_feature=\"v6\"\ntarget_feature=\"v6k\"\ntarget_feature=\"v6t2\"\ntarget_feature=\"v7\"\ntarget_has_atomic\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_has_reliable_f128\ntarget_has_reliable_f16\ntarget_has_reliable_f16_math\ntarget_os=\"none\"\ntarget_pointer_width=\"32\"\ntarget_vendor=\"unknown\"\nub_checks\n","stderr":"warning: dropping unsupported crate type `dylib` for target `thumbv7em-none-eabihf`\n\nwarning: dropping unsupported crate type `cdylib` for target `thumbv7em-none-eabihf`\n\nwarning: dropping unsupported crate type `proc-macro` for target `thumbv7em-none-eabihf`\n\nwarning: 3 warnings emitted\n\n"},"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.92.0-nightly (b6f0945e4 2025-10-08)\nbinary: rustc\ncommit-hash: b6f0945e4681bc4d2faa7c22c5f61dc36abf7dd2\ncommit-date: 2025-10-08\nhost: x86_64-unknown-linux-gnu\nrelease: 1.92.0-nightly\nLLVM version: 21.1.2\n","stderr":""}},"successes":{}} \ No newline at end of file