read/
read.rs

1// SPDX-License-Identifier: MIT
2
3extern crate libc;
4extern crate intel_spi;
5
6use intel_spi::Spi;
7use std::fs;
8
9mod util;
10
11fn main() {
12    let mut spi = unsafe { util::get_spi() };
13
14    eprintln!("SPI HSFSTS_CTL: {:?}", spi.regs.hsfsts_ctl());
15
16    let len = spi.len().unwrap();
17    eprintln!("SPI ROM: {} KB", len / 1024);
18
19    let mut data = Vec::with_capacity(len);
20    while data.len() < len {
21        let mut buf = [0; 65536];
22        let read = spi.read(data.len(), &mut buf).unwrap();
23        data.extend_from_slice(&buf[..read]);
24        eprint!("\rSPI READ: {} KB", data.len() / 1024);
25    }
26
27    eprintln!();
28
29    fs::write("read.rom", &data).unwrap();
30}