#![no_main] #![no_std] use defmt_rtt as _; use imxrt1010evk::{self, Algorithm}; use panic_probe as _; const LAST_SECTOR: usize = Algorithm::flash_size_bytes() - Algorithm::sector_size_bytes(); #[imxrt_rt::entry] fn main() -> ! { for _ in 0..5 { let mut at25sf128 = Algorithm::initialize(); let mut sector = [0_u8; Algorithm::sector_size_bytes()]; at25sf128.flash_read(0x400, &mut sector[..4]); let tag = u32::from_le_bytes(sector[..4].try_into().unwrap()); defmt::assert!(0x42464346 == tag, "{=u32:#010X}", tag); at25sf128.flash_erase_sector(LAST_SECTOR + 256); sector.fill(0); at25sf128.flash_write(LAST_SECTOR, §or); sector.fill(u8::MAX); at25sf128.flash_read(LAST_SECTOR, &mut sector); defmt::assert!(sector.iter().all(|byte| *byte == 0)); at25sf128.flash_erase_sector(LAST_SECTOR + 123); at25sf128.flash_read(LAST_SECTOR, &mut sector); defmt::assert!(sector.iter().all(|byte| *byte == u8::MAX)); } defmt::println!("Pass"); loop {} }