一、工作模式
线程模式和手柄模式。
当处理器处在线程状态下时,既可以使用特权级,也可以使用用户级;另一方面, handler模式总是特权级的。在复位后,处理器进入线程模式+特权级。
二、异常和中断
Cortex-M3 支持大量异常,包括 16-4-1=11个系统异常,和最多 240 个外部中断——简称 IRQ。具体使用了这 240 个中断源中的多少个,则由芯片制造商决定。由外设产生的中断信号,除了 SysTick的之外,全都连接到 NVIC 的中断输入信号线。典型情况下,处理器一般支持 16 到 32 个中断。
类型编号为 1-15 的系统异常,从 16 开始是外部中断类型。
三、向量表
因为地址 0 处应该存储引导代码,所以它通常映射到 Flash或者是 ROM 器件,并且它们的值不得在运行时改变。然而,为了支持动态重分发中断, CM3 允许向量表重定位——从其它地址处开始定位各异常向量。这些地址对应的区域可以是代码区,但更多是在 RAM 区。在 RAM 区就可以修改向量的入口地址了。为了实现这个功能, NVIC中有一个寄存器,称为“向量表偏移量寄存器”(在地址 0xE000_ED08处),通过修改它的值就能重定位向量表。
向量表偏移量寄存器(VTOR)(地址:0xE000_ED08)
关键字:Cortex-M3 工作模式 异常
引用地址:
Cortex-M3工作模式与异常
推荐阅读最新更新时间:2024-11-13 14:03
系统学习ARM之六 --异常处理
转载自 http://blog.csdn.net/qqliyunpeng/article/details/48791715 一、简介: 异常: 是一种突发情况。异常发生后,处理器要进行相应的处理(异常处理),切换到对应的异常工作模式。 二、四大步三小步:(异常处理的硬件完成的事项) (1)拷贝 CPSR 到 SPSR_ mode (2)设置适当的 CPSR 位: ①改变处理器状态进入 ARM 状态 ②改变处理器模式进入相应的异常模式 ③设置中断禁止位禁止相应中断 (如果需要) (3)保存返回地址到 LR_ mode (4)设置 PC 为相应的异常向量 三、异常处理的
[单片机]
是德MSO9254A示波器维修开机异常案例
检测过程: 收到仪器后开始检测,首先验证客户报修故障,进行开机测试,确实出现开机后会自动关机现象。 下面就开始排查故障点,主控制板、电源部分等开始排查,最终发现是由于仪器主控制板损坏造成自动关机。 维修措施: 更换主控制板损坏组件,整机调整检测仪器,自检自校pass,阻抗正常。 维修结果: 进行库检测,指标合格,安排出库。
[测试测量]
基于ARM Cortex-M3和DSP的逆变电源设计
引 言 在电气智能化发展无处不在的今天, 无数用电场合离不开逆变电源系统( Inverted Pow er Supply System,IPS) 为现场设备提供稳定的高质量电源, 特别在如通信机房、服务器工作站、交通枢纽调度中心、医院、电力、工矿企业等对电源保障有苛刻要求的场合。许多IPS产品因遵循传统设计而不符合或落后于现代电源理念,突出表现为控制模块的单一复杂化, 控制器芯片落后且控制任务繁重, 模拟闭环控制而得不到理想的监控和反馈调节效果,并由此带来单个控制设备软硬件设计上的隐患, 这对IPS 电源输出造成不利影响, 甚至对用电设备因为供电故障而导致灾难性后果。数字化控制技术日趋成熟,而且在某些领先理念的电源设备控制应用场
[单片机]
ARM Cortex-M3 学习笔记(4-6)
最近在学ARM Cortex-M3,找了本号称很经典的书 An Definitive Guide to The ARM Cortex-M3 在看。这个系列学习笔记其实就是在学习这本书的过程中做的读书笔记。 对内存的互斥访问 Cortex-M3 中提供了三对用于互斥访问的内存的指令,分别是:LDREX/STREX, LDREXH/STREXH, LDREXB/STREXB,这三对指令分别对应于字、半字、字节 的取出与写入。 LDREX 的基本指令格式为: LDREX Rxf, 这条指令与LDR Rxf, 的作用是相同的,唯一的区别是这条指令还会通知内核对它所访问的内存空间特殊关照。如何特殊关照,在STREX 指令执行时显现出
[单片机]
Cortex-M内核中断/异常系统、中断优先级/嵌套详解
问题 最近在使用 STM32F3 芯片的时候,遇到这样一个问题:如果外部中断来的频率足够快,上一个中断没有处理完成,新来的中断如何处理? 在调试时,发现有中断有 挂起、激活、失能等状态,考虑这些状态都是干啥用的呢!他们是 Cortex-M 核所共有的,因此,这里不针对与具体用的 STM32 MCU,直接上升到 Cortex-M 内核来了解一下! 简介 中断(也称为“异常”)是微控制器一个很常见的特性。中断一般是由硬件(例如外设、外部引脚)产生,当中断产生以后 CPU 就会中断当前的程序执行流程转而去处理中断服务中指定的操作。 所有的 Cortex-M 内核都会包含一个用于中断处理的组件:NVIC(Nested Vectored
[单片机]
ARM体系结构--第九章--异常中断处理
注:本文资料全部来源于网络或书籍,同时加上个人理解。若有侵权,告知即删。若有错误,留言商讨。 1、中断向量表 中断向量表中指定了异常中断及其处理程序的对应关系,通常存储在存储地址的低端。ARM异常中断向量表的大小为32个字节,每个异常占用4个字节的空间。通常在这个4个字节的地址空间存放一个跳转指令,跳转到相应的异常服务程序。 2、ARM体系的异常中断 异常中断的响应过程: 保存当前处理器状态、即将cpsr保存到相应的异常模式下spsr_xxx中 设置当前cpsr的相应位,包括:mode修改、T、禁止IRQ中断(I)、FQR模式下,禁止FIQ(F位) 将寄存器r14_xxx设置为返回地址,保存pc的值 将PC设置为
[单片机]
基于Cortex-M3处理器的步进电机控制系统
步进电机的控制方式是将电脉冲信号转换为角位移,在未超载的情况下,步进电机的速度和位置分别取决于脉冲频率以及脉冲个数。步进电机控制方便,在众多行业都得到广泛的使用,诸如数控机床、机械包装等机械行业、机器人等电子行业、还有医疗设备等众多领域。在实际的工程应用中,由步进电机控制器发送脉冲和方向信号,通过控制脉冲信号的个数来实现角位移量的大小,按照方向信号的指示转动角度,从而通过驱动器实现和完成步进电机的复杂运动。步进电机控制器也可采用PLC系统。PLC具有易操作、可靠性高的优点,但成本较高。随着研究的不断深入和技术的不断优化,单片机的片上外设更加丰富,实际应用的可靠性和保障性不断增强,且价格也相对于PLC便宜。因此,对步进电机的控制正逐
[单片机]
STM32(Cortex-M3)启动过程+IAR中xcl及icf文件详解
一:STM32(Cortex-M3)启动过程(入口地址) ARM7和ARM9启动时从绝对地址0X00000000开始执行复位中断程序,即固定了复位后的起始地址,但中断向量表的位置是可变的。 Cortex-M3内核规定中断向量表中第一个32位数据内容为栈顶地址,第二个32位数据内容则是复位中断向量的入口地址。 这样CPU复位后会自动从中断向量表中第二个32位数据中取出复位中断向量的入口地址,PC就跳转到中断服务程序。这也就是为什么调试的时候程序会直接跳到0x08000144(中断向量表中第二个32位数据为0x08000145),而不是停在0x08000000。 Cortex-M3的中断向量表的结构是固定的,而位置的地址是可
[单片机]