eculocate

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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:
Mexamples/.cargo/config.toml | 1+
Mexamples/Cargo.lock | 14++++++++++++++
Mexamples/Cargo.toml | 3++-
Mexamples/src/main.rs | 28+++++++++++++++++++++++++++-
Msrc/lib.rs | 2+-
Msrc/mmu_ll/mod.rs | 1+
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)