fix: resolve ESP32-S3 linker errors, all boards produce firmware

Three fixes:
- Add .cargo/config.toml with -Tlinkall.x for xtensa target (resolves
  ROM functions, interrupt handlers, memory layout)
- Add integrated-timers feature to embassy-executor for ESP32 boards
  (resolves _embassy_time_schedule_wake)
- Add `use esp_println as _` to pull in defmt global_logger (was being
  stripped as dead code because nothing referenced the crate)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
swaitsandClaude Opus 4.6 committed 2026-03-29 20:42:55 -06:00
1 parent 7bf4041357
commit da37f6aa8a
4 files changed
+11

No files matched your search

+6
View File
@@ -0,0 +1,6 @@
[target.xtensa-esp32s3-none-elf]
rustflags = [
"-C", "link-arg=-nostartfiles",
"-C", "link-arg=-Tlinkall.x",
"-C", "link-arg=-Tdefmt.x",
]
Generated
+2
View File
@@ -359,6 +359,8 @@ dependencies = [
"critical-section",
"document-features",
"embassy-executor-macros",
"embassy-time-driver",
"embassy-time-queue-driver",
]
[[package]]
+2
View File
@@ -47,12 +47,14 @@ heltec_v3 = [
"dep:esp-hal",
"dep:esp-hal-embassy",
"dep:esp-println",
"embassy-executor/integrated-timers",
]
heltec_v4 = [
"dep:esp-backtrace",
"dep:esp-hal",
"dep:esp-hal-embassy",
"dep:esp-println",
"embassy-executor/integrated-timers",
]
rak_wisblock_4631 = [
"dep:cortex-m-rt",
+1
View File
@@ -17,6 +17,7 @@ cfg_if::cfg_if! {
use panic_probe as _;
} else if #[cfg(any(feature = "heltec_v3", feature = "heltec_v4"))] {
use esp_backtrace as _;
use esp_println as _; // provides defmt global_logger
}
}