From e3fd07a28e23ed21fd4aade4bf03e5211009dc61 Mon Sep 17 00:00:00 2001 From: Robert Schauklies Date: Thu, 8 Jan 2026 22:08:39 +0100 Subject: [PATCH 1/2] because of fuckery, we are using the oxalica overlay now --- spinnyboy_rust/shell.nix | 43 ++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/spinnyboy_rust/shell.nix b/spinnyboy_rust/shell.nix index 8570f2f..c4f8346 100644 --- a/spinnyboy_rust/shell.nix +++ b/spinnyboy_rust/shell.nix @@ -1,19 +1,28 @@ -{ pkgs ? import {}}: -let rust-toolchain = with pkgs; symlinkJoin { - name = "rust-toolchain"; - paths = [ - probe-rs-tools - rustup - rustc - cargo - rustfmt - rust-analyzer - clippy - rustPlatform.rustcSrc +{ pkgs ? import { + overlays = [ + (import (builtins.fetchTarball "https://github.com/oxalica/rust-overlay/archive/master.tar.gz")) ]; - }; -in pkgs.mkShell { - buildInputs = [rust-toolchain]; - RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}"; - RUST_BACKTRACE = 1; + } +}: + +let + # Define the specific toolchain with ESP32-C6 support + rustToolchain = pkgs.rust-bin.selectLatestNightlyWith(toolchain: toolchain.default.override { + targets = [ "riscv32imac-unknown-none-elf" ]; + extensions = [ "rust-src" "llvm-tools-preview" ]; + }); +in +pkgs.mkShell { + nativeBuildInputs = [ + rustToolchain + pkgs.probe-rs-tools + pkgs.espflash # For flashing your ESP32-C6 + pkgs.pkg-config + pkgs.gcc # Critical: provides the 'cc' wrapper script + ]; + + # Injects necessary library paths for the Nix-wrapped linker + shellHook = '' + export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath [ pkgs.stdenv.cc.cc ]}" + ''; } From cb95755998a1491c4f6d1987b2dc7f75dc224c38 Mon Sep 17 00:00:00 2001 From: Robert Schauklies Date: Thu, 8 Jan 2026 22:09:17 +0100 Subject: [PATCH 2/2] adds deffmt with based on: https://defmt.ferrous-systems.com/setup --- spinnyboy_rust/.cargo/config.toml | 2 ++ spinnyboy_rust/Cargo.toml | 2 ++ spinnyboy_rust/src/bin/main.rs | 13 +++++-------- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/spinnyboy_rust/.cargo/config.toml b/spinnyboy_rust/.cargo/config.toml index 9742ea7..180027b 100644 --- a/spinnyboy_rust/.cargo/config.toml +++ b/spinnyboy_rust/.cargo/config.toml @@ -8,6 +8,8 @@ rustflags = [ # Required to obtain backtraces (e.g. when using the "esp-backtrace" crate.) # NOTE: May negatively impact performance of produced code "-C", "force-frame-pointers", + #https://defmt.ferrous-systems.com/setup + "-C", "link-arg=-Tdefmt.x", ] target = "riscv32imac-unknown-none-elf" diff --git a/spinnyboy_rust/Cargo.toml b/spinnyboy_rust/Cargo.toml index 2fc72b8..653e6f9 100644 --- a/spinnyboy_rust/Cargo.toml +++ b/spinnyboy_rust/Cargo.toml @@ -17,6 +17,8 @@ esp-bootloader-esp-idf = { version = "0.4.0", features = ["esp32c6"] } critical-section = "1.2.0" esp-alloc = "0.9.0" rtt-target = "0.6.2" +embedded-hal = "1.0.0" +esp-backtrace = {version = "0.18.1",features = ["esp32c6","defmt"]} [profile.dev] diff --git a/spinnyboy_rust/src/bin/main.rs b/spinnyboy_rust/src/bin/main.rs index 0aec8dd..9ec1140 100644 --- a/spinnyboy_rust/src/bin/main.rs +++ b/spinnyboy_rust/src/bin/main.rs @@ -23,7 +23,7 @@ use esp_hal::handler; use core::cell::RefCell; use esp_hal::time::{Duration, Instant}; use esp_hal::timer::timg::TimerGroup; - +use esp_backtrace as _; use critical_section::Mutex; use rtt_target::rprintln; mod dc_driver; @@ -38,7 +38,10 @@ fn panic(_: &core::panic::PanicInfo) -> ! { // static EMERGENCY_BUTTON: Mutex>> = Mutex::new(RefCell::new(None)); extern crate alloc; - +//target RPM +const DEFAULT_TARGET_RPM: u32 = 1000; +//in seconds +const DEFAULT_SPIN_TIME:u32 = 10; // This creates a default app-descriptor required by the esp-idf bootloader. // For more information see: esp_bootloader_esp_idf::esp_app_desc!(); @@ -98,12 +101,6 @@ fn main() -> ! { .unwrap() .with_rx(peripherals.GPIO5) .with_tx(peripherals.GPIO7); - // uart0.write(b"page page0"); - // uart0.write(b"\xff"); - // uart0.write(b"\xff"); - // uart0.write(b"\xff"); - // uart0.write(b"\xff"); - // rprintln!("WRITE HAPPENED!"); let mut display = Nextion::new(&mut uart0); display.send_command(b"page page0"); loop {