41 #include "mpu_hw_access.h"
71 MPU_Type * base = s_mpuBase[instance];
73 uint8_t regionNum = 0U;
78 for (regionNum = 0U; regionNum < regionCnt; regionNum++)
92 MPU_Enable(base,
true);
109 MPU_Type * base = s_mpuBase[instance];
110 uint8_t regionNum = 0U;
111 uint8_t slaveNum = 0U;
114 MPU_Enable(base,
false);
119 MPU_ClearErrorFlag(base, slaveNum);
126 MPU_InitRegion(base, regionNum);
146 MPU_Type * base = s_mpuBase[instance];
149 MPU_SetRegionAddr(base, regionNum, startAddr, endAddr);
152 MPU_SetRegionValidCmd(base, regionNum,
true);
171 MPU_Type * base = s_mpuBase[instance];
172 uint8_t masterIdx = 0U;
180 MPU_SetMasterAccessRight(base,
197 MPU_SetRegionAddr(base, regionNum, userConfigPtr->
startAddr, userConfigPtr->
endAddr);
199 #if FEATURE_MPU_HAS_PROCESS_IDENTIFIER
204 MPU_SetProcessIdentifierMask(base, regionNum, userConfigPtr->
processIdMask);
208 MPU_SetRegionValidCmd(base, regionNum,
true);
230 MPU_Type * base = s_mpuBase[instance];
236 MPU_SetMasterAccessRight(base, regionNum, accessRightsPtr);
255 uint8_t slavePortNum,
262 MPU_Type * base = s_mpuBase[instance];
264 bool errorStatus = MPU_GetErrorStatus(base, slavePortNum);
270 MPU_GetErrorInfo(base, slavePortNum, errInfoPtr);
273 MPU_ClearErrorFlag(base, slavePortNum);
291 uint8_t masterIdx = 0U;
297 regionConfig.
endAddr = 0xFFFFFFFFU;
302 MPU_GetDefaultMasterAccRight(masterNum[masterIdx], &masterAccRight[masterIdx]);
306 #if FEATURE_MPU_HAS_PROCESS_IDENTIFIER
331 MPU_Type * base = s_mpuBase[instance];
334 MPU_SetRegionValidCmd(base, regionNum, enable);
MPU master access rights. Implements : mpu_master_access_right_t_Class.
const mpu_master_access_right_t * masterAccRight
void MPU_DRV_Deinit(uint32_t instance)
De-initializes the MPU region by resetting and disabling MPU module.
mpu_user_config_t MPU_DRV_GetDefaultRegionConfig(mpu_master_access_right_t *masterAccRight)
Gets default region configuration. Grants all access rights for masters and disable PID...
static MPU_Type *const s_mpuBase[MPU_INSTANCE_COUNT]
Table of base addresses for MPU instances.
bool MPU_DRV_GetDetailErrorAccessInfo(uint32_t instance, uint8_t slavePortNum, mpu_access_err_info_t *errInfoPtr)
Checks and gets the MPU access error detail information for a slave port.
status_t MPU_DRV_Init(uint32_t instance, uint8_t regionCnt, const mpu_user_config_t *userConfigArr)
The function sets the MPU regions according to user input and then enables the MPU. Please note that access rights for region 0 will always be configured and regionCnt takes values between 1 and the maximum region count supported by the hardware. e.g. In S32K144 the number of supported regions is 8. The user must make sure that the clock is enabled.
uint8_t processIdentifier
status_t MPU_DRV_SetMasterAccessRights(uint32_t instance, uint8_t regionNum, const mpu_master_access_right_t *accessRightsPtr)
Configures access permission.
#define FEATURE_MPU_MAX_HIGH_MASTER_NUMBER
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
#define FEATURE_MPU_SLAVE_COUNT
MPU user region configuration structure. This structure is used when calling the MPU_DRV_Init functio...
MPU detail error access info Implements : mpu_access_err_info_t_Class.
status_t MPU_DRV_SetRegionConfig(uint32_t instance, uint8_t regionNum, const mpu_user_config_t *userConfigPtr)
Sets the region configuration.
#define FEATURE_MPU_MASTER
#define MPU_INSTANCE_COUNT
void MPU_DRV_EnableRegion(uint32_t instance, uint8_t regionNum, bool enable)
Enables/Disables region descriptor. Please note that region 0 should not be disabled.
void MPU_DRV_SetRegionAddr(uint32_t instance, uint8_t regionNum, uint32_t startAddr, uint32_t endAddr)
Sets the region start and end address.
#define FEATURE_MPU_MASTER_COUNT