AnsweredAssumed Answered

Switch to user mode on K82 with MPU

Question asked by Eugene Hiihtaja on Jun 14, 2018
Latest reply on Jun 21, 2018 by Eugene Hiihtaja

Hello !

 

On K82 MPU is always enabled  and Region 0 provisioned with record what give access to whole memore space for all masters in user and privileged mode.

 

I have start to think how-to port freeRTOS-MPU for K82 is show busFault if task try to drop to user mode by using control register.

 

/* Set the privilege level to user mode if xRunningPrivileged is false. */
portFORCE_INLINE static void vPortResetPrivilege( BaseType_t xRunningPrivileged )
{
   if( xRunningPrivileged != pdTRUE )
   {
      __asm volatile ( " mrs r0, control \n" \
      " orr r0, #1 \n" \
      " msr control, r0 \n" \
      :::"r0", "memory" );
   }
}

 

BusFault is enabled and first call of this function cause BusFault even all memory areas accesable in User mode.

If all Tasks created as privileged, this function is not called and no any problems.

 

Current assumption that K82 require more complicate sequence and may be MPU should be disabled/enabled globally.

But in user mode may be not possible to reenable MPU.

 

Could you suggest if this sequence is OK for K82 with MPU ?

 

Regards,

Eugene

Outcomes