5.5 死机dump数据方法

作者:王毅

一、 背景 客户在使用8910系列模块开发调试中,有时候会遇到模块异常重启的问题,而客户无法根据现场日志信息解决异常时,可能需要dump异常现场数据给合宙技术人员分析。本文章以720UG为例,主要介绍一下如何dump现场数据。 二、代码准备工作 合宙官方对外正式发布的固件,无论是AT版本还是Lua版本, 默认配置为自动重启模式,意味着一旦出现异常,会自动重启。 在自动重启模式下,用户无法dump现场数据,所以首先要做的是:把固件配置为死机模式,配置为死机模式后,一旦再出现异常,不再自动重启,用户就有充足的时间来dump现场信息。 那么如何配置为死机模式呢,有如下两种方法: (1)、AT版本和Lua版本有稍许差别 AT版本:MCU通过4G模块的AT口发送AT*EXASSERT=1命令

Lua版本:在main.lua的sys.init(…)前增加一行代码ril.request(“AT*EXASSERT=1”)

(2)、PC上通过串口工具向4G模块USB口映射出的ASR Modem Device AT口发送AT*EXASSERT=1命令

注意: A、无论使用何种方法,每次开机(无论是正常开机还是异常开机)都要重新配置一次,鉴于此,推荐使用第(1)中方法,可以在程序中自动处理

B、为保证万无一失,配置后,PC上通过串口工具向4G模块USB口映射出的AT口发送ATEXASSERT?命令查询是否配置成功,如果返回EXASSERT: 1表示配置成功

C、问题解决之后,所用测试模块,一定要再次配置为自动重启模式,配置方法是发送ATEXASSERT=0命令,配置后重启,发送ATEXASSERT?命令查询是否配置成功,如果返回EXASSERT: 0表示配置成功;为了防止遗忘,用户在正式发布的程序中,可以在开机初始化时发送ATEXASSERT=0命令

代码配置成功后,我们就可以使用模块的host口(可以通过模块的硬件原理图查找具体位置飞线用串口线连接)dump现场数据 image1 注:连接host得串口线必须是FT232的串口线 三、 使用coolwatcher工具dump现场数据 1. 下载coolwatcher工具

链接:https://pan.baidu.com/s/17sGt992xQ161bLvESeCyPQ 提取码:40ws

下载直接解压使用即可(无需安装)

2.运行配置coolwatcher工具 (1) 解压下载下来的coolwatcher压缩包,并找到coolwatcher.exe文件 image2 (2) 双击运行后,按下图配置 image3 image4 (3) 点击ok,进入coolwatcher工作界面 image5 (4) 然后根据如下步骤配置 image6 (5) 这时会弹出配置窗口,配置如下: image7 注:elf文件在模块使用的固件版本对应的map文件中解压所得,比如此处模块固件是sw_file_20200622191350_Luat_V0016_RDA8910_TTS.pac,找到对应的map文件下载解压即可,如图所示: image8 (6) 配置好后,点击start,开始dump数据,传输数据过程如下图所示(这个过程可能会持续7、8分钟,请耐心等待) image9 (7) 当出现下图所示,说明数据dump完成 image10 (8) 此时,我们可以在上图中设置的Output Directory路径找到dump出来的数据,将全部文件打包压缩提供给技术人员分析就好,我这里存放的路径是:D::raw-latex:`dump `,dump出来的数据如下图所示: image11 注意:打包发出去之后,将此目录下的这些文件删除,避免下次dump时,文件重名导致不必要的麻烦 四、补充说明 1、当有的时候模块会因为内存不足出现死机问题时,我们不仅需要dump死机数据,还需要把内存数据也给同时导出来,如下图所示: image12 2、操作步骤: 依次点开Tools–>Heap Report(new)打开配置界面,并按照下图配置,elf文件获取方式在上文已经提到,不在赘述。 image13 image14 点击start,即可以开始导出数据,当出现下图所示,表示导出完毕。 image15 这时候,我们可以查看保存路径中的文件,如下图所示,已经导出成功。 image16