This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Cortex R5 ARM processor

HI All,

I am trying to use FREE RTOS in cortex R5 dual core MCU.

Initially the MCU is in Supervisor mode. But in main function, i want to be a processor mode will be in system mode(0x1F).

But i do not find any instruction how to switch from supervisor mode(0x13) to system mode(0x1F).

Why we need to switch from supervisor mode to system mode if both are working in privilege mode because for the unitization of the RTOS, scheduler should be in system mode. 

Can any one please tell me how to switch from supervisor mode to system mode.

I have tried to switch but the system will be reset automatically after change in system mode.

 have see the mode in CPSR register.

Thanks and regard 

Pankaj verma

Parents
  • Hello,

    Code similar to the following should work. You would read-modify-write the cpsr. For SYS mode (0x1F), the BIC instruction is not needed, but this would be the format of code to manually switch to any other mode.

    sys_mode
        mrs r0, cpsr       // read cpsr into r0
        bic r0, r0, 0x1f   // clear mode field [4:0]
        orr r0, r0, 0x1f   // set mode to SYS
        msr cpsr, r0       // write r0 back to cpsr

    System mode uses the same sp and lr as user mode.

Reply
  • Hello,

    Code similar to the following should work. You would read-modify-write the cpsr. For SYS mode (0x1F), the BIC instruction is not needed, but this would be the format of code to manually switch to any other mode.

    sys_mode
        mrs r0, cpsr       // read cpsr into r0
        bic r0, r0, 0x1f   // clear mode field [4:0]
        orr r0, r0, 0x1f   // set mode to SYS
        msr cpsr, r0       // write r0 back to cpsr

    System mode uses the same sp and lr as user mode.

Children