(7)使用CmBacktrace精确分析hardfault
至此,CmBacktrace移植、配置完成,接下来就可以愉快的使用了!2.4. 去除原有的HardFault_Handler。再使用addr2line分析在哪一行出现问题。2.5. 配置CmBacktrace。触发hardfault的代码位置。不准确的数据访问违规所导致的。加入访问非法地址函数。
·
1.下载源码及工具
CmBacktrace: ARM Cortex-M 系列 MCU 错误追踪库

2.移植代码
CmBacktrace | 一款 ARM Cortex-M 系列 MCU 错误追踪库-CSDN博客 移植使用参考
复制CmBacktrace源码到工程中:

② 在keil中添加 CmBacktrace 组件的源码文件:

③ 添加CmBacktrace的头文件路径:

2.4. 去除原有的HardFault_Handler

在stm32l4xx_it.c文件中注释该函数,防止冲突:
2.5. 配置CmBacktrace

CmBacktrace的配置文件在cmb_cfg.h,针对不同的平台和场景,需要自行手动配置:

本文使用的是Cortex-M4裸机平台,配置如下:
至此,CmBacktrace移植、配置完成,接下来就可以愉快的使用了!
3.使用测试
初始化,包含头文件
#include "cm_backtrace.h" cm_backtrace_init("CmBacktrace", "V1.0.0", "V0.0.1");

加入访问非法地址函数
void trigger_hardfault(void)
{
volatile int *invalid_ptr = (int *)0xDEADBEEF; // 非法内存地址
*invalid_ptr = 42; // 访问非法地址,触发HardFault
*invalid_ptr = 10;
}
RTT输出信息
不准确的数据访问违规所导致的

再使用addr2line分析在哪一行出现问题


触发hardfault的代码位置

更多推荐



所有评论(0)