当前位置: 首页 > news >正文

Air780E/Air780EP/Air780EQ/Air201模块遇到死机问题如何分析

Air780E/Air780EP/Air780EQ/Air201模块遇到死机问题如何分析

简介

  • 本文档适用于合宙Air780E、Air780EP、Air780EQ、Air201

  • 关联文档和使用工具:

    • 从Ramdump里分析内存泄漏问题

    • 无法抓底层log的情况下如何导出死机dump

    • Luatools下载调试工具

    • EPAT抓取底层日志

    • Flashtools_v4.1.9下载

luatools和EPAT这2个工具,具体使用方法要了解,本文不做深入讲解,EPAT抓取底层日志文档内有详细使用说明

luatools用于捕获从USB口的用户log,即luat_debug_print输出的log,仅用于csdk和luatos。AT版本没有用户log和用户串口通道,需要使用EPAT工具抓取。

EPAT用于捕获USB口,UART0(DBG_UART串口) 的底层log,在luatools没有开启的时候,EPAT同样捕获用户log的大部分内容,这个时候用户log会从底层log输出,标识为luatos,等级为error,所以不要把用户log当做error!

luatools捕获用户log时,自动识别GB2312还是UTF8编码,也能正确打印64bit数据和浮点数据

EPAT只能识别GB2312编码,不能正确打印64bit和浮点数据,在用UART0捕获数据时会丢失部分log,尤其是优先级低的,所以用户log的等级是error,优先级高

双方都是USB口对接的情况下,USB虚拟串口没有波特率限制,任意选择,实际传输速率都是一样的

为啥要区分用户log通道和底层log通道,因为移芯不开放底层log解析方法

csdk固件默认死机后存储死机信息到flash后重启,luatos固件死机后会存储死机信息到flash,然后等EPAT或者luatools抓取死机信息,等待大约40秒左右会重启

出现死机问题分析

A 怎么抓LOG

A1 认识USB虚拟串口

由于电脑识别出来串口名字都是一样的,因此需要从串口属性上来区分对应功能,具体看下面截图红框

A1.1 用户log通道

在这里插入图片描述

A1.2 底层log通道

在这里插入图片描述

A1.3 用户串口通道

在这里插入图片描述

A2 抓log

如果使用EPAT工具抓取日志,说明请看 EPAT抓取底层日志文档

A2.1 USB可用

建议方案1,只用luatools勾选USB打印模式即可,没有配置上的要求,luatools会自动识别log通道,需底层log的,工具配置–》log–》勾选ap log,luatools会自动识别log通道,底层log保存在log/4gdiag。luatools版本必须在2.2.1及以上

建议方案2,直接用EPAT,按照EPAT手册操作即可,如果luatools开着,工具配置–》log–》不要勾选ap log

A2.2 USB不可用

只能用EPAT通过DBG_UART抓LOG了,需要6M波特率抓取(USB转TTL工具也要支持6M波特率),如果是AT版本还需要通过发送以下指令配置

AT+ECPCFG=logCtrl,2             // 输出全部日志
AT+ECPCFG=logPortSel,1          // 只从DBG_UART串口输出日志
AT+ECPCFG=logBaudrate,6000000   // 设置波特率为6M

B 遇到死机怎么办

设置死机不重启方法

  • AT固件:发送 AT+ECPCFG=“faultAction”,0 或者 AT*EXASSERT=1 指令开启死机不重启。
  • LuatOS开发:调用 mcu.hardfault(0) 接口开启死机不重启。
  • CSDK开发:在task中执行 luat_debug_set_fault_mode(LUAT_DEBUG_FAULT_HANG); 开启死机不重启。

B1 EPAT抓底层log,固件设置成死机不重启

EPAT会自动抓,并且自动弹出ramdump处理界面,按照手册操作即可。

B2 luatools抓底层log,固件设置成死机不重启

luatools也会自动抓ramdump,但是只能保存成文件,仍然需要用EPAT来手动进入处理ramdump界面,后续处理见B1

B3 固件设置成死机重启,或者没有工具抓底层log

帮助文档:无法抓底层log的情况下如何导出死机dump


C 死机重启原因常见情况分析

