0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深入探讨单片机异常处理

单片机匠人 来源:单片机匠人 作者: 黄忠老师 2021-10-20 10:55 次阅读

ARM处理器中,如果一个程序产生了错误并且被处理器检测到,这是就会产生错误异常。

错误是怎么发生的呢?

许多可能的原因都会引起错误发生,比如对于存储器相关错误,总线系统的异常响应可以有以下原因:

访问的地址非法;

由于传输的类型非法,总线的从设备不接受此次传输(从设备决定)

由于传输未使能或初始化,总线的从设备无法进行此次传输(例如,如果外设的时钟被关闭,那么访问这个外设时,微控制器就可能会产生错误响应)。

当确定了硬件错误异常的直接原因以后,我们可能还得花费一些时间来确定问题的根源。例如,总线错误可以由很多种情况引发,例如错误的指针操作、栈空间损坏、内存溢出、非法存储器映射以及其他原因。

分析错误

根据错误类型的不同,通常能够直接确定引起硬件错误异常的指令的位置。要实现这个目的,就需要知道进入硬件错误异常时的寄存器的内容,以及异常处理前压入栈中的寄存器的内容。这些值中包含了程序返回地址,通过它也能知道引起错误的指令地址。

如果使用了调试器,那么可在工程中创建硬件错误异常处理,并且在其中添加一个用以暂停处理器的断点指令;或者也可以在硬件错误异常处理的开始部分设置一个断点,这样当硬件错误发生时,处理器就会自动暂停。在处理器由于硬件错误暂停后,我们就可以尝试着按照下面图的流程对错误进行定位。

为了给分析提供更多的信息,也可以生成程序映像的汇编代码,并且利用在栈帧中找到的PC值确定错误的位置。如果错误的地址为存储器访问指令,就应该检查寄存器的值确定存储器访问的地址是否合法。除了检查地址范围,也应该确认存储器的地址是否正确地对齐。

除了压入栈中的PC值(返回地址),栈帧中也包含了其他有助于调试的寄存器值。例如,压入栈的IPSR能够反映处理器是否在进行异常处理,EPSR则代表了处理器状态(EPSR的T位为0,则表示错误由意外切换至ARM状态引起)。

栈中的LR也可能会提供一些信息,例如发生错误的函数的返回地址,错误是否发生在异常处理中,以及EXC_RETURN的值是否被异常破坏等。

另外,当前的寄存器值也可以提供有助于定位错误原因的各种信息,除了当前栈指针的值,当前的链接寄存器的值也可能有帮助。如果LR中为非法的EXC_RETURN的值,这就意味着它在前面异常处理中被错误地修改了。

CONTROL寄存器也可以提供帮助。在没有OS的简单应用程序中,进程栈指针(PSP)不会被用到,并且CONTROL寄存器会一直保持为0。如果CONTROL寄存器被设置为0x2(PSP用于线程状态),这就意味着LR在之前的异常处理中被错误地修改了,或者栈内容被破坏导致了EXC_RETURN的值错误。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5388

    浏览量

    121714
  • 存储器
    +关注

    关注

    38

    文章

    7550

    浏览量

    164712
  • ARM处理器
    +关注

    关注

    6

    文章

    361

    浏览量

    42033

原文标题:单片机的异常处理

