probe_rs

Trait MemoryMappedRegister

Source
pub trait MemoryMappedRegister<T>:
    Clone
    + From<T>
    + Into<T>
    + Sized
    + Debug {
    const ADDRESS_OFFSET: u64;
    const NAME: &'static str;

    // Provided methods
    fn get_mmio_address_from_base(
        base_address: u64,
    ) -> Result<u64, RegisterAddressOutOfBounds> { ... }
    fn get_mmio_address() -> u64 { ... }
}
Expand description

A memory mapped register, for instance ARM debug registers (DHCSR, etc).

Required Associated Constants§

Source

const ADDRESS_OFFSET: u64

The register’s address in the target memory. For some architectures (e.g. ARM Cortex-A) this address is offset from a base address. For others (e.g. ARM Cortex-M, RISC-V) this address is absolute.

Source

const NAME: &'static str

The register’s name.

Provided Methods§

Source

fn get_mmio_address_from_base( base_address: u64, ) -> Result<u64, RegisterAddressOutOfBounds>

Get the register’s address in the memory map. For architectures like ARM Cortex-A, this address is offset from a base address, which must be supplied when calling this method. For others (e.g. ARM Cortex-M, RISC-V) where this address is a constant, please use MemoryMappedRegister::get_mmio_address.

Source

fn get_mmio_address() -> u64

Get the register’s address in the memory map. For architectures ARM Cortex-M and RISC-V, this address is constant value stored as part of MemoryMappedRegister::ADDRESS_OFFSET. For other architectures (e.g. ARM Cortex-A) where this address is offset from a base address, please use MemoryMappedRegister::get_mmio_address_from_base.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl MemoryMappedRegister<u32> for probe_rs::architecture::arm::armv6m::Aircr

Source§

const ADDRESS_OFFSET: u64 = 3_758_157_068u64

Source§

const NAME: &'static str = "AIRCR"

Source§

impl MemoryMappedRegister<u32> for BpCompx

Source§

const ADDRESS_OFFSET: u64 = 3_758_104_584u64

Source§

const NAME: &'static str = "BP_CTRL0"

Source§

impl MemoryMappedRegister<u32> for BpCtrl

Source§

const ADDRESS_OFFSET: u64 = 3_758_104_576u64

Source§

const NAME: &'static str = "BP_CTRL"

Source§

impl MemoryMappedRegister<u32> for probe_rs::architecture::arm::armv6m::Dcrdr

Source§

const ADDRESS_OFFSET: u64 = 3_758_157_304u64

Source§

const NAME: &'static str = "DCRDR"

Source§

impl MemoryMappedRegister<u32> for probe_rs::architecture::arm::armv6m::Demcr

Source§

const ADDRESS_OFFSET: u64 = 3_758_157_308u64

Source§

const NAME: &'static str = "DEMCR"

Source§

impl MemoryMappedRegister<u32> for probe_rs::architecture::arm::armv6m::Dhcsr

Source§

const ADDRESS_OFFSET: u64 = 3_758_157_296u64

Source§

const NAME: &'static str = "DHCSR"

Source§

impl MemoryMappedRegister<u32> for probe_rs::architecture::arm::armv7m::Aircr

Source§

const ADDRESS_OFFSET: u64 = 3_758_157_068u64

Source§

const NAME: &'static str = "AIRCR"

Source§

impl MemoryMappedRegister<u32> for probe_rs::architecture::arm::armv7m::Dcrdr

Source§

const ADDRESS_OFFSET: u64 = 3_758_157_304u64

Source§

const NAME: &'static str = "DCRDR"

Source§

impl MemoryMappedRegister<u32> for probe_rs::architecture::arm::armv7m::Demcr

Source§

const ADDRESS_OFFSET: u64 = 3_758_157_308u64

Source§

const NAME: &'static str = "DEMCR"

Source§

impl MemoryMappedRegister<u32> for probe_rs::architecture::arm::armv7m::Dhcsr

