• 欢迎大家分享资料!前往留言板评论即可!

Air720系列Lua版本异常分析说明(死机、重启、网络、socket)

合宙 模组资料网 4年前 (2021-05-15) 502次浏览 0个评论 扫描二维码
                        <div class="Section1">

第一章
死机以及重启异常

1.1如何从设备管理器中的端口判断死机或者重启

如果彻底死机,设备管理器中的端口如下图所示,模块的USB映射出的端口,有且仅有一个

Air720系列Lua版本异常分析说明(死机、重启、网络、socket)

如果设备管理器中的端口一直如下图所示,则表示正常工作



  Air720系列Lua版本异常分析说明(死机、重启、网络、socket)

如果端口在不断的闪烁,弹出来又消失,则表示模块在不断的重启

1.2如何从日志判断“是否彻底死机”

日志中如果出现类似于下面的死机信息,正常情况下,20多秒后,会自动重启,如果一直不会自动重启,则可以认定程序确实死机了

   EE LOG: LR:
0x6014bbd

   EE LOG: PC:
0x6767cc4

   EE LOG: SP:
0x72adb80

   EE LOG: MSA
Disable Sleep

   EE LOG: Wait
for DSP L1 Memory dump…

   EE LOG: first
entry!

   EE LOG:
Software version: NZ_NZ_CP_2.178.000X

   EE LOG: Compilation
time: Jun 13 2019 09:17:56

   Ep0: TX 0, RX 0

   AT: TX 0, RX 0,
CTRL 0

   DIAG: TX 0, RX
0, CTRL 0

   RNDIS: TX 0, RX
1, CTRL 0

   MassStorage: TX
0, RX 0

   EE LOG: Cancel
RNDIS transfer

   EE LOG: Prepare
for Sd dump

   EE LOG:
eeSDDumpPrepare Enter

   EE LOG:
eeSDDumpPrepare Exit

   EE LOG: Prepare
for diag transmit

   EE LOG:
finalAction:5, eeFatalActionExt:602453d, eeMode:3f

   EE LOG: IPCIIR
0x0, APBC_IPC_CLK 0x4, AIRQ_IPC_ENABLE 0x3d10

只要没有设置ASSERT模式,出现任何异常,理论上都会自动重启

如果遇到“异常后无法自动重启,一直处于死机状态”的问题,首先按照如下步骤确认一下是否设置了ASSERT模式:

1、脚本代码中是否执行了ril.request(“AT*EXASSERT=1”)语句

2、是否人为通过模块USB口枚举出的ASR MODEM DEVICE AT口发送过AT*EXASSERT=1命令

3、如果有条件重启模块,重启后,通过模块USB口枚举出的ASR MODEM DEVICE AT口发送AT*EXASSERT?命令,查询一下ASSERT状态

注意:模块一旦设置过ASSERT模式,是永远保存在flash中的,只能通过AT*EXASSERT=0关闭ASSERT模式,所以AT*EXASSERT只能在调试问题时使用,而且使用之后,要及时通过AT*EXASSERT=0关闭

如果没有设置ASSERT模式,出现了“异常后无法自动重启,一直处于死机状态”的问题,则肯定是不正常的,需要具体问题具体分析

PSLuat V0017以及之前的版本固件,存在一个bug,可能会导致异常死机而无法自动重启

1.3如何从日志中判断“是否重启,以及重启原因”

日志中搜索poweron reason,可以获取到开机原因值,例如:

            [poweron reason:] 3 SOCKET_LONG_CONNECTION
2.0.0 2.2.1 Luat_V0019_ASR1802_720D

中的3就表示开机原因值

 

开机原因值的意义如下:

0: 按键开机                  1: 充电开机                  2: 闹钟开机                  3:
软件重启开机           4:
其他原因导致的开机  

   6: 异常开机,        8: 看门狗开机,     10: 电池开机       11:
系统使能开机,                 12:
USB
开机

   13: JIG开机                 14: 开关由OFF拨到ON检测到exton1n,准许开机         15: 外部原因开机,

   255: 未知

 

遇到重启问题时,按照如下步骤分析具体原因:

1.      
是否存在脚本运行异常

找到重启前上一次运行的最后日志,确认一下是否有脚本运行异常信息输出,例如

lua /lua/socketTask.lua:75: attempt
to perform arithmetic on global ‘djkasjdlas’ (a nil value)

stack traceback:

/lua/socketTask.lua:75: in function
‘cb

/lua/sys.lua:363: in function ‘run’

/lua/

如果脚本中使用了errDump功能模块(一定要使用errDump功能模块,此功能模块对“量产投放市场的设备,远程调试初步定位问题”至关重要),直接在日志中搜索errDump,也可以定位出是否发生脚本异常,例如

[E]-[errDump.luaErr]
/lua/socketTask.lua:75: attempt to perform arithmetic on global ‘djkasjdlas’ (a
nil value)

stack traceback:

            /lua/socketTask.lua:75:
