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

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

3天内不再提示

使用APM32一种排查软件端问题的调试方法

Geehy极海半导体 来源:21ic论坛 作者:21ic论坛 2022-09-08 11:00 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

问题背景

实际调试、或者产品开发阶段,有时候会碰到产品触发异常、报HardFault这类错误。

在这里介绍一种排查软件端问题的调试方法。

测试原理

简单来说,就是利用 “MCU触发HardFault异常、跳转到HardFault服务函数前,会把现场的内核寄存器值先压入堆栈空间保存好” 的这个特性。

所以我们可以:

· 确认触发HardFault后,使用的是PSP进程堆栈,还是MSP主堆栈(一般是MSP,也可理解用户在SRAM中划分出来的堆栈空间)

· 根据对应堆栈SP指针,挑出触发HardFault的PC指针所指向的位置。

· 注意现场保存、寄存器值入栈顺序:xPSR-》PC-》LR-》R12-》R3~R0

b5dfeb18-2f16-11ed-ba43-dac502259ad0.jpg

b5f0adae-2f16-11ed-ba43-dac502259ad0.jpg

b60eddf6-2f16-11ed-ba43-dac502259ad0.jpg

实测基于APM32F407demo板,新建会触发HardFault的例程——访问、改写溢出实际SRAM存储空间的数据。

b635432e-2f16-11ed-ba43-dac502259ad0.jpg

b6577ac0-2f16-11ed-ba43-dac502259ad0.jpg 仿真调试下,全速运行,成功触发Hardfault。

b66ae5e2-2f16-11ed-ba43-dac502259ad0.jpg

在0x2000_03E0堆栈位置,存储着进入HardFault前的内核寄存器信息,如图所示

·PC指向地址是0x08003AA——可找到对应触发HardFault的汇编代码

b6962e32-2f16-11ed-ba43-dac502259ad0.jpg

上述分析可以看到,在对0x2003_0002这个异常存储空间进行操作后,会影响往下代码指令的执行(特别是操作SRAM空间)从而触发HardFault

后话HardFault的触发还有很多因素,比如客户的MCU供电问题、某些VCAP脚没接上、硬件接地干扰、Flash等待周期不符合芯片规定等等。文章所介绍的方法只是针对软件部分的排查参考。

审核编辑 :李倩

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

    关注

    31

    文章

    5623

    浏览量

    130632
  • 函数
    +关注

    关注

    3

    文章

    4423

    浏览量

    68042

原文标题:APM32芯得 EP.08 | APM32F407 HardFault排查——软件方案

