SD reader seems working (actually Read+Write+Seek)
This commit is contained in:
parent
d539597f56
commit
38e5162ee0
|
@ -57,7 +57,12 @@ pub fn main_core0() {
|
|||
// buffer.set_len(128);
|
||||
// }
|
||||
let mut buffer: [u8; 1000] = [0; 1000];
|
||||
reader.seek(SeekFrom::Start(1000));
|
||||
for i in 0..buffer.len() {
|
||||
buffer[i] = (i % 64) as u8;
|
||||
}
|
||||
// just trying randomly access some portion of the memory...
|
||||
reader.write(&buffer[0..800]).unwrap();
|
||||
reader.seek(SeekFrom::Start(30)).unwrap();
|
||||
reader.read(&mut buffer).unwrap();
|
||||
for i in 0..buffer.len() {
|
||||
info!("buffer[{}] = {:0X}", i, buffer[i]);
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
use core_io::{BufRead, Error, ErrorKind, Read, Result as IoResult, Seek, SeekFrom, Write};
|
||||
use libboard_zynq::sdio::{sd_card::SdCard, CmdTransferError};
|
||||
use log::debug;
|
||||
|
||||
fn cmd_error_to_io_error(_: CmdTransferError) -> Error {
|
||||
Error::new(ErrorKind::Other, "Command transfer error")
|
||||
|
@ -102,7 +101,6 @@ impl<'a> Read for SdReader<'a> {
|
|||
fn read(&mut self, buf: &mut [u8]) -> IoResult<usize> {
|
||||
let total_length = buf.len();
|
||||
let (a, b, c) = self.block_align_mut(buf);
|
||||
debug!("{}, {}, {}", a.len(), b.len(), c.len());
|
||||
self.read_unaligned(a)?;
|
||||
if b.len() > 0 {
|
||||
// invalidate internal buffer
|
||||
|
@ -156,7 +154,7 @@ impl<'a> Write for SdReader<'a> {
|
|||
self.byte_addr / BLOCK_SIZE as u32,
|
||||
(b.len() / BLOCK_SIZE) as u16,
|
||||
b,
|
||||
);
|
||||
).map_err(cmd_error_to_io_error)?;
|
||||
}
|
||||
self.write_unaligned(c)?;
|
||||
Ok(buf.len())
|
||||
|
|
Loading…
Reference in New Issue