diff options
| author | Ian McIntyre <me@mciantyre.dev> | 2025-11-30 19:56:39 -0500 |
|---|---|---|
| committer | Ian McIntyre <me@mciantyre.dev> | 2025-11-30 19:56:39 -0500 |
| commit | 635bee2d21704fd76d066be0f66ce2c70ebaacb7 (patch) | |
| tree | 98cbf691f75a478b6e849fe8e1de641f50094d61 /imxrt1170evk | |
First commit
Diffstat (limited to 'imxrt1170evk')
| -rw-r--r-- | imxrt1170evk/Cargo.toml | 20 | ||||
| -rw-r--r-- | imxrt1170evk/build.rs | 8 | ||||
| -rw-r--r-- | imxrt1170evk/examples/smoke.rs | 35 | ||||
| -rw-r--r-- | imxrt1170evk/src/lib.rs | 6 | ||||
| -rw-r--r-- | imxrt1170evk/src/main.rs | 25 |
5 files changed, 94 insertions, 0 deletions
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<Flash>; 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, + }] +}); |