死机需要底层log和ramdump处理结果综合判断,luatos固件还要看用户log,这里讨论如何定位出错代码位置或者出错原因

C1 luavm抛出的异常

这个看用户log就行,如果开启了errdump,还能在iot平台上看到

C2 断言死机

看底层log就可以,搜索EcAssert字样,可以看到断言的位置

如果没有底层log,ramdump里需要看list source的代码上下是不是调用了ec_assert_regs,然后在stackframe with local里看看调用顺序,大概率能看到断言的位置。

断言死机如果是malloc失败,那么就是ram不足了。

C3 内存不足

这是最常见的死机原因,而且9成9可以判断是内存泄露,剩下也有可能malloc时的参数不对,申请了不可能申请到的空间大小。内存不足直接表现,C2中已有部分描述,如果有底层log,还可以从死机时打印的信息来判断

在这里插入图片描述

这里表示动态分配ram时,最大的block只有712字节了,这是非常典型的内存不足引起的死机,正常来说,至少要有个70KB左右的空间来满足LTE协议栈的需求

如果ramdump信息完整,则可以从ramdump里找到查找方向从Ramdump里分析内存泄露问题

C4 看门狗死机

在底层log和ramdump里都能看到,

在这里插入图片描述

ramdump里能看到最后停在NMI Handler里。

看门狗死机,要么死循环,要么操作时间太长,消除死循环,或者主动喂一下狗。压力测试和RSA运算时特别注意一下。

C5 疑难杂症

真正遇到hardfault时,需要先从底层日志里看死机的直接原因,也就是arm内核遇到的致命错误,当然多种多样,常见的地址错误(常见data access)有数据存取时的总线错误(常见precise data access,imprecise data access等等),指令错误(常见switch to an invalid state (e.g., ARM))等等。

以下个人经验:

先要排除一下栈溢出的可能,一旦栈溢出,什么奇怪的现象都有可能发生,运气好的,触发断言,运气不好的,就什么错误都可能发生,任务链表都可能被破坏,导致ramdump里的信息都会缺失。

如果ramdump信息完整,则可以从ramdump大致分析出有没有栈溢出现象从Ramdump里看栈溢出

如果ramdump的信息看起来完整,stackframe with local里调用顺序也比较合理,那么就能定位发生问题的函数和语句,后续就看代码调试吧,这是比较理想的情况。

地址错误的,大概率是读写了一个不可读写的地址,但是注意,有时候非ram和flash地址,直接读取并不一定会出错。

总线错误,大概率是数据对齐的问题,比如uint32_t *指针,去读取一个uint8_t *指针指向的内容,一旦uint8_t *指针存放的地址不是32位对齐的,编译器又没有对应优化处理,死机是很正常的

指令错误,这种常见的函数指针用出问题,导致函数退出时,PC指针已经不能指向正确的代码指令,从而执行了非arm的指令

如果ramdump的信息都不完整,底层log也丢完,或者压根没法抓,建议通过删减代码,加打印语句等方法来定位出错的语句,多次尝试缩小范围,直到成功,有经验,对源码了解的,能加快这一进度。
误,这种常见的函数指针用出问题,导致函数退出时,PC指针已经不能指向正确的代码指令,从而执行了非arm的指令

如果ramdump的信息都不完整,底层log也丢完,或者压根没法抓,建议通过删减代码,加打印语句等方法来定位出错的语句,多次尝试缩小范围,直到成功,有经验,对源码了解的,能加快这一进度。

咨询电话合宙市场部葛理想13723245337

企业微信

在这里插入图片描述

相关文章:

Air780E/Air780EP/Air780EQ/Air201模块遇到死机问题如何分析

Air780E/Air780EP/Air780EQ/Air201模块遇到死机问题如何分析 简介 本文档适用于合宙Air780E、Air780EP、Air780EQ、Air201 关联文档和使用工具: 从Ramdump里分析内存泄漏问题 无法抓底层log的情况下如何导出死机dump Luatools下载调试工具 EPAT抓取底层日志 F…...

吴松洋院长 艺后整形集团专家组特约成员 全方位责任塑美

...

