0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

合宙基于移芯平台的模块死机问题详解

青山老竹农 来源:jf_82863998 作者:jf_82863998 2024-08-20 11:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

我们在分析模块死机原因的时候主要会用到两个工具:luatools和EPAT

相关关联文档和下载地址如下:

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通道

wKgZomaaFwWASNeYAACrVioBmcQ761.png

A1.2 底层log通道

wKgZomaaFw2AFVo4AACqCeVAnSI621.png


A1.3 用户串口通道

wKgaomaaFxWAbyycAACpqmi_dsg684.png


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,还可以从死机时打印的信息来判断

wKgaomaaFyGAE7sjAAMkNBsNIV0748.png

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

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

C4 看门狗死机

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

wKgZomaaFymAQeTOAAC0ATfKQoM742.png

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

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

C5 疑难杂症

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

以下个人经验:

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

1.ramdump信息完整

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

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

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

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

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

2.ramdump的信息不完整

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

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块
    +关注

    关注

    7

    文章

    2849

    浏览量

    53468
  • 死机
    +关注

    关注

    0

    文章

    17

    浏览量

    8807
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    UCC28950EVM - 442:600W相全桥转换器评估模块详解

    UCC28950EVM - 442:600W相全桥转换器评估模块详解 在电子电源设计领域,高效、稳定的电源转换器一直是工程师们追求的目标。德州仪器(Texas Instruments
    的头像 发表于 04-26 12:45 306次阅读

    半导体精彩亮相SEMICON China 2026

    3月27日,全球半导体盛会SEMICON在上海新国际博览中心圆满落幕,半导体精彩亮相,集中展示核心产品与技术成果,与全球行业同仁交流洽谈,共探产业发展新机遇。
    的头像 发表于 04-09 14:35 442次阅读

    昇亮相“动未来”沙龙:深度解析XVA架构,共筑DSP算力新格局

    近日,在深圳市半导体与集成电路产业联盟主办的“动未来·智驱实体”主题沙龙上,昇科技有限公司(以下简称“中昇”)受邀出席,并由市场专家魏伟发表了题为《RISC+AI双擎驱动,共筑
    的头像 发表于 04-01 17:05 481次阅读
    中<b class='flag-5'>移</b><b class='flag-5'>芯</b>昇亮相“<b class='flag-5'>芯</b>动未来”沙龙:深度解析XVA架构,共筑DSP算力新格局

    亚太地区首家一次性通过!中昇eSIM平台获GSMA认证

    近日,中昇自主研发的eSIM连接管理平台成功通过全球移动通信协会(GSMA)SAS-SM权威审核并获得认证证书。本次审核全程零不符合项(零NC项),一次性顺利通过,使得中
    的头像 发表于 03-09 17:06 1092次阅读
    亚太地区首家一次性通过!中<b class='flag-5'>移</b><b class='flag-5'>芯</b>昇eSIM<b class='flag-5'>平台</b>获GSMA认证

    猛!MCU模组:Air1601/1602双星出击!

    在嵌入式开发中,你是否曾面临这样的困境:高清UI渲染依赖昂贵高端芯片、图像处理卡顿、多网通信协同复杂、工业级稳定设计繁琐……Air1601/Air1602系列MCU模组应运而生:——以“高清显示
    的头像 发表于 02-13 14:05 932次阅读
    猛!<b class='flag-5'>合</b><b class='flag-5'>宙</b>MCU模组:Air1601/1602双星出击!

    高效接入语音交互:模组音频方案如何选?

    本文特别分享4G模组选型与硬件设计要点,为开发者提供实用参考。 一、模组音频支持概况 从主芯片是否原生支持音频功能来看,4G模组大致可分为两类: 1.1 主芯片支持音频功能 比如:经典老
    的头像 发表于 02-08 14:59 974次阅读
    高效接入语音交互:<b class='flag-5'>合</b><b class='flag-5'>宙</b>模组音频方案如何选?

    昇完成中国移动低空智联网无人机专用SIM卡测试

    1月,装载中国移动昇科技、中物联网有限公司、中国移动研究院三方联合研发的专用SIM卡及搭载中昇通信芯片网联模块的无人机,在福建省顺利
    的头像 发表于 01-20 12:02 844次阅读
    中<b class='flag-5'>移</b><b class='flag-5'>芯</b>昇完成中国移动低空智联网无人机专用SIM卡测试

    2025中昇年度大事记

    自主可控,深化RISC-V架构创新,中昇以产品创新、生态共拓、改革赋能为方向取得系列突破。以下为本年度重要事件梳理。产品能力篇1月,安全MCU芯片通过开源鸿蒙
    的头像 发表于 12-31 16:38 3274次阅读
    2025中<b class='flag-5'>移</b><b class='flag-5'>芯</b>昇年度大事记

    昇加入中关村量子信息产业联盟

    12月14日,由中关村科学城管委会、中关村量子信息产业联盟主办的2025中关村量子大会-量子科技产业发展战略论坛在京举行。中昇受邀参会,正式加入中关村量子信息产业联盟。中关村量子信息产业联盟作为
    的头像 发表于 12-16 17:33 1285次阅读
    中<b class='flag-5'>移</b><b class='flag-5'>芯</b>昇加入中关村量子信息产业联盟

    昇案例入选中国企业改革与发展研究会“2025央企产业链创新发展优秀案例”

    近日,由中国企业改革与发展研究会主办的2025年(第三届)企地合作论坛在京举行。由中物联与中昇共同撰写的“企地协同,共建RISC-V产业生态”案例,成功入选“2025央企产业链创新发展优秀
    的头像 发表于 12-01 17:03 1503次阅读
    中<b class='flag-5'>移</b><b class='flag-5'>芯</b>昇案例入选中国企业改革与发展研究会“2025央企产业链创新发展优秀案例”

    昇第四款芯片入选国资委《中央企业科技创新成果推荐目录》

    近日,为加快中央企业科技创新成果应用推广,加速科技成果向现实生产力转化,国资委发布了《中央企业科技创新成果推荐目录(2024年版)》。中国移动旗下专业芯片公司中昇研发的“RISC-V内核SIM
    的头像 发表于 12-01 17:03 1596次阅读
    中<b class='flag-5'>移</b><b class='flag-5'>芯</b>昇第四款芯片入选国资委《中央企业科技创新成果推荐目录》

    在rt-thread4.0.2版本stm32f407硬件平台上,使用reboot命令无法重启,会让系统死机的原因?

    我在rt-thread4.0.2版本stm32f407硬件平台上,使用reboot命令无法重启,会让系统死机。 reboot命令默认是调用rt_hw_cpu_reset()
    发表于 09-12 06:08

    远通信飞鸢AIoT大模型应用算法成功通过备案

    近日,第十二批境内深度合成服务算法备案信息发布,远通信"飞鸢AIoT大模型应用算法"榜上有名。这标志着该算法在技术规性、安全可控性及社会价值上获得权威认可,彰显了远通信在
    的头像 发表于 08-06 08:48 1078次阅读
    <b class='flag-5'>移</b>远通信飞鸢AIoT大模型应用算法成功通过备案

    远通信加入 Avanci 5G 车联网专利平台,强化全球业务护航能力

    尊重和积极发展知识产权置于核心地位,积极拥抱行业发展,为客户创造价值。   加入Avanci 5G 车辆项目,将进一步增强远通信在专利平台流程与规要求方面的能力,强化自身对客户在标准必要专利许可谈判及专利
    的头像 发表于 07-22 13:59 2934次阅读

    远通信加入 Avanci 5G 车联网专利平台,强化全球业务护航能力

    和积极发展知识产权置于核心地位,积极拥抱行业发展,为客户创造价值。加入Avanci5G车辆项目,将进一步增强远通信在专利平台流程与规要求方面的能力,强化自身对客户
    的头像 发表于 07-22 12:11 870次阅读
    <b class='flag-5'>移</b>远通信加入 Avanci 5G 车联网专利<b class='flag-5'>平台</b>,强化全球业务护航能力