* Add esp-storage to esp-hal repo * Include needed feature to lint esp-storage * Don't lint esp-wifi for now * Remove redundant copies of license texts * Try `git-fetch-with-cli` * Fix esp-pacs URL * git-fetch-with-cli, again * desperately trying
51 lines
1.5 KiB
Rust
51 lines
1.5 KiB
Rust
//! Writes and reads flash memory.
|
|
//!
|
|
//! Uses flash address 0x9000 (default NVS)
|
|
//! See https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/partition-tables.html#built-in-partition-tables
|
|
|
|
//% FEATURES: esp-storage
|
|
//% CHIPS: esp32 esp32c2 esp32c3 esp32c6 esp32h2 esp32s2 esp32s3
|
|
|
|
#![no_std]
|
|
#![no_main]
|
|
|
|
use embedded_storage::{ReadStorage, Storage};
|
|
use esp_backtrace as _;
|
|
use esp_hal::prelude::*;
|
|
use esp_println::println;
|
|
use esp_storage::FlashStorage;
|
|
|
|
#[entry]
|
|
fn main() -> ! {
|
|
let mut bytes = [0u8; 32];
|
|
|
|
let mut flash = FlashStorage::new();
|
|
|
|
let flash_addr = 0x9000;
|
|
println!("Flash size = {}", flash.capacity());
|
|
println!();
|
|
|
|
flash.read(flash_addr, &mut bytes).unwrap();
|
|
println!("Read from {:x}: {:02x?}", flash_addr, &bytes[..32]);
|
|
|
|
bytes[0x00] = bytes[0x00].wrapping_add(1);
|
|
bytes[0x01] = bytes[0x01].wrapping_add(2);
|
|
bytes[0x02] = bytes[0x02].wrapping_add(3);
|
|
bytes[0x03] = bytes[0x03].wrapping_add(4);
|
|
bytes[0x04] = bytes[0x04].wrapping_add(1);
|
|
bytes[0x05] = bytes[0x05].wrapping_add(2);
|
|
bytes[0x06] = bytes[0x06].wrapping_add(3);
|
|
bytes[0x07] = bytes[0x07].wrapping_add(4);
|
|
|
|
flash.write(flash_addr, &bytes).unwrap();
|
|
println!("Written to {:x}: {:02x?}", flash_addr, &bytes[..32]);
|
|
|
|
let mut reread_bytes = [0u8; 32];
|
|
flash.read(flash_addr, &mut reread_bytes).unwrap();
|
|
println!("Read from {:x}: {:02x?}", flash_addr, &reread_bytes[..32]);
|
|
|
|
println!("Reset (CTRL-R in espflash) to re-read the persisted data.");
|
|
|
|
loop {}
|
|
}
|