pub struct Mpu(/* private fields */);Expand description
Wrapper around the Cortex-M0+ Memory Protection Unit (MPU).
Implementations§
Source§impl Mpu
impl Mpu
Sourcepub const MIN_REGION_SIZE: Size = Size::S256B
pub const MIN_REGION_SIZE: Size = Size::S256B
The smallest supported region size.
Sourcepub const REGION_COUNT: u8 = 8u8
pub const REGION_COUNT: u8 = 8u8
Number of supported memory regions.
Sourcepub unsafe fn new(raw: MPU) -> Self
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.
Sourcepub fn into_inner(self) -> MPU
pub fn into_inner(self) -> MPU
Consumes self and returns the raw MPU peripheral.
Sourcepub fn configure_unprivileged(&mut self, regions: &ArrayVec<[Region; 8]>)
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.