一种ARM hardfault usagefault的解法

这篇博客分析了一个在ARM处理器中遇到的hardfault usagefault问题,通过core dump信息定位到故障源在于一个空指针访问。博客详细介绍了如何通过CFSR和HFSR确定故障类型,以及调用栈的分析过程。最终,作者找到了问题的临时解决方案是对指针进行非空检查,并提出了根本解决办法,即将特定操作移到更高优先级的任务中。
摘要由CSDN通过智能技术生成

core dump 信息如下

!!!!!!!!!! Exception  !!!!!!!!!!

========== Regs info  ==========

R0      0x0800B83C

R1      0x08017610

R2      0x08005BF4

R3      0x00000000

R4      0x08017610

R5      0x00000011

R6      0x0800B660

R7      0x0800E560

R8      0x00000010

R9      0x0800E568

R10     0x00000001

R11     0x11111111

R12     0x0000C5FD

LR      0x1009E069

PC      0x00000000

xPSR    0x200F0000

SP      0x0801C218

EXC_RET 0xFFFFFFFD

EXC_NUM 0x00000003

PRIMASK 0x00000000

FLTMASK 0x00000000

BASEPRI 0x00000000

CFSR    0x00020000

HFSR    0x40000000

MMFAR   0xE000ED34

BFAR    0xE000ED38

AFSR    0x00000000

========== Stack info ==========

stack(0x0801C218): 0x0800E568 0x0800B3BC 0x0800B660 0x00000001

stack(0x0801C228): 0x080027A0 0x0800E160 0x00000003 0x1009E60D

stack(0x0801C238): 0x00000000 0x00000000 0x0800B3BC 0x00000001

stack(0x0801C248): 0x00000976 0x00000000 0x08011768 0x0800B3A4

stack(0x0801C258): 0x0800B660 0x00000003 0x0800B3BC 0x100A1FFB

stack(0x0801C268): 0x00000003 0x00000000 0x00000003 0x08011768

stack(0x0801C278): 0x00000003 0x1009C5F3 0x10043A11 0x0800E160

stack(0x0801C288): 0x00000000 0x10057A61 0x00000000 0x0800E0E0

stack(0x0801C298): 0x00000054 0x0800E160 0x080027A0 0x080027A0

stack(0x0801C2A8): 0x080027A8 0x10057B6F 0x0801C2F0 0x0801C2E7

stack(0x0801C2B8): 0x08000284 0x08002638 0x08002610 0x09090909

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值