in function ‘cb’

            /lua/sys.lua:363:
in function ‘run’

            /lua/main.lua:59:
in main chunk

            [C]:
?

2.      
是否存在固件运行异常

如果在第1步存在了脚本运行异常,则可以不用关心这一步的固件运行异常,因为任何脚本运行异常都会触发固件运行异常。

找到重启前上一次运行的最后日志,确认一下是否有固件运行异常信息输出,例如

               EE LOG: LR: 0x6014bbd

               EE LOG: PC: 0x6767cc4

               EE LOG: SP: 0x72adb80

               EE LOG: MSA Disable Sleep

               EE LOG: Wait for DSP L1 Memory
dump…

               EE LOG: first entry!

               EE LOG: Software version:
NZ_NZ_CP_2.178.000X

               EE LOG: Compilation time: Jun 13
2019 09:17:56

               Ep0: TX 0, RX 0

               AT: TX 0, RX 0, CTRL 0

               DIAG: TX 0, RX 0, CTRL 0

               RNDIS: TX 0, RX 1, CTRL 0

               MassStorage: TX 0, RX 0

               EE LOG: Cancel RNDIS transfer

               EE LOG: Prepare for Sd dump

               EE LOG: eeSDDumpPrepare Enter

               EE LOG: eeSDDumpPrepare Exit

               EE LOG: Prepare for diag transmit

               EE LOG: finalAction:5,
eeFatalActionExt:602453d, eeMode:3f

EE LOG: IPCIIR 0x0, APBC_IPC_CLK
0x4, AIRQ_IPC_ENABLE 0x3d10

如果脚本中使用了errDump功能模块(core0019以及以后的版本,script2.2.0以及以后的版本)(一定要使用errDump功能模块,此功能模块对“量产投放市场的设备,远程调试初步定位问题”至关重要),直接在日志中搜索errDump,也可以定位出是否发生固件异常,例如

[E]-[errDump.firmwareAssertErr]
desc=FALSE,file=platform_main.cline=506,LR:0x6015025,PC:0x67688e4,SP:0x72adb80


3.       如果不存在前2种情况,确认一下是否为供电不稳引起的重启



第二章
网络异常

  此章节介绍如何搜索日志,一步步排查是否出现网络异常

1.      
搜索CGSN,确认一下日志中的IMEI是否与标签上的IMEI一致,如果不一致,则可能生产过程出错

2.      
搜索ATWMFT,如果返回ERR,表示模块没有校准,可能会导致各种网络问题,基本上可以确定是生产过程出错导致的,必须返厂维修;如果返回SUCCESS,表示正常

 

注意:如果通过AT+CFUN=0进入飞行模式,以下几步的查询结果都是异常状态

 

3.      
搜索CPIN,如果返回的不是READY,则SIM卡异常

4.      
搜索CSQ,查询信号强度,信号强度最大值为31,如果查询出来的信号值小于10,可以认为信号较弱,如果环境本身的信号不差,则需要分析硬件射频是否存在问题

5.      
搜索CREGCGREGCEREG,查询网络状态,如果状态不是1或者5,则表示网络未成功注册

6.      
搜索^MODE,查询当前使用的网络模式,2G3G还是4G,此模式仅作为分析问题时补充信息使用

7.      
搜索CGDCONT,查询PDP是否已经激活,如果返回的查询结果中有APN以及本地IP,则表示正常



第三章
socket应用异常

  此章节介绍如何搜索日志,一步步排查是否出现socket应用异常

  注意:如果通过AT+CFUN=0进入飞行模式,以下几步的查询结果都是异常状态

1.      
搜索socket,如果出现socket:connect:
core sock conn error
或者socket:connect: connect fail,则表示socket连接失败

2.      
搜索socket,如果出现send fail则表示发送失败

3.      
搜索socket,如果出现socket.rtos.MSG_SOCK_CLOSE_IND则表示socket’被动关闭



第四章
errDump
功能说明

errDump功能模块对“量产投放市场的设备,远程调试初步定位问题”至关重要 强烈建议客户一定要使用此功能,加载此功能模块后,具备如下功能:

1.      
可以上报死机以及重启异常到调试服务器

2.      
如果打开了errDump. setNetworkLog(true)开关,可以上报网络和socket应用异常到调试服务器

 

 

第五章 总结

如果无法输出日志,则根据设备管理器中的端口判断模块是否死机或者一直在反复重启

如果有日志输出,正则搜索如下信息,判断是否存在网络和socket应用异常

<

p class=”MsoNormal”>    EE
LOG|traceback|[E]|errDump|CGSN|ATWMFT|CFUN|CPIN|CREG|CGREG|CEREG|CSQ|\^MODE|CGDCONT|conn
error|send fail|MSG_SOCK_CLOSE_IND

    注意:以上字符串中的\notepad++中使用的转义字符,不同编辑器可能不同,根据使用的编辑器自行修改


喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址