add firmware structure

This commit is contained in:
soffee 2025-03-04 15:44:05 +03:00
parent 2bdb4060ce
commit 303db64fda
7 changed files with 75 additions and 0 deletions

View file

@ -0,0 +1,16 @@
[build]
target = "xtensa-esp32s2-espidf"
[target.xtensa-esp32s2-espidf]
linker = "ldproxy"
runner = "espflash flash --monitor"
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,10 @@
# 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

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

@ -0,0 +1,10 @@
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();
log::info!("Hello, world!");
}