From 635bee2d21704fd76d066be0f66ce2c70ebaacb7 Mon Sep 17 00:00:00 2001 From: Ian McIntyre Date: Sun, 30 Nov 2025 19:56:39 -0500 Subject: First commit --- imxrt1170evk/Cargo.toml | 20 ++++++++++++++++++++ imxrt1170evk/build.rs | 8 ++++++++ imxrt1170evk/examples/smoke.rs | 35 +++++++++++++++++++++++++++++++++++ imxrt1170evk/src/lib.rs | 6 ++++++ imxrt1170evk/src/main.rs | 25 +++++++++++++++++++++++++ 5 files changed, 94 insertions(+) create mode 100644 imxrt1170evk/Cargo.toml create mode 100644 imxrt1170evk/build.rs create mode 100644 imxrt1170evk/examples/smoke.rs create mode 100644 imxrt1170evk/src/lib.rs create mode 100644 imxrt1170evk/src/main.rs (limited to 'imxrt1170evk') diff --git a/imxrt1170evk/Cargo.toml b/imxrt1170evk/Cargo.toml new file mode 100644 index 0000000..2e65e13 --- /dev/null +++ b/imxrt1170evk/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "imxrt1170evk" +version = "0.1.0" +edition = "2024" +publish = false + +[dependencies] +cortex-m = { workspace = true } +defmt-rtt = { workspace = true } + +imxrt1170-flash-algos = { workspace = true } +flash-algorithm = { workspace = true } +panic-probe = { workspace = true } + +[build-dependencies] +imxrt-rt = { workspace = true, features = ["device"] } + +[dev-dependencies] +defmt = { workspace = true } +imxrt-rt = { workspace = true, features = ["device"] } diff --git a/imxrt1170evk/build.rs b/imxrt1170evk/build.rs new file mode 100644 index 0000000..c4379fc --- /dev/null +++ b/imxrt1170evk/build.rs @@ -0,0 +1,8 @@ +use imxrt_rt::Family; + +fn main() { + imxrt_rt::RuntimeBuilder::from_ram(Family::Imxrt1170) + .device_script_name("imxrt1170.x") + .build() + .unwrap(); +} diff --git a/imxrt1170evk/examples/smoke.rs b/imxrt1170evk/examples/smoke.rs new file mode 100644 index 0000000..df91789 --- /dev/null +++ b/imxrt1170evk/examples/smoke.rs @@ -0,0 +1,35 @@ +#![no_main] +#![no_std] + +use defmt_rtt as _; +use imxrt1170evk::{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 is25wp = Algorithm::initialize(); + + let mut sector = [0_u8; Algorithm::sector_size_bytes()]; + is25wp.flash_read(0x400, &mut sector[..4]); + defmt::assert!(0x42464346 == u32::from_le_bytes(sector[..4].try_into().unwrap())); + + is25wp.flash_erase_sector(LAST_SECTOR + 256); + + sector.fill(0); + is25wp.flash_write(LAST_SECTOR, §or); + + sector.fill(u8::MAX); + is25wp.flash_read(LAST_SECTOR, &mut sector); + defmt::assert!(sector.iter().all(|byte| *byte == 0)); + + is25wp.flash_erase_sector(LAST_SECTOR + 123); + + is25wp.flash_read(LAST_SECTOR, &mut sector); + defmt::assert!(sector.iter().all(|byte| *byte == u8::MAX)); + } + defmt::println!("Pass"); + loop {} +} diff --git a/imxrt1170evk/src/lib.rs b/imxrt1170evk/src/lib.rs new file mode 100644 index 0000000..5410acd --- /dev/null +++ b/imxrt1170evk/src/lib.rs @@ -0,0 +1,6 @@ +#![no_std] + +use cortex_m as _; + +pub use imxrt1170_flash_algos::flash::issi::Is25WP128 as Flash; +pub type Algorithm = imxrt1170_flash_algos::Algorithm; diff --git a/imxrt1170evk/src/main.rs b/imxrt1170evk/src/main.rs new file mode 100644 index 0000000..6b8483b --- /dev/null +++ b/imxrt1170evk/src/main.rs @@ -0,0 +1,25 @@ +#![no_std] +#![no_main] + +use defmt_rtt as _; +use panic_probe as _; + +use imxrt1170evk::Algorithm; + +flash_algorithm::algorithm!(Algorithm, { + device_name: "imxrt1170_is25wp128_133mhz", + device_type: DeviceType::Onchip, + flash_address: Algorithm::flash_address() as _, + flash_size: Algorithm::flash_size_bytes() as _, + // We support page crossings. Suggest a larger page + // size so that probe-rs places larger buffers into + // RAM per programming operation, reducing overhead. + page_size: 4096, + empty_value: 0xFF, + program_time_out: 1000, + erase_time_out: 2000, + sectors: [{ + size: Algorithm::sector_size_bytes() as u32, + address: 0x0, + }] +}); -- cgit v1.2.3