User Mode and System Mode

OP #1173284
Hi,

I'm relatively new to ARM devices and to date have only written
bare-metal programs using a generic strartup script.  I've started doing
more research on ARM devices and came accross the numerous modes (User,
System, FIQ, IRQ etc)  I've used the two interrupt modes before and upon
examining my startup script I can see that I've been running my programs
in System mode.

Unfortunetly I can't appear to find any useful information on the net to
what the differneces between User and System Mode are.  Most resources
simply state that User Mode is where the user programs should be run and
system mode is used by the OS.  Can anyone please enlighten me to the
differences of the two modes??

--
Thanks,

Stephen
> Unfortunetly I can't appear to find any useful information on the net to
> what the differneces between User and System Mode are.  Most resources
> simply state that User Mode is where the user programs should be run and
> system mode is used by the OS.  Can anyone please enlighten me to the
> differences of the two modes??
>

The short and sweet version is once you are in user mode you cannot
change to any other mode - or enable/disable interrupts at core level.
user mode is classed as non privileged.

To answer fully look at the arm arch ref manual - search google for
ddi0100e_arm_arm.pdf

Cheers
Spen
The definitive place for such information is the ARM Architecture
Reference Manual (ARM-ARM):
http://www.altera.com/literature/third-party/ddi0100e_arm_arm.pdf See
section 2.2 (page A2-3)

The "Insider's Guides" available at http://www.hitex.co.uk/download.html
are also a good introduction to such things - if you are not using
precisely one of the parts listed, that does not matter much for the ARM
specific stuff - just select an ARM7 or ARM9 as appropriate.

The primary feature of the ARM modes is that some registers are specific
to a particular mode while others are shared. Which ones are shared
differs depending on the mode. Most importantly each mode has its own
stack pointer register. System and User modes share the same register
set (including SP), but User mode has resource access restrictions. In
practice, the restrictions are dependent on the specific part the
ARM-ARM says of User Mode:

* User mode cannot switch to another mode other than by causing an
exception that results in a mode switch.

* Memory system and co-processors may restrict User mode access.

So unless you are using a part with an MMU for example, there is little
advantage in User Mode over System Mode. Unless you are running an RTOS
you probably need not worry too much about Supervisor Mode either, and
even then you might not.

Clifford.

Reply

A question of your own? This thread is over 18 years old. Ask it in a thread of its own – more people read along there, and it gets answered more often and sooner.

Start a new thread

A fix, an addition or feedback on this thread? Then reply here.

Formatting
  • [c]C-Code[/c]
  • [code]code in other languages, ASCII drawings[/code]
  • [math]formula (LaTeX syntax)[/math]
  • [[Title]] – link to an article
  • Link to another post: right-click its post ID (#8078628), copy the address, paste it into the text

More about formatting

Post long source code as an attachment, not in the text.

Already registered? Log in

Not shown to anyone. We send you a link; your post appears once you confirm it there.

By submitting you create a free account and accept the terms of use.