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

    文章

    5589

    浏览量

    129064
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66839

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

    Keithley吉时利6511作为款精密测量仪器,在长期使用中可能会遇到各种故障。以下是该设备常见故障的排查思路及解决方法,帮助用户快速定位问题并恢复设备正常运行。     、常见
    的头像 发表于 11-21 18:47 447次阅读
    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 4707次阅读
    瑞萨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 4834次阅读
    在极海<b class='flag-5'>APM32</b>系列MCU中如何把代码重定位到SDRAM运行

    start openocd timeout 的一种解决方式

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

    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 1267次阅读
    硬件<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 1124次阅读
    基于极海<b class='flag-5'>APM</b>32E103 MCU的CoreMark测试<b class='flag-5'>方法</b>

    研发排查问题的利器:方法调用栈跟踪工具

    作者:京东物流 郭忠强 导语 本文从日常值班问题排查痛点出发,分析方法复用的调用链路和上下文业务逻辑,通过思考分析,借助栈帧开发了方法调用栈的链式跟踪工具,便于展示
    的头像 发表于 05-06 17:24 3011次阅读
    研发<b class='flag-5'>排查</b>问题的利器:<b class='flag-5'>一</b>款<b class='flag-5'>方法</b>调用栈跟踪工具

    电机控制器出现的一种偶发故障排查与分析

    通信方式传输信息,控制器接收总控系统发出的电机启动和转速指令,同时向总控系统反馈电机的工作状态,包括电压、电流、转速、转向等信息。纯分享帖,需要者可点击附件获取完整资料~~~*附件:电机控制器出现的一种
    发表于 04-14 21:32

    DCS日常维护与故障分析排查方法

    DCS(分布式控制系统)的日常维护与故障分析排查是确保系统稳定运行的关键环节。以下提供DCS日常维护与故障分析排查的详细方法、日常维护方法
    的头像 发表于 03-05 16:53 1446次阅读
    DCS日常维护与故障分析<b class='flag-5'>排查</b><b class='flag-5'>方法</b>

    怎么用Clion开发APM32

    APM32 官方 SDK 中提供了三开发环境:Keil、IAR 和 Eclipse。不否认这三环境的强大,但是在 AI 时代做嵌入式开发,用这三环境就显得有点不够优雅了。本篇文章
    的头像 发表于 12-17 09:19 2231次阅读
    怎么用Clion开发<b class='flag-5'>APM32</b>

    射频放大器调试与故障排查

    、射频放大器的基本工作原理 在深入调试和故障排查之前,了解射频放大器的基本工作原理是必要的。射频放大器通常由输入匹配网络、放大器核心和输出匹配网络组成。输入匹配网络确保信号能够有效地从源传递到
    的头像 发表于 12-16 09:06 2064次阅读