zoukankan      html  css  js  c++  java
  • ARM CPU的SVC模式

    关于ARM CPU模式中的SVC

    Arm中CPU的模式

    YCYS0A.png

    【第一方面】

    系统sys模式 VS 管理svc模式

    首先,sys模式和usr模式相比,所用的寄存器组,都是一样的,但是增加了一些访问一些在usr模式下不能访问的资源。

    而svc模式本身就属于特权模式,本身就可以访问那些受控资源,而且,比sys模式还多了些自己模式下的影子寄存器,所以,相对sys模式来说,可以访问资源的能力相同,但是拥有更多的硬件资源。

    所以,从理论上来说,虽然可以设置为sys和svc模式的任一种,但是从uboot方面考虑,其要做的事情是初始化系统相关硬件资源,需要获取尽量多的权限,以方便操作硬件,初始化硬件。

    从uboot的目的是初始化硬件的角度来说,设置为svc模式,更有利于其工作。因此,此处将CPU设置为SVC模式。

    【第二方面】

    uboot作为一个bootloader来说,最终目的是为了启动Linux的kernel,在做好准备工作(即初始化硬件,准备好kernel和rootfs等)跳转到kernel之前,本身就要满足一些条件,其中一个条件,就是要求CPU处于SVC模式的。

    (关于满足哪些条件,详情请参考:

    ARM Linux Kernel Boot Requirements

    http://www.arm.linux.org.uk/developer/booting.php

    或者Linux内核文档:

    kernel_source_rootdocumentationarmooting

    中也是同样的解释:

    “The CPU must be in SVC mode”)

    所以,uboot在最初的初始化阶段,就将CPU设置为SVC模式,也是最合适的。

  • 相关阅读:
    Java Web前后端分离的思考与实践
    JDBC剖析篇(1):java中的Class.forName()
    UVa1471
    Uva11572
    Uva11134
    Uva10755
    Floyd判圈法
    Java泛型-通配符的上限和下限问题
    Codeforces 384E-线段树+dfs序
    codeforcesRound378C-dfs+树状数组
  • 原文地址:https://www.cnblogs.com/zhaipanger/p/12827496.html
Copyright © 2011-2022 走看看