Compare commits

..

2 commits

Author SHA1 Message Date
caf9134210 meow 2025-03-04 15:44:35 +03:00
303db64fda add firmware structure 2025-03-04 15:44:05 +03:00
8 changed files with 3892 additions and 1474 deletions

View file

@ -0,0 +1,15 @@
[build]
target = "xtensa-esp32s2-espidf"
[target.xtensa-esp32s2-espidf]
linker = "ldproxy"
runner = "espflash flash --monitor --before no-reset -a no-reset --no-stub"
rustflags = [ "--cfg", "espidf_time64"]
[unstable]
build-std = ["std", "panic_abort"]
[env]
MCU="esp32s2"
# Note: this variable is not used by the pio builder (`cargo build --features pio`)
ESP_IDF_VERSION = "v5.3.2"

4
firmware/.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
/.vscode
/.embuild
/target
/Cargo.lock

30
firmware/Cargo.toml Normal file
View file

@ -0,0 +1,30 @@
[package]
name = "beans32"
version = "0.1.0"
authors = ["soffee <sophia@soffee.space>"]
edition = "2021"
resolver = "2"
rust-version = "1.77"
[[bin]]
name = "beans32"
harness = false # do not use the built in cargo test harness -> resolve rust-analyzer errors
[profile.release]
opt-level = "s"
[profile.dev]
debug = true # Symbols are nice and they don't increase the size on Flash
opt-level = "z"
[features]
default = []
experimental = ["esp-idf-svc/experimental"]
[dependencies]
log = "0.4"
esp-idf-svc = { version = "0.51", features = ["critical-section", "embassy-time-driver", "embassy-sync"] }
[build-dependencies]
embuild = "0.33"

3
firmware/build.rs Normal file
View file

@ -0,0 +1,3 @@
fn main() {
embuild::espidf::sysenv::output();
}

View file

@ -0,0 +1,2 @@
[toolchain]
channel = "esp"

View file

@ -0,0 +1,12 @@
# Rust often needs a bit of an extra main task stack size compared to C (the default is 3K)
CONFIG_ESP_MAIN_TASK_STACK_SIZE=8000
# Use this to set FreeRTOS kernel tick frequency to 1000 Hz (100 Hz by default).
# This allows to use 1 ms granularity for thread sleeps (10 ms by default).
#CONFIG_FREERTOS_HZ=1000
# Workaround for https://github.com/espressif/esp-idf/issues/7631
#CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
#CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=n
CONFIG_ESP_CONSOLE_UART=CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG

27
firmware/src/main.rs Normal file
View file

@ -0,0 +1,27 @@
use esp_idf_svc::hal::{delay::FreeRtos, gpio::{PinDriver}, prelude::Peripherals};
fn main() {
// It is necessary to call this function once. Otherwise some patches to the runtime
// implemented by esp-idf-sys might not link properly. See https://github.com/esp-rs/esp-idf-template/issues/71
esp_idf_svc::sys::link_patches();
// Bind the log crate to the ESP Logging facilities
esp_idf_svc::log::EspLogger::initialize_default();
let peripherals = Peripherals::take().unwrap();
let mut led_pin = PinDriver::output(peripherals.pins.gpio15).unwrap();
let mut led2_pin = PinDriver::output(peripherals.pins.gpio3).unwrap();
log::info!("Hello, world!");
loop {
led_pin.set_low().unwrap();
led2_pin.set_low().unwrap();
FreeRtos::delay_ms(1000);
led_pin.set_high().unwrap();
led2_pin.set_high().unwrap();
FreeRtos::delay_ms(1000);
println!("blink");
}
}

File diff suppressed because it is too large Load diff