aboutsummaryrefslogtreecommitdiff
path: root/imxrt1010evk
diff options
context:
space:
mode:
Diffstat (limited to 'imxrt1010evk')
-rw-r--r--imxrt1010evk/Cargo.toml20
-rw-r--r--imxrt1010evk/build.rs8
-rw-r--r--imxrt1010evk/examples/smoke.rs36
-rw-r--r--imxrt1010evk/src/lib.rs7
-rw-r--r--imxrt1010evk/src/main.rs25
5 files changed, 96 insertions, 0 deletions
diff --git a/imxrt1010evk/Cargo.toml b/imxrt1010evk/Cargo.toml
new file mode 100644
index 0000000..455d16d
--- /dev/null
+++ b/imxrt1010evk/Cargo.toml
@@ -0,0 +1,20 @@
+[package]
+name = "imxrt1010evk"
+version = "0.1.0"
+edition = "2024"
+publish = false
+
+[dependencies]
+cortex-m = { workspace = true }
+defmt-rtt = { workspace = true }
+
+imxrt1010-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/imxrt1010evk/build.rs b/imxrt1010evk/build.rs
new file mode 100644
index 0000000..2c747cc
--- /dev/null
+++ b/imxrt1010evk/build.rs
@@ -0,0 +1,8 @@
+use imxrt_rt::Family;
+
+fn main() {
+ imxrt_rt::RuntimeBuilder::from_ram(Family::Imxrt1010)
+ .device_script_name("imxrt1010.x")
+ .build()
+ .unwrap();
+}
diff --git a/imxrt1010evk/examples/smoke.rs b/imxrt1010evk/examples/smoke.rs
new file mode 100644
index 0000000..820d610
--- /dev/null
+++ b/imxrt1010evk/examples/smoke.rs
@@ -0,0 +1,36 @@
+#![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, &sector);
+
+ 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 {}
+}
diff --git a/imxrt1010evk/src/lib.rs b/imxrt1010evk/src/lib.rs
new file mode 100644
index 0000000..5bc0437
--- /dev/null
+++ b/imxrt1010evk/src/lib.rs
@@ -0,0 +1,7 @@
+#![no_std]
+
+use cortex_m as _;
+
+pub use imxrt1010_flash_algos::flash::adesto::At25sf128 as Flash;
+
+pub type Algorithm = imxrt1010_flash_algos::Algorithm<Flash>;
diff --git a/imxrt1010evk/src/main.rs b/imxrt1010evk/src/main.rs
new file mode 100644
index 0000000..c1c715d
--- /dev/null
+++ b/imxrt1010evk/src/main.rs
@@ -0,0 +1,25 @@
+#![no_std]
+#![no_main]
+
+use defmt_rtt as _;
+use panic_probe as _;
+
+use imxrt1010evk::Algorithm;
+
+flash_algorithm::algorithm!(Algorithm, {
+ device_name: "imxrt1010_at25sf128_120mhz",
+ 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,
+ }]
+});