Skip to main content

Devices

Struct Devices 

Source
pub struct Devices {
Show 13 fields pub flash: Vec<u8>, pub uart: Vec<u8>, pub link_out: VecDeque<u8>, pub link_in: VecDeque<u8>, pub buttons: u64, pub leds: u64, pub switches: u64, pub rtl_md5: [u8; 16], pub ddr_ready: bool, pub ddr_failed: bool, pub cycles: u64, pub exit: Option<u64>, pub reset: bool, /* private fields */
}
Expand description

The board’s devices, as the model of the system around the hart: memory, the flash behind the streaming port, and every register in REGS with the behaviour its line documents. The RTL SoC is held to these. The bus completes every access the memory map permits (memory_map): a device address no register holds reads as zero and ignores writes.

Fields§

§flash: Vec<u8>

The flash: the bitstream’s 4 MB, then the boot image.

§uart: Vec<u8>

Every byte written to the log UART.

§link_out: VecDeque<u8>

Bytes the hart sent into the terminal link.

§link_in: VecDeque<u8>

Bytes waiting for the hart from the terminal link.

§buttons: u64§leds: u64§switches: u64§rtl_md5: [u8; 16]

The bitstream’s RTL fingerprint.

§ddr_ready: bool

Whether the DDR2 has calibrated (and whether it failed to).

§ddr_failed: bool§cycles: u64

Clock cycles since reset, as SYS_CYCLES reads them.

§exit: Option<u64>

The status the firmware stopped the board with.

§reset: bool

The firmware asked the board to restart.

Implementations§

Source§

impl Devices

Source

pub fn new(rom: &[u8], flash: Vec<u8>, rtl_md5: [u8; 16]) -> Self

The devices at reset, with rom in the boot ROM and flash behind the streaming port.

Trait Implementations§

Source§

impl Bus for Devices

Source§

fn read(&mut self, addr: u64, size: u8) -> Result<u64, BusError>

Source§

fn write(&mut self, addr: u64, size: u8, value: u64) -> Result<(), BusError>

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,