面对EC7XX系列芯片那“寸土寸金”的Flash空间,我们在处理异常或死机情况时,无法直接将整个RAM内容无差别地转储(dump)到Flash中以供后续详尽分析。
咱们不能像玩618系列那样,随便把RAM里的内容一股脑儿往Flash里倒,毕竟空间有限嘛。
遇到系统异常或“罢工”的时候,咱们得玩点高级的,得学会“抓重点”。
本文适用于合宙7xx芯片系列模块,例如718p/716s
我采取了一种更为精炼而高效的方法:专注于捕获并保存关键性系统信息至Flash中。
用户随后可以将这些从Flash中提取的关键数据发送至计算机进行进一步分析,从而在不牺牲系统
正常运行所需Flash空间的前提下,实现对潜在死机问题的有效追踪与解决。
一、准备
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‘的子选项,
选中此选项后会弹出 dump 文件处理窗,选择对应的 dump 文件后,会在 Excep Info 窗里显示解析后的 dump 数据,如图所示。
详细资料获取请点击: www.openluat.com