文章出处:【微信号:gh_e7f294a514ca,微信公众号:单片机匠人】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    相关推荐

    深入探讨试验数据采集系统在力学试验室中发挥的作用

    万能及压力机设备的特殊性、数据无法实时采集的现状、综合管理需求以及数据联动分析需求等方面,深入探讨试验数据采集系统在力学试验室中的作用。 一、万能及压力机设备的特殊性对数据采集系
    的头像 发表于 02-22 11:27 215次阅读
    <b class='flag-5'>深入探讨</b>试验<b class='flag-5'>机</b>数据采集系统在力学试验室中发挥的作用

    深入探讨DeepSeek大模型的核心技术

    导读 本文深入探讨了DeepSeek大模型的核心技术,从公司背景、模型能力、训推成本到核心技术细节进行了全面分析。   一、关于DeepSeek公司及其大模型 1.1 公司概况 DeepSeek
    的头像 发表于 02-10 10:49 668次阅读
    <b class='flag-5'>深入探讨</b>DeepSeek大模型的核心技术

    数码管和单片机的连接方式

    了解数码管和单片机的工作原理,以及它们之间的连接方式,不仅有助于电子爱好者进行项目开发,也是电子工程师必备的技能。本文将围绕这两个核心组件,展开深入且全面的技术探讨
    的头像 发表于 02-05 17:44 355次阅读

    什么是单片机的ADC接口

    ,简称ADC)接口是单片机中不可或缺的一部分,它负责将模拟信号转换为数字信号,使得单片机能够处理来自传感器、仪表等模拟世界的信号。本文将深入探讨单片
    的头像 发表于 02-03 11:27 437次阅读

    单片机中断技术详解

    在现代电子设备中,单片机作为控制核心发挥着举足轻重的作用。而在其高效运作的背后,中断机制是推动单片机实现实时响应与高效执行的关键因素。本文将深入探讨单片机中的中断概念、中断系统的结构、
    的头像 发表于 02-02 15:57 264次阅读

    单片机I/O接口的传输方式

    着数据传输的任务,还影响着整个系统的性能和可靠性。本文将深入探讨单片机I/O接口的传输方式,包括无条件传送、查询传送、中断传送和DMA传送等,以期为单片机应用开发者提供有价值的参考。
    的头像 发表于 02-02 15:56 237次阅读

    深入探讨Linux系统中的动态链接库机制

    异常或崩溃。为深入理解动态链接机制及其工作原理,我重温了《程序员的自我修养》,并通过实践演示与反汇编分析,了解了动态链接的过程。 本文将深入探讨Linux系统中的动态链接库机制,这其中包括但不限于全局符号介入(Global Sy
    的头像 发表于 12-18 10:06 239次阅读
    <b class='flag-5'>深入探讨</b>Linux系统中的动态链接库机制

    单片机的中断机制

    单片机的中断机制是一种重要的处理方式,它允许单片机在执行主程序的过程中,能够暂停当前任务,转而处理外部或内部紧急事件。这种机制极大地提高了系统的响应速度和
    的头像 发表于 10-17 18:03 1173次阅读

    单片机异常复位的原因

    单片机异常复位是指单片机在正常工作过程中,非预期地返回到初始状态或重启。这种异常复位现象可能由多种因素引起,以下是对单片机
    的头像 发表于 10-17 17:56 1698次阅读

    单片机SPI通信实现

    深入探讨单片机(如基于STM32、AVR、PIC等)如何通过SPI(Serial Peripheral Interface)进行通信之前,我们先概述SPI通信的基本原理,随后以STM32微控制器为例,详细解释如何配置SPI接口,并提供相应的代码示例。
    的头像 发表于 09-09 17:00 911次阅读

    一文读懂什么单片机:组成结构与应用

    欢迎来到单片机的世界,这是一种微小(但功能强大)的设备,改变了嵌入式系统的面貌。在本文中,您将了解单片机的一些基本知识、单片机的结构以及微处理器与
    的头像 发表于 08-09 11:49 1888次阅读
    一文读懂什么<b class='flag-5'>单片机</b>:组成结构与应用

    单片机可以替代PLC吗

    以其集成度高、体积小、成本低等特点在工业控制中占据了一席之地,而PLC则以其高可靠性、稳定性和灵活性在工业自动化领域得到了广泛应用。那么,问题来了:单片机是否可以替代PLC呢?本文将从多个角度对这一问题进行深入探讨
    的头像 发表于 06-03 14:47 806次阅读

    寄存器和单片机的关系与区别

    ,它将具有数据处理能力的中央处理器CPU、内存、输入输出设备等功能集成在一块硅片上,形成了一个小而完善的微型计算机系统。本文将详细探讨寄存器和单片机的关系与区别,旨在为读者提供清晰、
    的头像 发表于 05-30 17:17 996次阅读

    PLC与单片机的区别是什么

    。它们各自具有独特的功能和优势,适用于不同的应用场景。本文将深入探讨PLC和单片机的区别,旨在帮助读者更好地理解这两种控制设备的特点和选择。
    的头像 发表于 05-28 16:11 2277次阅读

    单片机抗干扰措施有哪些?

    电磁干扰(EMI)问题日益成为影响单片机稳定性与可靠性的主要障碍。因此,探讨和实施有效的抗干扰措施对于提高单片机系统的性能至关重要。下面为大家简单介绍一种单片机抗干扰措施
    的头像 发表于 03-15 16:36 3178次阅读
    <b class='flag-5'>单片机</b>抗干扰措施有哪些?