为什么U-boot程序中要设置成svc模式?

不羁的心 提交于 2019-12-21 23:43:33

ARM的7中工作模式

  • 用户模式(USR):正常程序执行模式,不能直接切换到其他模式。==是用户程序的运行模式。==因此想要访问硬件资源或者切换到其他模式只能通过中断。
  • 系统模式(SYS):运行操作系统的特权任务,与用户模式类似,但具有可以直接切换到其他模式等特权。运行特权级的操作系统任务。
  • 管理模式(SVC):概括:1.系统复位、开机时自动进入该模式。2.当操作系统申请硬件资源时,由软件中断进入该模式。当有用户态进入内核态的时候系统也是处于这种模式。
  • 快中断模式(FIQ):支持高速数据传输及通道处理,FIQ异常响应时进入此模式
  • 中断模式(IRQ):用于通用中断处理,IRQ异常响应时进入此模式
  • 中止模式(ABT):用于支持虚拟内存管理或存储器保护,在ARM7TDMI没有大用处
  • 未定义模式(UND):支持硬件协处理器的软件仿真,未定义指令异常响应时进入此模式。
特权模式

除用户模式外,其它模式均为特权模式(Privileged Modes)。ARM 内部寄存器 和一些 片内外设 在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。

异常模式

特权模式中除系统(system)模式之外的其他5种模式又统称为异常模式。它们除了可以通过在特权下的程序切换进入外,也可以由特定的异常进入。比如硬件产生中断信号进入中断异常模式,读取没有权限数据进入中止异常模式,执行未定义指令时进入未定义指令中止异常模式。其中管理模式也称为超级用户模式,是为操作系统提供软中断的特有模式,正是由于有了软中断,用户程序才可以通过系统调用切换到管理模式。

用户模式和系统模式

这二者共用一组寄存器。因此他们之间的切换不需要保存寄存器的值也就不需要SPSR寄存器。区分是,系统模式属于特权模式,可以访问所有系统资源。

结论

u-boot中,要执行开启时钟,初始化内存,关闭看门狗能硬件操作,显然需要处于可利用硬件的状态,因此设置为svc模式是正确的选择。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!