a2412462142 发表于 2023-10-18 09:09:10

嵌入式 Keil5 Ozone 硬件错误快速定位错误代码位置工具

基本功能:
1.在Keil里面,通过App.Map复制所有信息。然后解析剪辑版内容。
2.随意输入一个函数内存地址,即可遍历出该内存地址属于哪个.c或者函数名。或者能遍历出变量。

强化功能:
1.通过Keil5 命令 Save xxxxxxx\1.Hex 0x20017308,0x20017408   (0x20017308 MSP或者PSP地址,0x20017408结尾地址)
2.解析HEX内存,获取芯片运行堆栈内存,自动分割成4字节。(也可以通过Ozone 直接读内存块地址 复制过来就可以枚举)
3.枚举可疑地址。


通过微处理器运行堆栈,对比MAP信息,追踪当前芯片运行过的函数,以及使用的变量。
(该工具方便找芯片内存溢出,硬件错误等问题。)

eric2013 发表于 2023-10-18 09:35:23


{:8:}谢谢楼主分享。

输入地址获取对应的C文件和具体位置,也可以使用addr2line小软件,很方便。

fyyxxm 发表于 2023-10-18 16:28:39

该工具 大有可为。能直接触发就好了。。。。
有点像cm_backtrace

skyshine 发表于 2023-10-18 17:04:05

请问这个可疑地址是怎么判断的,解析堆栈内存,然后能找到对应的变量和函数,请问这里面有啥关联吗?比如判断堆栈溢出这个要怎么判断

wdliming 发表于 2023-10-18 22:16:50

eric2013 发表于 2023-10-18 09:35
谢谢楼主分享。

输入地址获取对应的C文件和具体位置,也可以使用addr2line小软件,很方便。

请问addr2line 这个有使用手册吗?

nikola 发表于 2023-10-19 11:25:51

学习一下,这个是取在报错时MSP对应的hex的附近的地址段,来查找地址段在map对应的函数名,然后枚举所在文件和函数名吗?如果做成命令行集成在keil更方便,因为我之前试过在keil的after bulid调用C语言写的命令行软件如果你使用printf仿照keil的那个报错的格式 [..\xxx\文件路径(所在行)]来打印一行错误对应行的信息,然后双击那个带报行keil能直接跳转到文件对应行的,之前想过用这个把keil的错误倒序输出在最下面,不用滚动bulid output,方便找到第一个错误。感觉可以用在这上面。

a2412462142 发表于 2023-10-20 09:59:53

nikola 发表于 2023-10-19 11:25
学习一下,这个是取在报错时MSP对应的hex的附近的地址段,来查找地址段在map对应的函数名,然后枚举所在文 ...

我这样主要是想可以用map文件内容解析,脱离Keil,然后可以使用Ozone 直接把内存块复制过来解析。不一定非要绑定某个IDE

a2412462142 发表于 2023-10-20 10:19:52

skyshine 发表于 2023-10-18 17:04
请问这个可疑地址是怎么判断的,解析堆栈内存,然后能找到对应的变量和函数,请问这里面有啥关联吗?比如判 ...

芯片自己会产生硬件错误。

18792693170 发表于 5 小时前

下载链接是不是失效了,用这个可以判断main函数之前的错误么,我的芯片上电后没进入main函数就卡住了,disassembly 里类型是B
页: [1]
查看完整版本: 嵌入式 Keil5 Ozone 硬件错误快速定位错误代码位置工具