Struct Mpu

Source
pub struct Mpu(/* private fields */);
Expand description

Wrapper around the Cortex-M0+ Memory Protection Unit (MPU).

Implementations§

Source§

impl Mpu

Source

pub const MIN_REGION_SIZE: Size = Size::S256B

The smallest supported region size.

Source

pub const REGION_COUNT: u8 = 8u8

Number of supported memory regions.

Source

pub unsafe fn new(raw: MPU) -> Self

Creates a new MPU wrapper, taking ownership of the MPU peripheral.

§Safety

This function is safe to call if the processor is a Cortex-M0+ and has an MPU.

Source

pub fn into_inner(self) -> MPU

Consumes self and returns the raw MPU peripheral.

Source

pub fn configure_unprivileged(&mut self, regions: &ArrayVec<[Region; 8]>)

Configures the MPU to restrict access to software running in unprivileged mode.

Any violation of the MPU settings will cause a HardFault exception. The Cortex-M0+ does not have a dedicated memory management exception.

Unprivileged code will only be allowed to access memory inside one of the given regions.

Code running in privileged mode will not be restricted by the MPU, except that regions that have executable set to false will be marked as Never eX*excute* (NX), which is enforced even for privileged code.

Auto Trait Implementations§

§

impl Freeze for Mpu

§

impl RefUnwindSafe for Mpu

§

impl Send for Mpu

§

impl !Sync for Mpu

§

impl Unpin for Mpu

§

impl UnwindSafe for Mpu

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
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.