




已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章Cortex-M3的异常处理,Cortex-M3的一些特性(一),处理器状态的自动保存和恢复;中断向量表读取与处理器状态保存并行处理;支持尾链技术,当处理背靠背的中断时,不需在两个中断服务子程序之间进行入栈和出栈操作;可动态重设中断优先级;NVIC和Cortex-M3处理器核紧密耦合,可尽早处理中断,尤其是晚到的高优先级中断;,Cortex-M3的一些特性(二),中断的数目可以配置,从1到240;为Handler和Thread模式分别提供独立的栈和访问特权等级;ISR调用采用C/C+标准ARM体系结构过程调用标准(AAPCS);可屏蔽优先级以支持临界区。这些特性提高了处理异常的效率并降低了时间的延迟。,4.1异常的类型4.2异常的优先级4.3异常处理4.4复位过程4.5多堆栈的设置4.6Abort模式,4.1异常的类型,Cortex-M3处理器将复位、不可屏蔽中断、外部中断、故障都统一为异常。故障(fault)是指令执行时由于错误的条件所导致的异常。同步故障是指当指令产生错误时就同时报告错误。异步故障则是指当指令产生错误时无法保证同时报告错误。,4.2异常的优先级,NVIC支持通过软件设置优先级。通过写中断优先级寄存器的PRI_N字段可以设置优先级,范围为0255。通过软件设置的优先级权限高于硬件优先级。但通过软件设置的优先级对复位、不可屏蔽中断和硬故障没有影响。当多个中断具有相同的优先级时,拥有最小中断号的挂起中断优先执行。,优先级分组,NVIC支持优先级分组。通过设定应用中断和复位控制寄存器中的PRIGROUP字段,可以将PRI_N字段分成两部分:抢占优先级和次要优先级。抢占优先级可认为是优先级分组,当多个挂起的异常具有相同的抢占优先级时,次要优先级就起作用。当两个挂起的异常具有完全相同的优先级时,硬件位置编号低的异常优先被激活。,优先级分组,异常处理中与优先级相关的操作,异常激活等级,当没有异常发生时,处理器处在Thread模式。当进入中断处理(ISR)或故障处理激活时,处理器将进入Handler模式。不同类型异常处理所对应的处理器工作模式、访问级别以及栈的使用是有所不同的,也就是激活等级不同。,不同激活等级下的特权和栈,异常转换,异常子类转换,4.3异常处理,当处理器处理异常发生时,会将PC、处理器状态寄存器、r0-r3、r12,LR等8个寄存器的信息依次保存到堆栈指针SP所指之处。,4.3异常处理,如果NVIC配置控制寄存器的STKALIGN位已经被设置,则在压栈之前会插入一个额外的字。从ISR返回后,处理器将自动从栈中弹出8个寄存器。中断返回是通过LR寄存器传递数据,故ISR可以是通常的c/c+函数,而且不需要修饰符。,处理器进入ISR前执行的操作步骤,在处理器不同情况下进入异常处理ISR的过程,中断进入及处理流程图,抢占处理流程,4.3.2异常处理的退出,当从异常中返回时,处理器可能:尾链到一个已挂起的异常:该异常比栈中所有异常的优先级都高;返回到最近一个已压栈的ISR:没有挂起的异常,或是栈中最高优先级的异常比挂起的最高优先级异常具有更高的优先级;返回到Thread模式:没有异常已经挂起或位于栈中。,异常退出操作,异常返回,在ISR中可用以下指令将值0 xFFFFFFFX加载到PC,以发生异常返回:POP/LDM,载入PC;LDR,PC作为目的地址;BX,使用任何寄存器进行跳转。当采用这种方法返回时,写入到PC的值被截取,并且作为EXC_RETURN的值。,异常返回行为,异常返回,在Thread模式下,如果通过其他任何指令或者从向量表将EXC_RETURN的值载入PC,则就将该值看成是地址,而非一个特殊的值。该地址区间被定义为不可执行区间,并导致一个内存管理故障。,中断返回流程图,4.4复位过程,4.4.1向量表,异常处理程序的入口地址组成向量表,每个入口地址占用4个字节,向量表位于零地址处;在向量表的0处必须放置main栈的栈顶地址,也就是MSP的初值;复位、NMI和硬fault的优先级是固定的。,4.4.1向量表,在向量表的位置0处,必须包含以下4个值:main栈顶地址MSP;复位程序的入口地址;非屏蔽中断(NMI)ISR的入口地址;硬故障ISR的入口地址。,一个完整向量表的例子:,一个完整向量表的例子:,4.4.2启动过程,正常情况,系统复位之后按下页表所示步骤启动一个C/C+程序在运行时先完成最初的三步,然后调用main()。复位服务子程序用来启动应用程序和允许中断。,系统复位之后的启动步骤,系统复位之后的启动步骤(续),复位服务子程序,在中断处理完成后,有三种方式可调用复位服务子程序:(通过例子说明)例1,纯粹Sleep-on-exit的复位服务子程序(复位程序不进行主循环);例2,带有通过WFI(WaitForInterrupt)选择睡眠模式的复位服务子程序;例3,选定的Sleep-on-exit,可被要求的ISR唤醒而产生复位子程序。,例1,纯粹Sleep-on-exit,例2,通过WFI选择睡眠模式,例3,Sleep-on-exit,可被要求的ISR唤醒,4.5多堆栈的设置,为了实现多堆栈,应用程序须执行下面操作:用MSR指令来设置Process_SP寄存器;如果使用MPU(MemoryProtectionUnit),可适当地保护栈;Thread模式下初始化栈和访问方式。,Thread模式下的栈,如果Thread模式下的访问方式由特权方式变成用户方式,仅可通过其他的ISR,例如SVCall,才能使之从用户方式返回到特权方式。在Thread模式下所用的栈可在Main栈和Process栈之间切换,但是这样做会影响对线程局部变量的访问。因此,在Thread模式下最好是通过一个ISR来改变所使用的栈。,栈的切换过程(一):,(1)调用设置程序,完成:a.用MSR指令设置其他栈;b.如果有MPU,则使能MPU以支持基区;c.调用启动程序;d.从设置程序中返回;(2)将Thread模式的访问方式改为无特权方式(用户方式);,栈的切换过程(二):,(3)使用SVC调用内核,内核将:a.启动线程;b.使用MRS指令为当前用户线程读取SP,并将其保存在TCB(线程控制块)中;c.使用MSR指令为下个线程设置SP,通常是Process_SP;d.如果需要,为新的当前线程设置MPU;e.返回到新的当前线程。,例子:显示如何利用PSP在ISR中修改EXC_RETURN的值,用于返回。,例子:显示如何使用PSP完成切换线程后的内容切换。,4.6Abort模式,有一些异常称为故障,有四种事件能产生故障:取指令或从向量表加载向量时总线出错;数据访问时总线出错;内部检查错误,如未定义指令或试图用BX指令改变状态。在NVIC中的故障状态寄存器将指出故障的原因;超越访问方式特权或未管理区导致MPU故障。,Abort模式,当处理器发生故障后,进入Abort模式,故障处理可分为两类:固定优先级硬故障;优先权可设定的local故障。,4.6.1硬故障,如果故障由于优先级或可配置的故障处理程序被禁止而不能激活,此时所有这些故障均为硬故障。所有异常中,仅有复位和NMI能抢占固定优先级硬故障。硬故障可以抢占除了复位和NMI或其他硬故障之外的其他任何异常。,4.6.2Local故障和升级,当允许时,Local故障处理程序处理所有一般故障。当遇到以下几种情况时Local故障将升级到硬故障:一个Local故障处理引起了一个与之所服务的故障类型相同的故障;一个Local故障处理引起了一个相同或更高优先级的故障;一个异常处理引起了一个有相同或更高优先级的故障;禁止Local故障。,Local故障列表(1),Local故障列表(2),Local故障列表(3),4.6.3故障状态寄存器和故障地址寄存器,每个故障都有一个故障状态寄存器,用以对该故障的状态进行标志。Cortex-M3处理器共有5个故障状态寄存器(StatueRegister,SR):三个可配置的故障状态寄存器(MemManageSR-MMSR、BusFaultSR-BFSR、UsageFaultUFSR),与三个可配置的故障处理相对应;一个硬故障状态寄存器(HardFaultSR-HFSR);一个调试故障状态寄存器(DebugM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 住宅新能源产业链分析-洞察及研究
- 4.1 元素周期表和元素周期律 第2课 元素周期律-教学设计 2023-2024学年高一化学沪科版(2020)必修第一册
- 乡村电商发展-洞察及研究
- 2025年充气家具行业研究报告及未来行业发展趋势预测
- 智能家居系统集成项目建议书编制及实施合同
- 郑州租赁市场房屋租赁合同解除及房屋返还通知合同
- 青岛市二手房买卖交易税费承担与减免合同
- 风险管理师作业指导书
- 哈尔滨市二手房居间服务及房屋质量验收合同
- 5G通信建设项目建议书编制与网络优化合同
- 碳纤维行业培训课件
- 2025至2030中国无针注射系统行业发展趋势分析与未来投资战略咨询研究报告
- 感染性休克护理
- 儿童过敏性紫癜饮食护理讲课件
- 肝脏的解剖和分段分叶
- 校外集体配餐管理制度
- 2025至2030年中国口腔喷雾剂行业市场竞争态势及发展前景研判报告
- 关于卫生院“十五五”发展规划(详细版)
- 送气工配送管理制度
- T/CECS 10163-2021纤维增强聚氨酯复合材料杆塔
- 机械设备安装施工服务承诺书范文
评论
0/150
提交评论