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的代码位置

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