开源CmBacktrace移植到RT-Thread Nano

一、CmBacktrace特性

       CmBacktrace 是一款针对 ARM Cortex-M 系列 MCU 的错误代码自动追踪、定位,错误原因自动分析的开源库。

  • 支持的错误包括:

  • 断言(assert)

  • 故障(Hard Fault, Memory Management Fault, Bus Fault, Usage Fault, Debug Fault)

  • 故障原因 自动诊断 :可在故障发生时,自动分析出故障的原因,定位发生故障的代码位置,而无需再手动分析繁杂的故障寄存器;

  • 支持 裸机 及以下操作系统平台:

  • UCOS

  • FreeRTOS(需修改源码)

  • 故障诊断信息支持多国语言(目前:简体中文、英文);

  • 适配 Cortex-M0/M3/M4/M7 MCU;

  • 支持 IAR、KEIL、GCC 编译器;

CmBacktrace 源码下载地址:https://github.com/armink/CmBacktrace

二、移植步骤

       从下载的源码中将cm_backtrace文件夹复制到已有的工程目录下,在Keil工程中添加cmbacktrace目录,并将cm_backtrace.c和cmb_fault.S添加到cmbacktrace目录线下;记住要勾选C99模式。

       上述操作完成后执行编译会报错,此时需要修改cmb_cfg.h文件内的相关配置,修改后的配置如下:

       再次编译还产生一个error,这是因为cmb_fault.c与.S中的HardFault_Handler函数重定义了,此时将context_rvds.S修改如下:

       上述修改全部完成后编译OK。

       编译OK后,将CmBacktrace源码目录下的tools文件夹的addr2line.exe工具拷贝到工程的可执行文件所在目录下。

三、代码测试

       cmbacktrace初始化:

      上图红色框中的字符串为工程可执行文件名;

      下面编写一个测试函数进行测试:

       运行代码后程序发生崩溃,打印串口输出如下:

      进入到工程的可执行文件所在目录,按住键盘Shift+鼠标右键,打开Powershell窗口;

       复制串口输出窗口的红色框内容,粘贴到Powershell的命令行中(注意win10系统要在命令行先输入.\),然后回车。

       从命令行输出Log可以看出,是fault_test_by_div0这个函数发生了错误,并且错误出现在bll_4gcat1.c第653行。

       通过以上方法可以发现,使用CmBacktrace 库能帮助我们有效、快速地定位到HardFault之类的错误,提高代码开发效率。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值