EFR32 Blue Gecko 12 Software Documentation
efr32bg12-doc-5.1.2
|
Security Management Unit (SMU) Peripheral API.
The Security Management Unit (SMU) forms the control and status/reporting component of bus-level security in EFM32/EFR32 devices.
Peripheral-level protection is provided via the peripheral protection unit (PPU). The PPU provides a hardware access barrier to any peripheral that is configured to be protected. When an attempt is made to access a peripheral without the required privilege/security level, the PPU detects the fault and intercepts the access. No write or read of the peripheral register space occurs, and an all-zero value is returned if the access is a read.
Data Structures | |
struct | SMU_Init_TypeDef |
struct | SMU_PrivilegedAccess_TypeDef |
Macros | |
#define | SMU_INIT_DEFAULT |
Enumerations | |
enum | SMU_Peripheral_TypeDef { smuPeripheralACMP0 = _SMU_PPUPATD0_ACMP0_SHIFT, smuPeripheralACMP1 = _SMU_PPUPATD0_ACMP1_SHIFT, smuPeripheralADC0 = _SMU_PPUPATD0_ADC0_SHIFT, smuPeripheralCMU = _SMU_PPUPATD0_CMU_SHIFT, smuPeripheralCRYOTIMER = _SMU_PPUPATD0_CRYOTIMER_SHIFT, smuPeripheralCRYPTO0 = _SMU_PPUPATD0_CRYPTO0_SHIFT, smuPeripheralCRYPTO1 = _SMU_PPUPATD0_CRYPTO1_SHIFT, smuPeripheralCSEN = _SMU_PPUPATD0_CSEN_SHIFT, smuPeripheralVDAC0 = _SMU_PPUPATD0_VDAC0_SHIFT, smuPeripheralPRS = _SMU_PPUPATD0_PRS_SHIFT, smuPeripheralEMU = _SMU_PPUPATD0_EMU_SHIFT, smuPeripheralFPUEH = _SMU_PPUPATD0_FPUEH_SHIFT, smuPeripheralGPCRC = _SMU_PPUPATD0_GPCRC_SHIFT, smuPeripheralGPIO = _SMU_PPUPATD0_GPIO_SHIFT, smuPeripheralI2C0 = _SMU_PPUPATD0_I2C0_SHIFT, smuPeripheralI2C1 = _SMU_PPUPATD0_I2C1_SHIFT, smuPeripheralIDAC0 = _SMU_PPUPATD0_IDAC0_SHIFT, smuPeripheralMSC = _SMU_PPUPATD0_MSC_SHIFT, smuPeripheralLDMA = _SMU_PPUPATD0_LDMA_SHIFT, smuPeripheralLESENSE = _SMU_PPUPATD0_LESENSE_SHIFT, smuPeripheralLETIMER0 = _SMU_PPUPATD0_LETIMER0_SHIFT, smuPeripheralLEUART0 = _SMU_PPUPATD0_LEUART0_SHIFT, smuPeripheralPCNT0 = _SMU_PPUPATD0_PCNT0_SHIFT, smuPeripheralPCNT1 = _SMU_PPUPATD0_PCNT1_SHIFT, smuPeripheralPCNT2 = _SMU_PPUPATD0_PCNT2_SHIFT, smuPeripheralRMU = 32 + _SMU_PPUPATD1_RMU_SHIFT, smuPeripheralRTCC = 32 + _SMU_PPUPATD1_RTCC_SHIFT, smuPeripheralSMU = 32 + _SMU_PPUPATD1_SMU_SHIFT, smuPeripheralTIMER0 = 32 + _SMU_PPUPATD1_TIMER0_SHIFT, smuPeripheralTIMER1 = 32 + _SMU_PPUPATD1_TIMER1_SHIFT, smuPeripheralTRNG0 = 32 + _SMU_PPUPATD1_TRNG0_SHIFT, smuPeripheralUSART0 = 32 + _SMU_PPUPATD1_USART0_SHIFT, smuPeripheralUSART1 = 32 + _SMU_PPUPATD1_USART1_SHIFT, smuPeripheralUSART2 = 32 + _SMU_PPUPATD1_USART2_SHIFT, smuPeripheralUSART3 = 32 + _SMU_PPUPATD1_USART3_SHIFT, smuPeripheralWDOG0 = 32 + _SMU_PPUPATD1_WDOG0_SHIFT, smuPeripheralWDOG1 = 32 + _SMU_PPUPATD1_WDOG1_SHIFT, smuPeripheralWTIMER0 = 32 + _SMU_PPUPATD1_WTIMER0_SHIFT, smuPeripheralWTIMER1 = 32 + _SMU_PPUPATD1_WTIMER1_SHIFT, smuPeripheralEnd } |
Functions | |
__STATIC_INLINE void | SMU_EnablePPU (bool enable) |
Enable or disable the Peripheral Protection Unit of the SMU. More... | |
__STATIC_INLINE SMU_Peripheral_TypeDef | SMU_GetFaultingPeripheral (void) |
Get the ID of the peripheral that caused an access fault. More... | |
__STATIC_INLINE void | SMU_Init (const SMU_Init_TypeDef *init) |
Initialize the Peripheral Protection Unit of the SMU. More... | |
__STATIC_INLINE void | SMU_IntClear (uint32_t flags) |
Clear one or more pending SMU interrupts. More... | |
__STATIC_INLINE void | SMU_IntDisable (uint32_t flags) |
Disable one or more SMU interrupts. More... | |
__STATIC_INLINE void | SMU_IntEnable (uint32_t flags) |
Enable one or more SMU interrupts. More... | |
__STATIC_INLINE uint32_t | SMU_IntGet (void) |
Get pending SMU interrupts. More... | |
__STATIC_INLINE uint32_t | SMU_IntGetEnabled (void) |
Get enabled and pending SMU interrupt flags. Useful for handling more interrupt sources in the same interrupt handler. More... | |
__STATIC_INLINE void | SMU_IntSet (uint32_t flags) |
Set one or more pending SMU interrupts from SW. More... | |
__STATIC_INLINE void | SMU_SetPrivilegedAccess (SMU_Peripheral_TypeDef peripheral, bool privileged) |
Change the access settings for a peripheral. More... | |
#define SMU_INIT_DEFAULT |
SMU peripheral identifiers.
__STATIC_INLINE void SMU_EnablePPU | ( | bool | enable | ) |
Enable or disable the Peripheral Protection Unit of the SMU.
[in] | enable | True if the PPU should be enabled, false if it should be disabled. |
Definition at line 302 of file em_smu.h.
References _SMU_PPUCTRL_ENABLE_SHIFT, BUS_RegBitWrite(), and SMU.
Referenced by SMU_Init().
__STATIC_INLINE SMU_Peripheral_TypeDef SMU_GetFaultingPeripheral | ( | void | ) |
Get the ID of the peripheral that caused an access fault.
Definition at line 361 of file em_smu.h.
References SMU.
__STATIC_INLINE void SMU_Init | ( | const SMU_Init_TypeDef * | init | ) |
Initialize the Peripheral Protection Unit of the SMU.
[in] | init | Pointer to initialization struct defining which peripherals should only be accessed from privileged mode, and whether the PPU should be enabled. |
Definition at line 315 of file em_smu.h.
References SMU_Init_TypeDef::enable, SMU_Init_TypeDef::reg, SMU, and SMU_EnablePPU().
__STATIC_INLINE void SMU_IntClear | ( | uint32_t | flags | ) |
__STATIC_INLINE void SMU_IntDisable | ( | uint32_t | flags | ) |
__STATIC_INLINE void SMU_IntEnable | ( | uint32_t | flags | ) |
Enable one or more SMU interrupts.
[in] | flags | SMU interrupt sources to enable. |
Definition at line 402 of file em_smu.h.
References SMU.
__STATIC_INLINE uint32_t SMU_IntGet | ( | void | ) |
__STATIC_INLINE uint32_t SMU_IntGetEnabled | ( | void | ) |
Get enabled and pending SMU interrupt flags. Useful for handling more interrupt sources in the same interrupt handler.
Definition at line 434 of file em_smu.h.
References SMU.
__STATIC_INLINE void SMU_IntSet | ( | uint32_t | flags | ) |
__STATIC_INLINE void SMU_SetPrivilegedAccess | ( | SMU_Peripheral_TypeDef | peripheral, |
bool | privileged | ||
) |
Change the access settings for a peripheral.
Set whether the peripheral can only be accessed from privileged mode
[in] | peripheral | ID of the peripheral to change access settings for |
[in] | privileged | True if the peripheral should only be allowed to be accessed from privileged mode, false if the peripheral can be accessed from unprivileged mode. |
Definition at line 338 of file em_smu.h.
References BUS_RegBitWrite(), and SMU.