Source§

const ADDRESS_OFFSET: u64 = 3_758_157_296u64

Source§

const NAME: &'static str = "DHCSR"

Source§

impl MemoryMappedRegister<u32> for probe_rs::architecture::arm::armv7m::FpCtrl

Source§

const ADDRESS_OFFSET: u64 = 3_758_104_576u64

Source§

const NAME: &'static str = "FP_CTRL"

Source§

impl MemoryMappedRegister<u32> for FpRev1CompX

Source§

const ADDRESS_OFFSET: u64 = 3_758_104_584u64

Source§

const NAME: &'static str = "FP_CTRL"

Source§

impl MemoryMappedRegister<u32> for FpRev2CompX

Source§

const ADDRESS_OFFSET: u64 = 3_758_104_584u64

Source§

const NAME: &'static str = "FP_CTRL"

Source§

impl MemoryMappedRegister<u32> for probe_rs::architecture::arm::armv8m::Aircr

Source§

const ADDRESS_OFFSET: u64 = 3_758_157_068u64

Source§

const NAME: &'static str = "AIRCR"

Source§

impl MemoryMappedRegister<u32> for probe_rs::architecture::arm::armv8m::Dcrdr

Source§

const ADDRESS_OFFSET: u64 = 3_758_157_304u64

Source§

const NAME: &'static str = "DCRDR"

Source§

impl MemoryMappedRegister<u32> for probe_rs::architecture::arm::armv8m::Demcr

Source§

const ADDRESS_OFFSET: u64 = 3_758_157_308u64

Source§

const NAME: &'static str = "DEMCR"

Source§

impl MemoryMappedRegister<u32> for probe_rs::architecture::arm::armv8m::Dhcsr

Source§

const ADDRESS_OFFSET: u64 = 3_758_157_296u64

Source§

const NAME: &'static str = "DHCSR"

Source§

impl MemoryMappedRegister<u32> for FpCompN

Source§

const ADDRESS_OFFSET: u64 = 3_758_104_584u64

Source§

const NAME: &'static str = "FP_COMPn"

Source§

impl MemoryMappedRegister<u32> for probe_rs::architecture::arm::armv8m::FpCtrl

Source§

const ADDRESS_OFFSET: u64 = 3_758_104_576u64

Source§

const NAME: &'static str = "FP_CTRL"

Source§

impl MemoryMappedRegister<u32> for Abstractauto

Source§

const ADDRESS_OFFSET: u64 = 24u64

Source§

const NAME: &'static str = "abstractauto"

Source§

impl MemoryMappedRegister<u32> for AccessMemoryCommand

Source§

const ADDRESS_OFFSET: u64 = 23u64

Source§

const NAME: &'static str = "command"

Source§

impl MemoryMappedRegister<u32> for AccessRegisterCommand

Source§

const ADDRESS_OFFSET: u64 = 23u64

Source§

const NAME: &'static str = "command"

Source§

impl MemoryMappedRegister<u32> for Confstrptr0

Source§

const ADDRESS_OFFSET: u64 = 25u64

Source§

const NAME: &'static str = "confstrptr0"

Source§

impl MemoryMappedRegister<u32> for Confstrptr1

Source§

const ADDRESS_OFFSET: u64 = 26u64

Source§

const NAME: &'static str = "confstrptr1"

Source§

impl MemoryMappedRegister<u32> for Confstrptr2

Source§

const ADDRESS_OFFSET: u64 = 27u64

Source§

const NAME: &'static str = "confstrptr2"

Source§

impl MemoryMappedRegister<u32> for Confstrptr3

Source§

const ADDRESS_OFFSET: u64 = 28u64

Source§

const NAME: &'static str = "confstrptr3"

Source§

impl MemoryMappedRegister<u32> for Sbaddress0

Source§

const ADDRESS_OFFSET: u64 = 57u64

Source§