前端经验:使用sheetjs导出CSV文本为excel

应用场景 很多web表格组件没有提供直接的导出excel功能,但提供了导出CSV的功能。 如果能想办法拿到CSV的内容,就可以利用sheetjs生成excel并导出。 实施步骤 1.拿到CSV的内容字符 每种表格组件都有各自的CSV生成方法,不管用什么方法&…...

【nnUNetv2进阶】十五、nnUNetv2 魔改网络-小试牛刀-引入ECA

nnunet使用及改进教程。 【nnUNetv2实践】一、nnUNetv2安装 【nnUNetv2实践】二、nnUNetv2快速入门-训练验证推理集成一条龙教程 【nnUNetv2进阶】三、nnUNetv2 自定义网络-发paper必会-CSDN博客 其他网络改进参考: 【nnUNetv2进阶】四、nnUNetv2 魔改网络-小试牛刀-加入…...

centos(或openEuler系统)安装kafka集群

安装192.168.9.60、192.168.9.61、192.168.9.62这3台kafka集群(kraft模式,不用zookeeper) 不带密码的 1.每台机器安装kafka: cd /home/kafka wget https://downloads.apache.org/kafka/3.3.1/kafka_2.13-3.3.1.tgz 不通就换这…...

HarmonyOS根据官网写案列~ArkTs从简单地页面开始

