AnsweredAssumed Answered

Kinetis K8x MPU regions overlaping rules

Question asked by Eugene Hiihtaja on Jun 13, 2018
Latest reply on Jun 21, 2018 by Jing Pan

Hello !

K82 MPU have 12 regions and  while definitions it can be overlaping when the same address space fragments have different access right for User and Supervisor modes.

 During each access MPU state machine scan all valid regions what is enabled.

I undestand ,  each region can be enabled/disabled individually and enable/disabled regions can be allocated in any order and all valid entries is taken to calculation for one access right rule for user and one access rule right for supervisor modes.

 

Is this so ? Or some other priorities/rules exists ?

 

Do I undestang right and lesser rule are taken in use ?

 

*! @brief SYSMPU access rights in supervisor mode for bus master 0 ~ 3. */
typedef enum _sysmpu_supervisor_access_rights
{
kSYSMPU_SupervisorReadWriteExecute = 0U, /*!< Read write and execute operations are allowed in supervisor mode. */
kSYSMPU_SupervisorReadExecute =        1U, /*!< Read and execute operations are allowed in supervisor mode. */
kSYSMPU_SupervisorReadWrite =             2U, /*!< Read write operations are allowed in supervisor mode. */
kSYSMPU_SupervisorEqualToUsermode = 3U /*!< Access permission equal to user mode. */
} sysmpu_supervisor_access_rights_t;

 

/*! @brief SYSMPU access rights in user mode for bus master 0 ~ 3. */
typedef enum _sysmpu_user_access_rights
{
kSYSMPU_UserNoAccessRights = 0U, /*!< No access allowed in user mode. */
kSYSMPU_UserExecute =              1U, /*!< Execute operation is allowed in user mode. */
kSYSMPU_UserWrite =                   2U, /*!< Write operation is allowed in user mode. */
kSYSMPU_UserWriteExecute =     3U, /*!< Write and execute operations are allowed in user mode. */
kSYSMPU_UserRead =                 4U, /*!< Read is allowed in user mode. */
kSYSMPU_UserReadExecute =    5U, /*!< Read and execute operations are allowed in user mode. */
kSYSMPU_UserReadWrite =         6U, /*!< Read and write operations are allowed in user mode. */
kSYSMPU_UserReadWriteExecute = 7U /*!< Read write and execute operations are allowed in user mode. */
} sysmpu_user_access_rights_t;

 

Or address regions shouln't be overlaped and defined sequentially ?

 

What kind of  MPU protection  is defined for address space what is not covered by MPU descriptors ?

 

Can supervisor/user have any type of access what is not covered by any descriptor ?

Or it cause BusFault ?

 

Please clarify a bit. How-to calculate overlapping rules and what access right has regions what is not covered by any MPU descriptors . e.g some peripherals spaces for example ?

 

Regards,

Eugene

Outcomes