ARM体系结构--第一章

本文介绍了ARM处理器相关知识,包括有ARM指令和Thumb指令两种工作状态、7种工作模式,阐述了管理模式和系统模式区别;说明了ARM体系程序执行的顺序、跳转、异常中断三种方式及异常中断响应和返回过程;还对比了FRQ和IRQ,指出FRQ更快的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:本文资料全部来源于网络或书籍,同时加上个人理解。若有侵权,告知即删。若有错误,留言商讨。

1、ARM处理器有两种工作状态,7种工作模式

2种状态:

  1. ARM指令状态:32位指令
  2. Thumb指令状态:16位指令
  3. 【补充】调试状态

7种工作模式:

管理模式和系统模式的区别:

系统模式和用户模式相比,使用相同的寄存器,增加了一些在usr模式下不能访问的资源。

管理模式相比系统模式可以访问资源的能力相同,都属于特权模式,并且管理模式有自己模式下的影子寄存器R13_svc和R14_svc。

uboot的目的是初始化硬件,设置为svc模式更有利于其工作。

2、ARM体系的异常中断

ARM体系中程序执行流程主要3中方式:

顺序执行:每执行一条指令,ARM状态下PC=4;Thumb状态下PC+2

跳转执行:

  1. B:执行跳转操作
  2. B:执行跳转操作,并且保存子程序的返回地址
  3. BX:执行跳转操作,并且根据目标地址的最低位将程序切换到Thumb状态
  4. BLX:执行跳转操作,并且保存子程序的返回地址,且根据目标地址的最低位将程序切换到Thumb状态

异常中断发生:执行完当前指令,跳转到相应的异常中断处理程序处执行。异常处理程序完成,返回到异常中断处。

异常中断的响应过程:

  • 保存当前处理器状态、即将cpsr保存到相应的异常模式下spsr_xxx中
  • 设置当前cpsr的相应位,包括:mode修改、T、禁止IRQ中断(I)、FQR模式下,禁止FIQ(F位)
  • 将寄存器r14_xxx设置为返回地址,保存pc的值
  • 将PC设置为异常中断向量的中断向量地址,从而跳转程序。

异常中断返回:

  • 恢复处理器状态,将spsr_xxx复制到cpsr
  • 将r14_xxx复制到pc中

 

3、FRQ和IRQ对比

FRQ要比IRQ快的原因:

  1. IRQ保护现场,需要保存的寄存器更多,FRQ不需要保存R8-R12;
  2. FRQ比IRQ中断优先级高
  3. FIQ在中断向量表的最高处,这就为我们直接在FIQ上面的地址直接写异常处理程序提供了可能,其他的异常必须通过跳转,而跳转就需要保存IR值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值