硬汉嵌入式论坛

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

[硬件异常黑盒子] 基于H7-TOOL的硬件异常黑盒子功能V1.0版本操作说明,持续更新(2022-08-17)

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2022-8-17 00:25:20 | 显示全部楼层 |阅读模式
【应用场景】
上电后一段时间进入硬件异常,或执行某个功能就进入硬件异常,我们可以方便的通过IDE软件或者嵌入的异常分析代码来锁定问题位置。

而运行比较长的时间,比如两周,一个月等,这就不方便挂个电脑分析了。

挂个TOOL就比较方便,可以长时间检测跟踪芯片的运行,出问题的时候可以关键信息导出来。简单的可以TOOL自带显示屏直接分析出结果,复杂的可以电脑端上位机软件分析。

【功能介绍】
1、初版先实现了类似MDK的fault reports功能。
2、支持脱机运行。
3、除了非精确异常错误,大部分都可以锁定异常出错位置。

【Lua小程序】

hardfault.lua (24.7 KB)

【操作说明】

1、操作例子使用本帖参考资料里面配套的一个例子,里面集成了一些经典错误案例,方便我们测试效果
2、将LUA文件内容复制粘贴到如下位置,并将TOOL采用SWD接口模式连接目标板。

image.png

(1)非法地址读取锁定的错误效果

TOOL测试:

image.png

image.png

TOOL锁定的出错位置:

image.png

实际MDK查看出错位置没问题:

image.png

(2)非对齐访问检测效果

TOOL测试:
image.png

TOOL锁定的出错位置:
image.png

实际MDK查看出错位置没问题:
image.png

(3)非精确的异常,这种的不能锁定异常位置

image.png

【脱机运行】


将hardfault.lua文件存到eMMC磁盘如下路径:

image.png


TOOL重新上电后,进入如下位置即可运行Lua小程序查看:

image.png


【参考资料】
帖子里面有个各种异常展示案例

视频教程第6期:MDK专题进阶,Cortex-M内核芯片Hardfault硬件异常调试分析定位(2022-02-17)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=110982




回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2022-8-17 03:10:13 | 显示全部楼层
更新完毕
回复

使用道具 举报

5

主题

519

回帖

534

积分

金牌会员

积分
534
发表于 2022-8-17 09:38:33 | 显示全部楼层
这个功能实用,强大。

回复

使用道具 举报

5

主题

97

回帖

112

积分

初级会员

积分
112
发表于 2022-8-17 10:40:28 | 显示全部楼层
非常强大。晚上试试。
回复

使用道具 举报

44

主题

562

回帖

699

积分

金牌会员

积分
699
发表于 2022-8-17 10:44:03 | 显示全部楼层
有时间研究研究,这个着实很实用,
回复

使用道具 举报

36

主题

2039

回帖

2147

积分

至尊会员

积分
2147
发表于 2022-8-17 10:55:56 | 显示全部楼层
上位机把elf文件解析也加上,可以直接打开查看,这样就不用MDK或者IAR查看了
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2022-8-17 11:19:19 | 显示全部楼层
byccc 发表于 2022-8-17 10:55
上位机把elf文件解析也加上,可以直接打开查看,这样就不用MDK或者IAR查看了

如果工程代码是基于Embedded Studio创建的,支持打开elf文件,可以方便的查看出错位置。

image.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2022-8-17 12:20:18 | 显示全部楼层
更新脱机运行说明。
回复

使用道具 举报

36

主题

2039

回帖

2147

积分

至尊会员

积分
2147
发表于 2022-8-17 14:26:59 | 显示全部楼层
eric2013 发表于 2022-8-17 11:19
如果工程代码是基于Embedded Studio创建的,支持打开elf文件,可以方便的查看出错位置。

其实上位机能支持的话,效果更好,客户使用也方便
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2022-8-17 14:27:58 | 显示全部楼层
byccc 发表于 2022-8-17 14:26
其实上位机能支持的话,效果更好,客户使用也方便

这个确实是的。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2022-8-24 02:30:00 | 显示全部楼层
客户提议增加时间戳,方便检测出问题时间,非常好,这两天升级下。
回复

使用道具 举报

0

主题

97

回帖

97

积分

初级会员

积分
97
发表于 2023-8-1 10:21:17 | 显示全部楼层
https://github.com/armink/CmBacktrace/blob/master/README_ZH.md
CmBacktrace (Cortex Microcontroller Backtrace)是一款针对 ARM Cortex-M 系列 MCU 的错误代码自动追踪、定位,错误原因自动分析的开源库。主要特性如下:

    支持的错误包括:
        断言(assert)
        故障(Hard Fault, Memory Management Fault, Bus Fault, Usage Fault, Debug Fault)
    故障原因 自动诊断 :可在故障发生时,自动分析出故障的原因,定位发生故障的代码位置,而无需再手动分析繁杂的故障寄存器;
    输出错误现场的 函数调用栈(需配合 addr2line 工具进行精确定位),还原发生错误时的现场信息,定位问题代码位置、逻辑更加快捷、精准。也可以在正常状态下使用该库,获取当前的函数调用栈;
    支持 裸机 及以下操作系统平台:
        RT-Thread
        UCOS
        FreeRTOS(需修改源码)
    根据错误现场状态,输出对应的 线程栈 或 C 主栈;
    故障诊断信息支持多国语言(目前:简体中文、英文);
    适配 Cortex-M0/M3/M4/M7 MCU;
    支持 IAR、KEIL、GCC 编译器;
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-8-1 10:28:30 | 显示全部楼层
ilcvm 发表于 2023-8-1 10:21
https://github.com/armink/CmBacktrace/blob/master/README_ZH.md
CmBacktrace (Cortex Microcontroller ...

不一样的,TOOL工具的实现是不需要目标板嵌入任何代码的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 04:28 , Processed in 0.204597 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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