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

    文章

    5282

    浏览量

    119762
  • 函数
    +关注

    关注

    3

    文章

    4274

    浏览量

    62302

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

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

收藏 人收藏

    评论

    相关推荐

    一种简单高效配置FPGA的方法

    本文描述了一种简单高效配置FPGA的方法,该方法利用微处理器从串行外围接口(SPI)闪存配置FPGA设备。这种方法减少了硬件组件、板空间和成本。
    的头像 发表于 10-24 14:57 214次阅读
    <b class='flag-5'>一种</b>简单高效配置FPGA的<b class='flag-5'>方法</b>

    APM32F10xx进入低功耗模式的问题分析

    近日,在学习APM32开发板关于PMU模块的内容,看到很多内容都是调用WFI内核指令进入低功耗模式,于是自己想尝试调用WFE内核指令进入低功耗模式,但在APM32F10xx中,我运用按键中断,在中断
    的头像 发表于 10-18 16:13 176次阅读
    <b class='flag-5'>APM</b>32F10xx进入低功耗模式的问题分析

    测试用例怎么写

    编写测试用例是确保软件系统从头到尾能够正常工作的关键步骤。以下是个详细的指南,介绍如何编写
    的头像 发表于 09-20 10:29 290次阅读

    rup是一种什么模型

    RUP(Rational Unified Process,统建模语言)是一种软件开发过程模型,它是一种迭代和增量的软件开发
    的头像 发表于 07-09 10:13 1057次阅读

    APM32下载了APM专属的HEX例程后识别不了芯片怎么解决?

    之前焊了块,可以识别芯片,下载了APM专属的HEX例程后反而识别不了了,非常痛苦。ARM内核仍然存在,Keil里面也下载不了了……不是板子锁死的问题
    发表于 03-28 06:20

    介绍6常见的反调试方法

    一种防止逆向的方案。逆向人员如果遇到复杂的代码混淆,有时会使用调试器动态分析代码逻辑简化分析流程。例如恶意软件通常会被安全研究人员、反病毒厂商和其他安全专业人员分析和调试,以了解其行
    的头像 发表于 01-15 09:53 3405次阅读
    介绍6<b class='flag-5'>种</b>常见的反<b class='flag-5'>调试</b><b class='flag-5'>方法</b>

    SWD端口无法连接如何排查

    大家在调试GD32 MCU的时候是否也碰到过SWD调试端口无法连接的情况?SWD端口无法连接的原因有很多,有时候排查没有思路,可能会耽误大家的时间,下面小编为大家介绍常见的SWD无法连接的原因,供大家
    的头像 发表于 01-10 10:46 2067次阅读
    SWD端口无法连接如何<b class='flag-5'>排查</b>

    一种八腔带通腔体滤波器的设计方法

    摘 要: 介绍了一种八腔带通腔体滤波器的设计方法。结合仿真软件SuperFilter与Ansoft HFSS的三维场仿真,能极大减少设计微波腔体滤波器的时间和成本。通过对模型的仿真和优化,最终设计出来的滤波器实验测试结果与仿真结
    的头像 发表于 12-16 16:51 1716次阅读
    <b class='flag-5'>一种</b>八腔带通腔体滤波器的设计<b class='flag-5'>方法</b>

    一种产生激光脉冲新方法

    等离子体中脉冲压缩的概念 英国和韩国的科学家提出了一种产生激光脉冲的新方法,其功率是现有激光脉冲的1000多倍。 科学家们使用计算机模拟联合研究,展示了一种压缩光的新方法,以充分提高光
    的头像 发表于 12-07 06:32 442次阅读
    <b class='flag-5'>一种</b>产生激光脉冲新<b class='flag-5'>方法</b>

    GPIO无法触发中断常规排查方法有哪些?

    1、电源域是否打开 2、IOMUX是否设置对 3、是否配置了中断方式,外部电平是否满足条件 4、是否为输入状态 备注:这次分享的是,我们做展锐平台GPIO排查方法,不同平台、不同版本、不同项目都会
    发表于 11-24 16:11

    一种产生激光脉冲的新方法

    英国和韩国的科学家提出了一种产生激光脉冲的新方法,其功率是现有激光脉冲的1000多倍。
    的头像 发表于 11-20 16:56 519次阅读
    <b class='flag-5'>一种</b>产生激光脉冲的新<b class='flag-5'>方法</b>

    一种具有实用价值的OFDM帧同步方法

    电子发烧友网站提供《一种具有实用价值的OFDM帧同步方法.pdf》资料免费下载
    发表于 11-08 15:47 0次下载
    <b class='flag-5'>一种</b>具有实用价值的OFDM帧同步<b class='flag-5'>方法</b>

    全志A40i应用笔记 | 3常见的网卡软件问题以及排查思路

    些网卡的设计问题,今天小编为大家分享3在使用OKA40i-C开发板时容易遇到的网卡软件问题以及排查思路。 、问题分析: 问题描述1——以太网初始化报错 No phy found 在
    发表于 11-08 10:02

    一种高效、灵巧的多通信信号产生方法

    电子发烧友网站提供《一种高效、灵巧的多通信信号产生方法.pdf》资料免费下载
    发表于 11-07 09:54 0次下载
    <b class='flag-5'>一种</b>高效、灵巧的多通信信号产生<b class='flag-5'>方法</b>

    什么是断言函数呢?断言函数在调试中的应用

    次我们继续讲调试方法调试排查程序Bug的有效方法,同时也对嵌入式
    的头像 发表于 11-06 15:55 1263次阅读
    什么是断言函数呢?断言函数在<b class='flag-5'>调试</b>中的应用