keil MDK hardfault调试步骤
来源:互联网 发布:可以买数据的公司 编辑:程序博客网 时间:2024/06/07 11:13
hardfault
Cortex-M3/4的Fault简介
(http://blog.csdn.net/wang_yf_/article/details/53436041%20fault%E8%AF%A6%E8%A7%A3)、
方法1:调试步骤
1,添加断点
在进入hardfault后进入断点。
/** * @brief This function handles Hard Fault exception. * @param None * @retval None */ void HardFault_Handler(void) { /* Go to infinite loop when Hard Fault exception occurs */ if (CoreDebug->DHCSR & 1) { //check C_DEBUGEN == 1 -> Debugger Connected __breakpoint(0); // halt program execution here } while (1) { } }
2,查看具体fault种类
通过菜单栏Peripherals >Core Peripherals >Fault Reports打开fault reports
3,查看使用的是哪个堆栈
查看LR的值可以知道进入hardfault时候程序用的是哪个堆栈。
4,根据堆栈查找PC的值
根据上面步骤可以确定使用的堆栈,然后根据M3/4的入栈顺序可以知道:栈里面的值依次为R0~R3、R12、PC(Return address)、xPSR(CPSR或SPSR)、LR。在PC以前都是通用寄存器,所以通常查到的第一个地址就是PC的地址,也就是进入异常前要执行的命令。如果详细计算的话堆栈地址加上20也就是0x14就是PC的地址。要注意的是地址在寄存器中的顺序。例如下图:
1)堆栈地址:0x200122F8+0x14=0x2001230c
2)PC的值:9d 19 00 08 转换成地址:0x0800199d
5,根据PC的值查找语句命令
在反汇编窗口中点击右键,选中show disassembly at address 在窗口中输入PC地址即可定位产生异常的命令。
阅读全文
0 0
- keil MDK hardfault调试步骤
- KEIL MDK调试小技巧
- Keil使用malloc异常进入hardfault调试故障手记
- keil MDK在RAM中调试
- keil MDK之RTX的调试方法
- Keil MDK
- HardFault定位步骤
- mini2440在Keil MDK下使用Jlink调试入门
- keil MDK 中使用虚拟串口调试串口
- 关于KEIL MDK调试ARM程序不能仿真的问题
- keil MDK 中使用虚拟串口调试串口
- 【转载】keil(MDK-ARM)的调试使用
- keil MDK 中使用虚拟串口调试串口
- keil mdk调试过程中查看局部变量的方法
- keil debug时直接进入HardFault
- 用KEIL实现联机调试的步骤
- 用KEIL实现联机调试的步骤
- KEIL MDK 的优化
- 南阳理工acm 187快速查找素数
- HDU-1231-最大连续子序列
- 在css中为table 添加border-collapse:collapse后表格单元格边界异常的解决办法
- 欢迎使用CSDN-markdown编辑器
- Netty解决TCP粘包/拆包导致的半包读写问题
- keil MDK hardfault调试步骤
- 单例模式示例与解析
- PickerView时间 城市 条件选择器
- 下拉刷新
- redis数据库window版安装
- android build构建,获取packagename
- 字符编码发展史和密码算法那些事儿
- CSS基础知识1
- XML DTD 语法详解