Entry Component struct Index {State message: string 快速入门;build() {Column() {Text(this.message).fontSize(24).fontWeight(700).width(100%).textAlign(TextAlign.Start).padding({ left: 16 }).fontFamily(HarmonyHeiTi-Bold).lineHeight(33)Scroll() {Column() {Ba…...

GraphRAG+ollama+LM Studio+chainlit

这里我们进一步尝试将embedding模型也换为本地的,同时熟悉一下流程和学一些新的东西 1.环境还是用之前的,这里我们先下载LLM 然后你会在下载nomic模型的时候崩溃,因为无法搜索,无法下载 解决办法如下lm studio 0.2.24国内下载…...

【中项第三版】系统集成项目管理工程师 | 第 5 章 软件工程② | 5.4 - 5.8

前言 第 5 章对应的内容选择题和案例分析都会进行考查,这一章节属于技术的内容,学习要以教材为准。 目录 5.4 软件实现 5.4.1 软件配置管理 5.4.2 软件编码 5.4.3 软件测试 5.5 部署交付 5.5.1 软件部署 5.5.2 软件交付 5.5.3 持续交付 5.5.4…...

6. dolphinscheduler-3.0.0伪集群部署

环境说明: 主机名:cmc01为例 操作系统:centos7 安装部署软件版本部署方式centos7zookeeperzookeeper-3.4.10伪分布式hadoophadoop-3.1.3伪分布式hivehive-3.1.3-bin伪分布式clickhouse21.11.10.1-2单节点多实例dolphinscheduler3.0.0单节…...

防火墙内容安全综合实验

一、实验拓扑 二、实验要求 1,假设内网用户需要通过外网的web服务器和pop3邮件服务器下载文件和邮件,内网的FTP服务器也需要接受外网用户上传的文件。针对该场景进行防病毒的防护。 2,我们需要针对办公区用户进行上网行为管理,要…...

常见的数据分析用例 —— 信用卡交易欺诈检测

文章目录 引言数据集分析1. 读入数据并快速浏览2.计算欺诈交易占数据集中交易总数的百分比3. 类别不平衡对模型的影响3.1 总体思路(1)数据的划分(2)训练模型(3)测试模型(4)解决不平衡…...

IP地址:由电脑还是网线决定?

IP地址:由电脑还是网线决定? 在互联网时代,IP地址是我们进行网络通信的基础。然而,对于IP地址究竟是由电脑决定还是由网线决定的问题,不少人可能存在疑惑。本文将从IP地址的定义、分配方式以及影响因素等方面进行探讨…...

如何定位及优化SQL语句的性能

在数据库管理和优化中,定位并解决SQL语句的性能问题是至关重要的。MySQL通过EXPLAIN命令提供了强大的工具来查看SQL语句的执行计划,这是定位性能瓶颈和优化SQL语句的首要步骤。以下是如何利用执行计划来定位及优化SQL语句性能问题的详细指南。 一、使用…...

SentenceTransformers (SBERT)

文章目录 一、关于 SBERT特点预训练模型应用实例 二、安装开发设置 三、入门使用四、训练五、Cross Encoder 一、关于 SBERT 官方文档:https://www.sbert.net/github : https://github.com/UKPLab/sentence-transformerspaper : Sentence-BERT: Sentence Embedding…...

第三届智能机械与人机交互技术学术会议(IHCIT 2024)

【北航主办丨本届SPIE独立出版丨已确认ISSN号】 第三届智能机械与人机交互技术学术会议(IHCIT 2024) 2024 3rd International Conference on Intelligent Mechanical and Human-Computer Interaction Technology 2024年7月27日----中国杭州&#xff0…...

图的访问(C++)

题目描述 给出 N 个点,M 条边的有向图,对于每个点 v,求 A(v) 表示从点 v 出发,能到达的编号最大的点。 输入格式 第 1 行 2 个整数 N,M,表示点数和边数。 接下来 M 行,每行 2 个整数 Ui,Vi,表…...

LeetCode做题记录(第二天)169. 多数元素

题目:169. 多数元素 标签:数组 哈希表 分治 计数 排序 题目信息: 思路一: 在题目中出现了计数,那我们就可以直接考虑考虑使用哈希表 unordered_map 即遍历的时候记录每个数的出现次数,当出现次数大于n/…...

Adobe XD中文设置指南:专业设计师的现场解答

Adobe XD是世界领先的在线合作UI设计工具。它摆脱了Sketch、Figma等传统设计软件对设备的依赖,使设计师可以随时随地使用任何设备打开网页浏览器,轻松实现跨平台、跨时空的设计合作。然后,为了提高国内设计师的使用体验,Adobe XD如…...

CentOS 7 安装Jenkins2.346.1(war方式安装)

既然想要安装Jenkins,肯定是先要从官网解读所需环境配置信息,如需了解更多自行查阅 https://www.jenkins.io/doc/book/installing/linux/ JDK17,Maven3.9 安装 先从官网分别下载JDK17与Maven3.9 下载好之后上传至服务器、并解压&#xff1a…...

使用Java -jar运行就jar包时报异常:org.yaml.snakeyaml.error.YAMLException异常

Java运行就 .jar包时出现的 YAMLException 异常 我在本地环境测试时,使用 java -jar 命令运行 Java 可执行 .jar 包时,遇到了 org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length 1 异常;这…...

golang实现的ab测试http代理工具

压测工具ab不能统计http请求的错误情况,包括http状态码错误和响应正文的错误关键字。 所以加层代理用于统计http错误情况,重在统计错误情况,而不是代理的性能,主要用于功能接口的测试,比如测试一下请求多少次接口会返…...

Maven学习——Maven的下载、安装与配置(详细攻略!)

目录 前言 1.下载与安装 2.配置Maven的环境变量 3.配置Maven的本地仓库 4. 配置Maven的镜像远程仓库 前言 我在之前写了一篇博客,是介绍Maven的基本概念和下载安装,但是由于篇幅过长,Maven的下载与安装写的并不详细🐶&#x…...

C#知识|账号管理系统-修改账号按钮功能的实现

哈喽,你好啊,我是雷工! 前边学习了通过选择条件查询账号的功能: 《提交查询按钮事件的编写》 本节继续学习练习C#,今天练习修改账号的功能实现。 以下为学习笔记。 01 实现功能 ①:从查询到的账号中,选择某一账号,然后点击【修改账号】按钮,将选中的信息获取显示到…...

bug等级和优先级

一、bug的等级 1、致命 这类bug是最严重的,通常导致系统无法运行、主要功能失效或严重资源不足。举例包括软件在安装过程中崩溃,导致无法完成安装;登录功能失效,用户无法验证身份进入系统;主要功能模块(如…...

记录|C# winform布局学习

目录 前言一、自适应布局Step1. 添加AutoAdaptWindowsSize类Step2. Form中引用Step3. 创建SizeChanged事件函数Step4. 在Fram.Disiger中添加 更新时间 前言 参考视频: C#5分钟winform快速自适应布局 参考文章: 其他参考: 写这篇文章&#xff…...

C/C++ json库

文章目录 一、介绍1.1 json 介绍 二、C/C json 库选型2.1 选型范围2.2 jsoncpp2.2.2 jsoncpp 编译和交叉编译 2.3 rapidjson2.4 nlohmann/json2.5 sonic-cpp 五、常见问题5.1 jsoncpp 中关于浮点数的控制和中文显示问题5.2 jsoncpp序列化double类型时精度损失问题的解决办法 一…...

C++案例四:简易记事本程序

文章目录 程序介绍代码说明包含必要的头文件主函数定义变量定义主循环显示菜单和读取选择处理用户选择程序介绍 编写一个简单的记事本程序,可以帮助用户添加和查看笔记。这个案例可以练习C++中的输入输出、向量(std::vector)、字符串处理(std::string)、以及简单的控制结…...

【VUE学习】day03-过滤器filter

VUE学习第三天 过滤器filter全局过滤器私有过滤器 过滤器filter 作用:常见的文本格式化使用场景:插值表达式、v-bind用法:{{msg | filterName}} ; v-bind:属性‘msg | filterName’ msg:需要格式化的文本信息(管道符前面的数据&a…...

技术成神之路:设计模式(八)责任链模式

介绍 责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许多个对象依次处理请求,避免请求的发送者和接收者之间的显式耦合。该模式通过将多个可能处理请求的对象连接成一条链,并沿着这条链传递请求…...

【Zynq UltraScale+ RFSoC】~~~

Zynq UltraScale RFSoC 系列为 5G 无线和射频级模拟应用引入了颠覆性的集成和架构突破,可直接支持整个 5G sub-6GHz 频段。这个创新系列现已开始批量生产。此设计演示展示了多通道(8T8R 或 16T16R)Zynq UltraScale RFSoC 评估工具工具工具&am…...

国外网购网站十大排名/企业网站优化推广

原文链接:http://blog.csdn.net/u012849872/article/details/51035938 maven工程标准目录结构: src -main –bin 脚本库 –java java源代码文件 –resources 资源库,会自动复制到classes目录里 –filters 资源过滤…...

西宁做腋臭哪里北大DE网站/网络推广的主要内容

图像自动配准 图像配准(Image Registration):将不同时间、不同传感器(成像设备)或不同条件下(天候、照度、摄像位置和角度等)获取的两幅或多副图像进行匹配、叠加的过程 自动配准流 操作&…...

网站诊断方案/学校seo推广培训班

Redhat Linux网卡及IP设置单网卡多IP例:将eht0 添加新地址 eth0:1拷贝/etc/sysconfig/network-scripts/ifcfg-eth0文件为ifcfg-eth0:1修改其中DEVICEeth0:1根据需要修改IP地址(IPADD)和掩码(NETMASK),可以删除NETWORK、BROADCAST、HWADDR重启网络服务#service netwo…...

Fastcgi做网站/软文案例300字

今天上课老师用Java实现了打地鼠游戏的界面和具体逻辑,那么我也尝试使用Android语言实现其功能。首先是打地鼠游戏的玩法1.每隔1秒或者0.5秒地鼠会出现在九宫格中的任一位置2.点击界面,如果地鼠出现的位置与点击位置相同,则认为打中地鼠。否则…...

大连 网站建设/关键词搜索名词解释

注重版权,转载请注明原作者和原文链接作者:Bald programmer 文章目录功能展示前言爬虫的介绍正文首先了解百度图片搜索结构代码设计功能展示 前言 爬虫的介绍 本次代码案例的原理是通过爬虫来实现的,所以首先要了解什么是 爬虫? 爬虫是干嘛…...

安装wordpress时选择中文语言失败/交易链接大全

本篇主要讲述我们日常使用中和maven相关的基础概念。后面两篇主要讲述一、按照惯例,先普及一下概念,后面会用到你也可以直接跳过,后面用到的时候,再回来看。1. mavenMaven全名叫Apache Maven,是一个软件项目管理和项目…...