commit 4b9d6da6fcbe7815e155dbec54be750b699df809
parent ec1b9a1e723e9a16a4d1f1bdb6c14af33d763c91
Author: filipton <filipton12@gmail.com>
Date: Thu, 2 Jan 2025 17:38:27 +0100
feat: add esp32 target in example
chore: soc_address_in_bus feature gate
Diffstat:
6 files changed, 46 insertions(+), 3 deletions(-)
diff --git a/examples/.cargo/config.toml b/examples/.cargo/config.toml
@@ -1,6 +1,7 @@
[alias]
esp32c3 = "run --no-default-features --features=esp32c3 --target=riscv32imc-unknown-none-elf"
esp32s3 = "run --no-default-features --features=esp32s3 --target=xtensa-esp32s3-none-elf"
+esp32 = "run --no-default-features --features=esp32 --target=xtensa-esp32-none-elf"
[target.'cfg(target_arch = "riscv32")']
runner = "espflash flash --monitor -T ./partitions.csv --erase-parts otadata"
diff --git a/examples/Cargo.lock b/examples/Cargo.lock
@@ -558,6 +558,7 @@ dependencies = [
"esp-metadata",
"esp-riscv-rt",
"esp-synopsys-usb-otg",
+ "esp32",
"esp32c3",
"esp32s3",
"fugit",
@@ -599,6 +600,9 @@ name = "esp-hal-ota"
version = "0.1.4"
dependencies = [
"embedded-storage",
+ "esp32",
+ "esp32c3",
+ "esp32s3",
"log",
]
@@ -741,6 +745,16 @@ dependencies = [
]
[[package]]
+name = "esp32"
+version = "0.34.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af7d3208ef4ffd96c3105b3fb6fd19e8512bc128b24cb866dc26a734b09f454c"
+dependencies = [
+ "critical-section",
+ "vcell",
+]
+
+[[package]]
name = "esp32c3"
version = "0.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/examples/Cargo.toml b/examples/Cargo.toml
@@ -35,10 +35,11 @@ debug = 2
debug-assertions = false
incremental = false
lto = 'fat'
-opt-level = 's'
+opt-level = 2
overflow-checks = false
[features]
default = ["esp32s3"]
esp32s3 = ["esp-backtrace/esp32s3", "esp-hal/esp32s3", "esp-println/esp32s3", "esp-wifi/esp32s3", "esp-hal-embassy/esp32s3", "esp-storage/esp32s3", "esp-hal-ota/esp32s3"]
esp32c3 = ["esp-backtrace/esp32c3", "esp-hal/esp32c3", "esp-println/esp32c3", "esp-wifi/esp32c3", "esp-hal-embassy/esp32c3", "esp-storage/esp32c3", "esp-hal-ota/esp32c3"]
+esp32 = ["esp-backtrace/esp32", "esp-hal/esp32", "esp-println/esp32", "esp-wifi/esp32", "esp-hal-embassy/esp32", "esp-storage/esp32", "esp-hal-ota/esp32"]
diff --git a/examples/src/main.rs b/examples/src/main.rs
@@ -39,7 +39,33 @@ macro_rules! mk_static {
#[main]
async fn main(spawner: Spawner) {
- esp_alloc::heap_allocator!(150 * 1024);
+ #[cfg(not(feature = "esp32"))]
+ {
+ esp_alloc::heap_allocator!(150 * 1024);
+ }
+
+ #[cfg(feature = "esp32")]
+ {
+ static mut HEAP: core::mem::MaybeUninit<[u8; 30 * 1024]> = core::mem::MaybeUninit::uninit();
+
+ #[link_section = ".dram2_uninit"]
+ static mut HEAP2: core::mem::MaybeUninit<[u8; 64 * 1024]> =
+ core::mem::MaybeUninit::uninit();
+
+ unsafe {
+ esp_alloc::HEAP.add_region(esp_alloc::HeapRegion::new(
+ HEAP.as_mut_ptr() as *mut u8,
+ core::mem::size_of_val(&*core::ptr::addr_of!(HEAP)),
+ esp_alloc::MemoryCapability::Internal.into(),
+ ));
+
+ esp_alloc::HEAP.add_region(esp_alloc::HeapRegion::new(
+ HEAP2.as_mut_ptr() as *mut u8,
+ core::mem::size_of_val(&*core::ptr::addr_of!(HEAP2)),
+ esp_alloc::MemoryCapability::Internal.into(),
+ ));
+ }
+ }
let peripherals = esp_hal::init(esp_hal::Config::default());
//let io = Io::new(peripherals.GPIO, peripherals.IO_MUX);
diff --git a/src/lib.rs b/src/lib.rs
@@ -1,5 +1,5 @@
#![no_std]
-#![feature(concat_idents)]
+#![cfg_attr(any(feature = "esp32", feature = "esp32s2"), feature(concat_idents))]
#![cfg_attr(feature = "esp32", feature(asm_experimental_arch))]
#![doc = include_str!("../README.md")]
diff --git a/src/mmu_ll/mod.rs b/src/mmu_ll/mod.rs
@@ -1,3 +1,4 @@
+#[cfg(any(feature = "esp32", feature = "esp32s2"))]
macro_rules! soc_address_in_bus {
($bus_name:ident, $vaddr:ident) => {{
$vaddr >= concat_idents!($bus_name, _ADDRESS_LOW)