aboutsummaryrefslogtreecommitdiff
path: root/tests/rp/src
diff options
context:
space:
mode:
authorMathias <[email protected]>2022-10-26 10:01:52 +0200
committerMathias <[email protected]>2022-10-26 12:24:04 +0200
commit80e58426fcf40b6cea28368e43a7289e827461cf (patch)
tree48ce94c3404b3b95c082914376d5510658a18f38 /tests/rp/src
parentad0eb3f4bd2b124fcb7cda6d6bd88e2b12632ea7 (diff)
Add flash example & flash HIL test
Diffstat (limited to 'tests/rp/src')
-rw-r--r--tests/rp/src/bin/flash.rs48
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/rp/src/bin/flash.rs b/tests/rp/src/bin/flash.rs
new file mode 100644
index 000000000..4cbd78fe9
--- /dev/null
+++ b/tests/rp/src/bin/flash.rs
@@ -0,0 +1,48 @@
1#![no_std]
2#![no_main]
3#![feature(type_alias_impl_trait)]
4
5use defmt::*;
6use embassy_executor::Spawner;
7use embassy_rp::flash::{ERASE_SIZE, FLASH_BASE};
8use embedded_storage::nor_flash::{NorFlash, ReadNorFlash};
9use {defmt_rtt as _, panic_probe as _};
10
11const ADDR_OFFSET: u32 = 0x4000;
12
13#[embassy_executor::main]
14async fn main(_spawner: Spawner) {
15 let p = embassy_rp::init(Default::default());
16 info!("Hello World!");
17
18 let mut flash = embassy_rp::flash::Flash::<_, { 2 * 1024 * 1024 }>::new(p.FLASH);
19
20 let mut buf = [0u8; ERASE_SIZE];
21 defmt::unwrap!(flash.read(ADDR_OFFSET, &mut buf));
22
23 info!("Addr of flash block is {:x}", ADDR_OFFSET + FLASH_BASE as u32);
24 info!("Contents start with {=[u8]}", buf[0..4]);
25
26 defmt::unwrap!(flash.erase(ADDR_OFFSET, ADDR_OFFSET + ERASE_SIZE as u32));
27
28 defmt::unwrap!(flash.read(ADDR_OFFSET, &mut buf));
29 info!("Contents after erase starts with {=[u8]}", buf[0..4]);
30 if buf.iter().any(|x| *x != 0xFF) {
31 defmt::panic!("unexpected");
32 }
33
34 for b in buf.iter_mut() {
35 *b = 0xDA;
36 }
37
38 defmt::unwrap!(flash.write(ADDR_OFFSET, &mut buf));
39
40 defmt::unwrap!(flash.read(ADDR_OFFSET, &mut buf));
41 info!("Contents after write starts with {=[u8]}", buf[0..4]);
42 if buf.iter().any(|x| *x != 0xDA) {
43 defmt::panic!("unexpected");
44 }
45
46 info!("Test OK");
47 cortex_m::asm::bkpt();
48}