简介:
在面对EC7XX系列芯片时,鉴于其Flash空间的局限性,与常见的618系列芯片不同,我们在处理异常或死机情况时,无法直接将整个RAM内容无差别地转储(dump)到Flash中以供后续详尽分析。
我们可以采取一种更为精炼而高效的方法:专注于捕获并保存关键性系统信息至Flash中。
在确保在难以捕捉日志的复杂环境下,用户依然能够获取到足以进行初步至深入问题分析的关键数据。通过精心筛选和记录这些关键信息,如寄存器状态、关键变量值、堆栈跟踪片段以及任何可能指示系统崩溃原因的异常标志等,我们能够极大地提升问题诊断的效率与准确性。
用户随后可以将这些从Flash中提取的关键数据发送至计算机进行进一步分析,从而在不牺牲系统正常运行所需Flash空间的前提下,实现对潜在死机问题的有效追踪与解决。
注:718S软件上不支持,无法使用
准备
- csdk需要更新到2024年7月9日之后的版本
- luatools更新到2.2.29,目前未发布,不影响使用,只是无法自动获取flashdump
- flashtools更新到专用版本 FlashTools_hardfault.7z
- EPAT工具更新到EPAT_V1.3.262.573 EPAT_V1.3.262.573.zip
如何开启
LuatOS开发
luatos脚本加入mcu.hardfault(3)
如何确认保存了死机信息
ecFlashDumpOccuredCheck(),此接口返回值为 ture,则说明芯片因异常而重启
在 dump 数据从 Flash 中读出来后,建议擦除一下 Flash dump 空间
死机后如何获取数据
方法一:
代码里从flash中读出16KB数据,然后通过串口/USB/网络等方式上传,串口/USB方式参考example_flash_dump
方法二:
luatools升级到2.2.29,可以自动读出并保存成文件,但是USB要能正常使用
方法三:
通过flashtools读取,USB或者UART1留出即可,以USB为例
选择好prj file和binpkg文件
在readback界面里选择hardfault dump
操作模块进入烧录模式,点击start即可,文件保存在binpkg所在目录
数据如何解析
项目编译生成目录里找到comdb.txt,如果对方提供了soc文件,解压出comdb.txt
EPAT里确保db文件是上述的comdb.txt,在主选项栏‘Log‘选项中可看到’
Exception Info‘的子选项,
03.PNG&pos_id=img-jVkSkbO2-1721272283124)
选中此选项后会弹出 dump 文件处理窗,选择对应的 dump 文件后,会在 Excep Info 窗里显示解析后的 dump 数据,如图所示。
资料介绍链接: www.openluat.com