异常已存在具有相同键的条目。_异常与中断介绍

CPU在运行的过程中,也会被各种“异常”打断,这些“异常”有:

·指令未定义;

·指令、数据访问有问题;

·SWI(软中断);

·快中断;

·中断;

中断也属于一种“异常”,导致中断发生的情况有很多,比如:

·按键;

·定时器;

·ADC转换完成;

·UART发送完数据、收到数据;

这些众多的“中断源”,汇集到“中断控制器”,由“中断控制器”选择优先级最高的中断并通知CPU。

arm对异常(中断)处理过程:

1. 初始化:

a. 设置中断源,让它可以产生中断;

b. 设置中断控制器(可以屏蔽某个中断,优先级);

c. 设置CPU总开关(使能中断);

2. 执行其他程序:正常程序;

3. 产生中断:比如按下按键->中断控制器->CPU;

4. CPU每执行完一条指令都会检查有无中断/异常产生;

5. CPU发现有中断/异常产生,开始处理;

对于不同的异常,跳去不同的地址执行程序。地址上,只是一条跳转指令,跳去执行某个函数(地址),这个就是异常向量。

3,4,5都是硬件做的;软件做的做了如下工作:保存现场(各种寄存器),处理异常(中断): 分辨中断源,再调用不同的处理函数,恢复现场。CPU通过栈来保存恢复现场。

ARM处理模式和寄存器

ARM体系结构是一种基于模式的体系结构,它具有7种处理器模式,有六个特权模式和一个非特权用户模式。特权是执行用户(非特权)模式无法完成的某些任务的能力。在用户模式下,对影响整个系统配置的操作存在一些限制,例如MMU的配置和缓存操作。

38dd067632fb35bb9389efb8c01b0c18.png

模式与异常事件相关,可以这样简单理解:

1. 板子上电时,CPU处于SVC模式,它用的是SVC模式下的寄存器;

2. 程序运行时发生了中断,CPU进入IRQ模式,它用的IRQ模式下的寄存器;

3. CPU处理完中断,它切换回SVC模式,继续使用SVC模式下的寄存器;

4. CPU发生某种异常时,比如读取内存出错,它会进入ABT模式,使用ABT模式下的寄存器来处理错误。

在某种模式下,CPU执行时

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值