const NAME: &'static str = "sbaddress0"

Source§

impl MemoryMappedRegister<u32> for Sbaddress1

Source§

const ADDRESS_OFFSET: u64 = 58u64

Source§

const NAME: &'static str = "sbaddress1"

Source§

impl MemoryMappedRegister<u32> for Sbaddress2

Source§

const ADDRESS_OFFSET: u64 = 59u64

Source§

const NAME: &'static str = "sbaddress2"

Source§

impl MemoryMappedRegister<u32> for Sbaddress3

Source§

const ADDRESS_OFFSET: u64 = 55u64

Source§

const NAME: &'static str = "sbaddress3"

Source§

impl MemoryMappedRegister<u32> for Sbcs

Source§

const ADDRESS_OFFSET: u64 = 56u64

Source§

const NAME: &'static str = "sbcs"

Source§

impl MemoryMappedRegister<u32> for Sbdata0

Source§

const ADDRESS_OFFSET: u64 = 60u64

Source§

const NAME: &'static str = "sbdata0"

Source§

impl MemoryMappedRegister<u32> for Sbdata1

Source§

const ADDRESS_OFFSET: u64 = 61u64

Source§

const NAME: &'static str = "sbdata1"

Source§

impl MemoryMappedRegister<u32> for Sbdata2

Source§

const ADDRESS_OFFSET: u64 = 62u64

Source§

const NAME: &'static str = "sbdata2"

Source§

impl MemoryMappedRegister<u32> for Sbdata3

Source§

const ADDRESS_OFFSET: u64 = 63u64

Source§

const NAME: &'static str = "sbdata3"

Source§

impl MemoryMappedRegister<u32> for Abstractcs

Source§

const ADDRESS_OFFSET: u64 = 22u64

Source§

const NAME: &'static str = "abstractcs"

Source§

impl MemoryMappedRegister<u32> for Data0

Source§

const ADDRESS_OFFSET: u64 = 4u64

Source§

const NAME: &'static str = "data0"

Source§

impl MemoryMappedRegister<u32> for Data1

Source§

const ADDRESS_OFFSET: u64 = 5u64

Source§

const NAME: &'static str = "data1"

Source§

impl MemoryMappedRegister<u32> for Data2

Source§

const ADDRESS_OFFSET: u64 = 6u64

Source§

const NAME: &'static str = "data2"

Source§

impl MemoryMappedRegister<u32> for Data3

Source§

const ADDRESS_OFFSET: u64 = 7u64

Source§

const NAME: &'static str = "data3"

Source§

impl MemoryMappedRegister<u32> for Data4

Source§

const ADDRESS_OFFSET: u64 = 8u64

Source§

const NAME: &'static str = "data4"

Source§

impl MemoryMappedRegister<u32> for Data5

Source§

const ADDRESS_OFFSET: u64 = 9u64

Source§

const NAME: &'static str = "data5"

Source§

impl MemoryMappedRegister<u32> for Data6

Source§

const ADDRESS_OFFSET: u64 = 10u64

Source§

const NAME: &'static str = "data6"

Source§

impl MemoryMappedRegister<u32> for Data7

Source§

const ADDRESS_OFFSET: u64 = 11u64

Source§

const NAME: &'static str = "data7"

Source§

impl MemoryMappedRegister<u32> for Data8

Source§

const ADDRESS_OFFSET: u64 = 12u64

Source§

const NAME: &'static str = "data8"

Source§

impl MemoryMappedRegister<u32> for Data9

Source§

const ADDRESS_OFFSET: u64 = 13u64

Source§

const NAME: &'static str = "data9"

Source§

impl MemoryMappedRegister<u32> for Data10

Source§

const ADDRESS_OFFSET: u64 = 14u64

Source§

const NAME: &'static str = "data10"

Source§

impl MemoryMappedRegister<u32> for Data11

Source§

const ADDRESS_OFFSET: u64 = 15u64

Source§

