aboutsummaryrefslogtreecommitdiff
path: root/imxrt1170evk
diff options
context:
space:
mode:
authorIan McIntyre <me@mciantyre.dev>2025-11-30 19:56:39 -0500
committerIan McIntyre <me@mciantyre.dev>2025-11-30 19:56:39 -0500
commit635bee2d21704fd76d066be0f66ce2c70ebaacb7 (patch)
tree98cbf691f75a478b6e849fe8e1de641f50094d61 /imxrt1170evk
First commit
Diffstat (limited to 'imxrt1170evk')
-rw-r--r--imxrt1170evk/Cargo.toml20
-rw-r--r--imxrt1170evk/build.rs8
-rw-r--r--imxrt1170evk/examples/smoke.rs35
-rw-r--r--imxrt1170evk/src/lib.rs6
-rw-r--r--imxrt1170evk/src/main.rs25
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, &sector);
+
+ 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,
+ }]
+});