diff --git a/firmware/examples/zedboard/src/bin/qspi.rs b/firmware/examples/zedboard/src/bin/qspi.rs index 34e2fd9..dd7159a 100644 --- a/firmware/examples/zedboard/src/bin/qspi.rs +++ b/firmware/examples/zedboard/src/bin/qspi.rs @@ -129,13 +129,13 @@ async fn main(_spawner: Spawner) -> ! { spansion_qspi .erase_sector(0x10000) .expect("erasing sector failed"); - spansion_qspi.read_page_fast_read(0x10000, &mut read_buf, true); + spansion_qspi.read_fast_read(0x10000, &mut read_buf, true); for read in read_buf.iter() { assert_eq!(*read, 0xFF); } read_buf.fill(0); spansion_qspi.write_pages(0x10000, &write_buf).unwrap(); - spansion_qspi.read_page_fast_read(0x10000, &mut read_buf, true); + spansion_qspi.read_fast_read(0x10000, &mut read_buf, true); for (read, written) in read_buf.iter().zip(write_buf.iter()) { assert_eq!(read, written); } diff --git a/firmware/zedboard-bsp/src/qspi_spansion.rs b/firmware/zedboard-bsp/src/qspi_spansion.rs index f099537..d3dd194 100644 --- a/firmware/zedboard-bsp/src/qspi_spansion.rs +++ b/firmware/zedboard-bsp/src/qspi_spansion.rs @@ -500,7 +500,7 @@ impl QspiSpansionS25Fl256SIoMode { return Err(AddrError::Alignment.into()); } for chunk in data.chunks(PAGE_SIZE) { - self.program_page(addr, chunk)?; + self.program(addr, chunk)?; addr += PAGE_SIZE as u32; } Ok(()) @@ -510,13 +510,10 @@ impl QspiSpansionS25Fl256SIoMode { /// This function will block until the operation has completed. /// /// The data length max not exceed the page size [PAGE_SIZE]. - pub fn program_page(&mut self, addr: u32, data: &[u8]) -> Result<(), ProgramPageError> { + pub fn program(&mut self, addr: u32, data: &[u8]) -> Result<(), ProgramPageError> { if addr + data.len() as u32 > u24::MAX.as_u32() { return Err(AddrError::OutOfRange.into()); } - if !addr.is_multiple_of(PAGE_SIZE as u32) { - return Err(AddrError::Alignment.into()); - } if data.len() > PAGE_SIZE { return Err(ProgramPageError::DataLargerThanPage); } @@ -613,7 +610,7 @@ impl QspiSpansionS25Fl256SIoMode { } } - fn generic_read_page(&self, addr: u32, buf: &mut [u8], dummy_byte: bool, fast_read: bool) { + fn generic_read(&self, addr: u32, buf: &mut [u8], dummy_byte: bool, fast_read: bool) { let mut offset = 0; let reg_id = if fast_read { RegisterId::FastRead @@ -733,13 +730,13 @@ impl QspiSpansionS25Fl256SIoMode { } } - pub fn read_page_fast_read(&self, addr: u32, buf: &mut [u8], dummy_byte: bool) { - self.generic_read_page(addr, buf, dummy_byte, true) + pub fn read_fast_read(&self, addr: u32, buf: &mut [u8], dummy_byte: bool) { + self.generic_read(addr, buf, dummy_byte, true) } /// Only works if the clock speed is slower than 50 MHz according to datasheet. pub fn read_page_read(&self, addr: u32, buf: &mut [u8]) { - self.generic_read_page(addr, buf, false, false) + self.generic_read(addr, buf, false, false) } } diff --git a/firmware/zedboard-qspi-flasher/README.md b/firmware/zedboard-qspi-flasher/README.md index d962b75..0309bea 100644 --- a/firmware/zedboard-qspi-flasher/README.md +++ b/firmware/zedboard-qspi-flasher/README.md @@ -11,4 +11,9 @@ The main `justfile` provides a convenience runner: just flash-nor-zedboard ``` -Please note that `xsct` must be callable for this to be usable. +Please note that `xsct` must be callable for this to be usable which is part of a Xilinx Vitis installation. + +If the hardware server is running on a remote target the IP address can be specified by setting the environment variable ip_address_hw_server. +````sh +$ export ip_address_hw_server= +```` \ No newline at end of file diff --git a/firmware/zedboard-qspi-flasher/src/main.rs b/firmware/zedboard-qspi-flasher/src/main.rs index 3838744..7f0454a 100644 --- a/firmware/zedboard-qspi-flasher/src/main.rs +++ b/firmware/zedboard-qspi-flasher/src/main.rs @@ -148,7 +148,7 @@ fn main() -> ! { let write_size = core::cmp::min(qspi_spansion::PAGE_SIZE, boot_bin_size - current_addr); let write_slice = &boot_bin_slice[current_addr..current_addr + write_size]; log::debug!("Programming address {:#x}", current_addr); - match spansion_qspi.program_page(current_addr as u32, write_slice) { + match spansion_qspi.program(current_addr as u32, write_slice) { Ok(()) => {} Err(e) => { log::error!( @@ -160,7 +160,7 @@ fn main() -> ! { } } if VERIFY_PROGRAMMING { - spansion_qspi.read_page_fast_read( + spansion_qspi.read_fast_read( current_addr as u32, &mut read_buf[0..write_size], true,