const NAME: &'static str = "data11"

Source§

impl MemoryMappedRegister<u32> for Dmcontrol

Source§

const ADDRESS_OFFSET: u64 = 16u64

Source§

const NAME: &'static str = "dmcontrol"

Source§

impl MemoryMappedRegister<u32> for Dmstatus

Source§

const ADDRESS_OFFSET: u64 = 17u64

Source§

const NAME: &'static str = "dmstatus"

Source§

impl MemoryMappedRegister<u32> for Hartinfo

Source§

const ADDRESS_OFFSET: u64 = 18u64

Source§

const NAME: &'static str = "hartinfo"

Source§

impl MemoryMappedRegister<u32> for Misa

Source§

const ADDRESS_OFFSET: u64 = 769u64

Source§

const NAME: &'static str = "misa"

Source§

impl MemoryMappedRegister<u32> for Progbuf0

Source§

const ADDRESS_OFFSET: u64 = 32u64

Source§

const NAME: &'static str = "progbuf0"

Source§

impl MemoryMappedRegister<u32> for Progbuf1

Source§

const ADDRESS_OFFSET: u64 = 33u64

Source§

const NAME: &'static str = "progbuf1"

Source§

impl MemoryMappedRegister<u32> for Progbuf2

Source§

const ADDRESS_OFFSET: u64 = 34u64

Source§

const NAME: &'static str = "progbuf2"

Source§

impl MemoryMappedRegister<u32> for Progbuf3

Source§

const ADDRESS_OFFSET: u64 = 35u64

Source§

const NAME: &'static str = "progbuf3"

Source§

impl MemoryMappedRegister<u32> for Progbuf4

Source§

const ADDRESS_OFFSET: u64 = 36u64

Source§

const NAME: &'static str = "progbuf4"

Source§

impl MemoryMappedRegister<u32> for Progbuf5

Source§

const ADDRESS_OFFSET: u64 = 37u64

Source§

const NAME: &'static str = "progbuf5"

Source§

impl MemoryMappedRegister<u32> for Progbuf6

Source§

const ADDRESS_OFFSET: u64 = 38u64

Source§

const NAME: &'static str = "progbuf6"

Source§

impl MemoryMappedRegister<u32> for Progbuf7

Source§

const ADDRESS_OFFSET: u64 = 39u64

Source§

const NAME: &'static str = "progbuf7"

Source§

impl MemoryMappedRegister<u32> for Progbuf8

Source§

const ADDRESS_OFFSET: u64 = 40u64

Source§

const NAME: &'static str = "progbuf8"

Source§

impl MemoryMappedRegister<u32> for Progbuf9

Source§

const ADDRESS_OFFSET: u64 = 41u64

Source§

const NAME: &'static str = "progbuf9"

Source§

impl MemoryMappedRegister<u32> for Progbuf10

Source§

const ADDRESS_OFFSET: u64 = 42u64

Source§

const NAME: &'static str = "progbuf10"

Source§

impl MemoryMappedRegister<u32> for Progbuf11

Source§

const ADDRESS_OFFSET: u64 = 43u64

Source§

const NAME: &'static str = "progbuf11"

Source§

impl MemoryMappedRegister<u32> for Progbuf12

Source§

const ADDRESS_OFFSET: u64 = 44u64

Source§

const NAME: &'static str = "progbuf12"

Source§

impl MemoryMappedRegister<u32> for Progbuf13

Source§

const ADDRESS_OFFSET: u64 = 45u64

Source§

const NAME: &'static str = "progbuf13"

Source§

impl MemoryMappedRegister<u32> for Progbuf14

Source§

const ADDRESS_OFFSET: u64 = 46u64

Source§

const NAME: &'static str = "progbuf14"

Source§

impl MemoryMappedRegister<u32> for Progbuf15

Source§

const ADDRESS_OFFSET: u64 = 47u64

Source§

const NAME: &'static str = "progbuf15"