硬汉嵌入式论坛

 找回密码
 立即注册
查看: 15313|回复: 14
收起左侧

[其它] KEIL和SEGGER都升级了Cortex-M系列内核出现硬件异常时原因分析笔记,支持GCC,IAR和

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2016-9-27 19:26:46 | 显示全部楼层 |阅读模式
说明:
1.  MDK的硬件异常分析主要是通过MDK调试状态进行分析的。
     文档下载 apnt209.pdf (651 KB, 下载次数: 1516)
2.  SEGGER做的比较全面,支持GCC,IAR和MDK。
    文档下载: AN00016_AnalyzingHardFaultsOnCortexM.pdf (98 KB, 下载次数: 1054)
    代码下载: HardFaultHandler.zip (5 KB, 下载次数: 922)
==============================
SEGGER
1.png

2.png

MDK
4.png
回复

使用道具 举报

20

主题

249

回帖

309

积分

高级会员

积分
309
发表于 2016-9-27 20:03:44 | 显示全部楼层
谢谢奉献
回复

使用道具 举报

36

主题

1445

回帖

1553

积分

至尊会员

积分
1553
发表于 2019-7-16 10:01:17 | 显示全部楼层
感谢大佬的无私奉献!
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2019-9-2 17:18:04 | 显示全部楼层
感谢硬汉大佬的分享。。
在这里我有个问题不解。。我的平台是MDK。
我看pdf手册好像可以用:直接修改HardFault_Handler的方式:
static volatile unsigned int _Continue;
/**
  * @brief  This function handles Hard Fault exception.
  * @param  None
  * @retval None
  */
void HardFault_Handler(void)
{
  /* Go to infinite loop when Hard Fault exception occurs */
        _Continue = 0u;
        while (_Continue == 0u) {
        }
}
然后调试的时候,修改_Continue的值,也可以跳出HardFault_Handler 定位到出错的地方,
那么还有必要再移植一个 SEGGER的 HardFaultHandler 吗?前面的方式已经可以达到目的了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2019-9-3 02:15:47 | 显示全部楼层
暖暖的_dgqY4 发表于 2019-9-2 17:18
感谢硬汉大佬的分享。。
在这里我有个问题不解。。我的平台是MDK。
我看pdf手册好像可以用:直接修改Hard ...

对,这就不需要了
回复

使用道具 举报

2

主题

14

回帖

20

积分

新手上路

积分
20
发表于 2019-11-15 09:57:34 | 显示全部楼层
我程序产生了一个硬错误,我将硬错误中断服务函数按照这样改没效果呀,还是一直死在硬错误中断里面。是哪里改的不对吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2019-11-15 10:59:23 | 显示全部楼层
mvvm 发表于 2019-11-15 09:57
我程序产生了一个硬错误,我将硬错误中断服务函数按照这样改没效果呀,还是一直死在硬错误中断里面。是哪里 ...

如果是MDK的裸机程序,直接使用这个帖子里面的方案吧,还省事些

MDK快速定位硬件异常位置方法,调用show caller code即可快速锁定
http://www.armbbs.cn/forum.php?m ... 4364&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

73

主题

1193

回帖

1412

积分

至尊会员

积分
1412
发表于 2019-12-12 13:17:06
暖暖的_dgqY4 发表于 2019-9-2 17:18
感谢硬汉大佬的分享。。
在这里我有个问题不解。。我的平台是MDK。
我看pdf手册好像可以用:直接修改Hard ...

请问这个用法怎么用啊,pdf能分享吗

27

主题

91

回帖

172

积分

初级会员

积分
172
发表于 2020-2-2 22:54:27 | 显示全部楼层
...咨询下,void HardFaultHandler_C(void) ;
__asm void HardFault(void)
{
        tst  LR, #4 ;       
        ite    EQ ;
        mrseq  R0, MSP           ;// Stacking was using MSP.
        mrsne  R0, PSP           ;// Stacking was using PSP.
        IMPORT HardFaultHandler_C
        b      HardFaultHandler_C  ;// Stack pointer passed through R0.       
       
}

void HardFaultHandler_C(void)
{
        printf("aa");
}
void HardFault_Handler(void)
{

        HardFault();
}

IMPORT 后面的函数必须是_C结尾? 规定么?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2020-2-3 00:09:59 | 显示全部楼层
borrow1988 发表于 2020-2-2 22:54
...咨询下,void HardFaultHandler_C(void) ;
__asm void HardFault(void)
{

这么调用不是更简单。
QQ截图20200202234358.png
回复

使用道具 举报

19

主题

150

回帖

207

积分

高级会员

积分
207
发表于 2020-8-10 12:27:55 | 显示全部楼层
硬件异常
回复

使用道具 举报

2

主题

11

回帖

17

积分

新手上路

积分
17
发表于 2020-10-18 15:40:52 | 显示全部楼层
感谢感谢,最近重新学习一下
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2022-1-5 16:17:48 | 显示全部楼层
神器啊。。。。。
回复

使用道具 举报

7

主题

36

回帖

57

积分

初级会员

积分
57
发表于 2024-4-6 17:04:37 | 显示全部楼层
M7可以用么
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2024-4-7 07:47:45 | 显示全部楼层

可以使用。
回复

使用道具 举报

16

主题

67

回帖

115

积分

初级会员

积分
115
发表于 2024-4-17 14:59:16 | 显示全部楼层
暖暖的_dgqY4 发表于 2019-9-2 17:18
感谢硬汉大佬的分享。。
在这里我有个问题不解。。我的平台是MDK。
我看pdf手册好像可以用:直接修改Hard ...

调试的时候,怎么修改_Continue的值
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-28 12:38 , Processed in 0.214811 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表