文章出处:【微信号:geehysemi,微信公众号:Geehy极海半导体】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    服务器负载过高的系统性排查方法

    本文以这次故障的完整排查过程为线索,展示服务器负载过高的系统性排查方法。文章以第人称叙事展开,每步都给出实际命令输出和决策思路。
    的头像 发表于 05-08 14:26 187次阅读

    智能扫地机器人驱动板接口定义与调试方法-技术性篇(艾毕胜电子)

    定义,并从硬件调试软件调试、联合调试三个维度,阐述全流程调试方法,为驱动板的研发、生产与故障
    的头像 发表于 03-18 16:58 486次阅读

    CAN总线报错看不懂?5错误帧+5步排查次讲清

    CAN总线通信异常?错误帧频繁出现?本文详解五错误帧类型,并提供五步排查法,助你快速定位问题根源。错误帧的作用错误帧是CAN总线用于错误通知的报文。当任节点检测到通信错误时,会立即发送错误帧通知
    的头像 发表于 03-16 11:36 660次阅读
    CAN总线报错看不懂?5<b class='flag-5'>种</b>错误帧+5步<b class='flag-5'>排查</b>法<b class='flag-5'>一</b>次讲清

    CD7377CZ/7388工程化调试故障排查手册

    标签:#CD7377CZ故障排查 #7388调试手册 #音频芯片工程调试 #线性稳压故障解决 #国产芯片应用 #电子工程实操
    的头像 发表于 12-11 16:07 611次阅读

    单片机系统硬件的调试方法

    在线仿真器和系统.然后打开电源和启动在线仿真器.进行在线仿真调试。在调试过程中.经常出现三故障.第一种是通电之后,电源的指示灯不亮,以及电位系数为零.此时可以用万能表检测电源的插座。
    发表于 12-03 06:10

    Keithley吉时利6511常见故障排查及解决方法

    Keithley吉时利6511作为款精密测量仪器,在长期使用中可能会遇到各种故障。以下是该设备常见故障的排查思路及解决方法,帮助用户快速定位问题并恢复设备正常运行。     、常见
    的头像 发表于 11-21 18:47 1436次阅读
    Keithley吉时利6511常见故障<b class='flag-5'>排查</b>及解决<b class='flag-5'>方法</b>

    瑞萨RZ/T2H PCIe通信的调试方法

    本文阐述了RZ/T2H的PCIe外设作为EP,在Windows上做驱动开发、速率测试时,可能会遇到无法被Windows识别的问题。本文总结了调试方法和技巧,来排查问题原因和解决
    的头像 发表于 11-20 16:53 6161次阅读
    瑞萨RZ/T2H PCIe通信的<b class='flag-5'>调试</b><b class='flag-5'>方法</b>

    调试器无法连接的排查方法

    硬件检查: 确认 SWD 接线:SWCLK、SWDIO、GND 连接正确(VCC 可选)。 目标板供电正常(3.3V),调试器与板共地。 BOOT0 引脚接地(从 Flash 启动)。 软件配置
    发表于 11-18 06:15

    在极海APM32系列MCU中如何把代码重定位到SDRAM运行

    在有些情况下,我们想要把代码放到SDRAM运行。下面介绍在APM32的MCU中,如何把代码重定位到SDRAM运行。对于不同APM32系列的MCU,方法都是样的。
    的头像 发表于 11-04 09:14 5500次阅读
    在极海<b class='flag-5'>APM32</b>系列MCU中如何把代码重定位到SDRAM运行

    start openocd timeout 的一种解决方式

    在使用Nuclei Studio进行开发时,下载程序时提示“start openocd timeout”,但是之前下载时从没有出现过这种情况。 各种方法尝试了后(包括重建工程,重启软件等),都无济于事,最后在电脑上把调试器更换了
    发表于 10-27 06:34

    指令集测试的一种纠错方法

    本文描述在进行指令集测试的一种纠错方法 1.打开测试指令集对应的dump文件 dump文件是指由汇编文件进行反汇编之后,可以供人阅读指令的反汇编文件。其包含了每条指令的具体操作的信息。指令集测试
    发表于 10-24 14:04

    E30M6203-5G网关通讯远程调试工具说明书

    工程机械领域控制器以及显示屏都是通过以太网、CAN bus、RS232等通讯的,然而这些通讯方式在机器发生故障技术人员进行排查时就必须现场通过PEAK CAN等工具连接电脑调试。此文档是一种摆脱有线的远程
    发表于 10-17 16:33 0次下载

    求助,关于5.0.2 + serial_v1 + apm32f103vet6串口读帧问题求解

    次使用rtt,第次来这里,先给各位前辈问个好,祝大家年年加薪,身体杠杠! 开始使用v2版本,编译通过后下载没反应,可能针对极海APM32适配还不完善,就使用了v1版本,官方提供的历程可以正常
    发表于 10-10 07:11

    硬件调试:JLink 驱动配置与调试技巧

    调试器的工作原理、驱动配置流程、调试环境搭建、断点设置、寄存器与内存调试调试日志分析等方面,结合实际应用案例,旨在为硬件工程师和技术开发人员提供
    的头像 发表于 06-12 23:20 2006次阅读
    硬件<b class='flag-5'>调试</b>:JLink 驱动配置与<b class='flag-5'>调试</b>技巧

    基于极海APM32E103 MCU的CoreMark测试方法

    CoreMark跑分可以了解到MCU的算力。下面以APM32E103芯片和Keil为例,介绍下如何在APM32上面运行CoraMark测试。CoreMark需要定时器用于计时,还需要用串口来打印输出测试结果。
    的头像 发表于 06-12 09:42 1690次阅读
    基于极海<b class='flag-5'>APM</b>32E103 MCU的CoreMark测试<b class='flag-5'>方法</b>