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

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

3天内不再提示

令人头疼的异常重启,竟然是KV的锅…

合宙LuatOS 来源:合宙LuatOS 作者:合宙LuatOS 2024-09-26 18:14 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

​在技术支持群,看到有用户报了一个不明原因的重启问题。 重启现象是 ——有极个别设备在工作中不定时反复异常重启,大部分设备正常;反复重启设备,有时候又能持续正常工作。

隔着屏幕都感觉到了客户的着急和无奈,我决定和这位用户一起揪出这个“捣蛋鬼”。

图片

一、查找线索

按常规流程先询问用户开发模块、开发方式,并要求提供对应日志。经确认如下:

开发模块:Air780E

最新资料:www.air780e.cn

开发方式:LuatOS

开发教程:

https://doc.openluat.com/wiki/26?wiki_page_id=3020

客户提供日志反馈:

脚本日志没报错误,就是不定时卡住一会,然后就重启了。

图片

第一反应:不会是死循环导致的重启吧?

用户反馈:“没有死循环,任务里面都有延时的,而且大部分设备是正常的。且重启的时间也不定,最短4秒,最长是三分多钟,看起来不符合20秒的看门狗重启呀,而且设备昨天有正常工作一天,然后异常的时候就持续一直异常。但是这个固件的绝大部分设备是正常工作,不会异常重启的。”

看来不是死循环导致的看门狗重启问题。

为了进行一步排查重启原因,我让用户用pm.lastReson()这个接口打印开机原因值。

客户反馈:“我们有平台上传数据, pm.lastReson()是006异常重启 ”。

根据接口文档相关说明来看,确实不是内部看门狗导致的重启,是异常重启导致的。

接口文档详见:

https://wiki.luatos.com/api/pm.html#pm-lastreson

图片

二、了解背景

心想看不出啥具体原因,先了解一下客户使用背景吧,说不定会有啥线索。

我问:“之前正常,现在是用不了,一直在重启吗?”

客户反馈:“也不是吧,一开始是好的,然后挂了几个月一直重启,最近发现,昨天我拿过来挂了一天又正常,然后今天又重启,老化区就这个设备会重启,其他同固件是正常的。”

我又问:“换DEMO会重启吗? 确认一下是硬件问题,还是软件问题。

客户反馈:“ 今天测试过,只下载脚本是一定会出问题。 然后我刚刚重新下载底层和脚本,目前五分钟没有重启。”

看上去应该不是硬件问题,可能是软件引起的。心想让客户用最新版本试一下吧,确认一下还会不会出现问题。

客户反馈:“我们是因为有一个设备到客户手上有这个问题是V1108的,然后老化区只有这个设备也是异常重启,是V1106的,然后就看的这个,后面重新烧录1106的底层也是正常的,这设备挺难出现这个问题的,只能我们这边挂着测一下。”

看来又是一个令人头大的重启问题,要等客户提供底层日志来进一步排除问题了。

三、重要线索


客户把挂测的底层日志提供过来了,打开后确实看到了RamDumpData开头的死机信息。

图片

打开上面的RamDumpData出现如下信息:

图片

我赶紧和研发大佬确认,可能是啥情况。大佬问答大概率是FLASH坏掉了,让和客户确认不是有KV相关的操作。

客户回答,确实有KV的操作。

本文提到的KV:

KV数据库 ——指的是LuatOS中的FSKV库,提供键值对数据库功能,数据持久化在Flash上,使用独立的KV分区,使用LuaTools刷机时可选择清空,默认是不清空。由Flash的特性决定了,写入次数是有限的,频繁写入导致超限后,将无法设置/更新数据,导致系统异常。

为了进一步验证猜测,让客户做了如下测试:

问:“死机重启后,烧录不清除KV试试看还会不会重启,或者去除KV相关操作看还会不会重启。”

答:“KV操作挺多的,不好清除,我试下烧录不清除KV,有时候断电过一会就好了,不是很好复现,我先试试烧录不清除KV。”

客户反馈:“不清除KV也会有重启。”

问:“重新烧录底层的时候,有没有清理KV。”

答:“有”…

根据此前客户反馈和当前测试来看,应该是FALSH模块有些区域坏掉了。

四、确认猜测


至此,可以说这个重启的原因基本是确认了,导致模块令人琢磨不透的重启问题的“捣蛋鬼”也基础上算是给揪出来了。但是,还是需做进一步的测试来确定猜测。

研发大佬给了一下测试固件,来确认猜测是否正确。

图片

经过测试验证后,确定是FALSH部分区域坏掉引起的重启。

至此这个“重启案件”算是侦破了。

给客户的建议:

要改脚本,需要大幅度减少写KV的次数,防止破坏模块重启的“捣蛋鬼”再次出来捣乱。

温馨提示:

KV的写寿命是10万次,过于频繁操作可能会导致FLASH坏掉,引起设备反复重启。

因此,在写代码的时候要尽量减少写KV的次数。

审核编辑 黄宇

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

    关注

    33

    文章

    9634

    浏览量

    157801
  • 烧录
    +关注

    关注

    8

    文章

    331

    浏览量

    37243
  • LuatOS
    +关注

    关注

    0

    文章

    179

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MySQL死锁问题的排查方法与解决思路

    MySQL 死锁是生产环境中让人头疼的问题之一。很多运维工程师看到死锁报错,第一反应是重启数据库——重启确实能解决当下的阻塞,但根因还在,下次还会发生,而且可能在更糟糕的时间点爆发。
    的头像 发表于 05-12 09:41 334次阅读

    启明智显5G CPE | OpenWrt24.10.6 固件,一键异地组网,彻底告别地域限制!

    在工业物联网、远程办公、智慧农业等场景中,跨地域设备互联一直是令人头疼的难题——公网IP难申请、端口映射复杂、专线成本高昂。如今,启明智显全系列5GCPE设备迎来重大升级:全面搭载
    的头像 发表于 04-08 18:12 409次阅读
    启明智显5G  CPE | OpenWrt24.10.6 固件,一键异地组网,彻底告别地域限制!

    电磁炉方案浅析

    加热原理来工作的烹饪厨具(下图1),因此具备高效节能的优势。一般的电磁炉专用都是铁锅、不锈钢(部分不锈钢具有导磁性)、珐琅。砂锅、陶瓷
    的头像 发表于 03-24 15:15 1160次阅读
    电磁炉方案浅析

    实战排障|RK平台启动卡死、SPL崩溃,两行日志直接定位DDR硬件死穴!

    在嵌入式Linux产品开发中,U-Boot SPL启动崩溃、主板不上电、启动卡死在初始化阶段是最让人头疼的硬故障之一。日志乱码、CPU异常复位、看不到完整启动流程,往往让软件工程师误以为是代码BUG,硬件工程师无从下手。
    的头像 发表于 02-24 15:22 1248次阅读
    实战排障|RK平台启动卡死、SPL崩溃,两行日志直接定位DDR硬件死穴!

    告别盲目耗电!ADW300 智能WiFi无线电表为企业能效升级赋能

    。更令人头疼的是,设备过载跳闸常常毫无预警,每次突发停机都可能带来数万元的经济损失——这是许多生产管理者共同面临的难题。如今,WiFi智能电表的出现,正以“准确计量+快速传输”的组合,为工业用能管理提供可靠的解决方案。 二、案例 苏
    的头像 发表于 12-15 14:28 452次阅读
    告别盲目耗电!ADW300 智能WiFi无线电表为企业能效升级赋能

    游戏卡顿元凶竟然是 Draw Call!

    本文转自:字符无限科技玩游戏时遇到画面掉帧、操作延迟,大概率和一个叫DrawCall的指标有关。它是游戏渲染的核心环节,也是性能优化绕不开的坎,哪怕是Unity、UE引擎的资深开发者,也得在它身上下功夫。什么是DrawCall?DrawCall仅仅是一条指令!DrawCall指令从CPU传到GPU,渲染一个网格。指令只指向一个被渲染的网格并且不包含任何材质信
    的头像 发表于 11-04 10:51 989次阅读
    游戏卡顿元凶<b class='flag-5'>竟然是</b> Draw Call!

    睿擎平台CoreDump实战指南:系统崩溃现场的完美捕获 | 技术解析

    在嵌入式系统开发中,系统崩溃往往是最令人头疼的问题之一。当程序突然宕机、出现硬故障或断言失败时,如何快速定位根本原因?CoreDump技术为开发者提供了一种「时间冻结」的能力,能在系统崩溃瞬间捕获
    的头像 发表于 10-29 16:58 4404次阅读
    睿擎平台CoreDump实战指南:系统崩溃现场的完美捕获 | 技术解析

    翼辉信息PLC冗余技术在智慧水务行业的应用

    而这一切令人头疼的停水危机,正被翼辉信息的 PLC 冗余系统悄然化解。它带来的“双保险”,如何让涓涓清流稳如磐石?答案就在我们守护供水安全的“大心脏”里。
    的头像 发表于 10-22 14:59 1144次阅读
    翼辉信息PLC冗余技术在智慧水务行业的应用

    利用麦科信示波器的分段存储功能捕捉单次异常信号

    在电子调试中,最令人头疼的莫过于转瞬即逝的偶发异常。它难以捕捉,却足以让系统瘫痪。如何精准“逮”住这幽灵般的故障?示波器的分段存储功能正是破解此道的利器。本文将揭示如何利用这一强大功能,让每一次异常都无所遁形,告别盲目排查!
    的头像 发表于 10-10 16:41 3251次阅读
    利用麦科信示波器的分段存储功能捕捉单次<b class='flag-5'>异常</b>信号

    揭秘双活网关的工作原理

    想象一下,你正在享受一场在线游戏的激烈对决,网络突然断了,是不是很让人抓狂?在数据中心的世界里,这样的情况同样令人头疼。为了防止这种情况发生,我们引入了一位“超级英雄”——双活网关。它就像一个可靠的哨兵,时刻守护着网络连接。今天,我们将一起揭秘双活网关是如何守护网络连接、避免业务中断的。
    的头像 发表于 09-24 10:24 1039次阅读
    揭秘双活网关的工作原理

    电能质量在线监测装置重启前,安全防护方面的检查和日常运行时的检查有何不同?

    损坏、数据丢失)”,需覆盖 “硬件连接、操作流程、数据风险” 等与重启强相关的安全点; 日常运行检查是 “ 事中持续性监控 ”,聚焦 “及时发现运行中潜在的安全隐患(如过热、异常放电、通信中断)”,需实时跟踪 “装置状态、环
    的头像 发表于 09-23 14:38 801次阅读
    电能质量在线监测装置<b class='flag-5'>重启</b>前,安全防护方面的检查和日常运行时的检查有何不同?

    FLIR TG298红外热像仪在建筑维护领域的应用

    在建筑维护领域,屋顶漏水一直是个令人头疼的难题,不仅可能损坏建筑结构,还会影响内部环境和设备运行。某工厂此前就深受屋顶漏水问题困扰,去年经热像仪排查出诸多问题后,于今年对房顶进行了全面翻新。而此次,他们借助FLIR TG298红外热像仪,开启了一场高效且精准的屋顶防水“体检”,一起来瞧瞧吧。
    的头像 发表于 09-03 15:56 1259次阅读

    Nginx负载均衡策略选择指南

    上个月,我们的电商系统在大促期间突然出现用户购物车数据丢失的问题。经过排查发现,罪魁祸首竟然是负载均衡策略配置不当!
    的头像 发表于 08-20 16:23 1264次阅读

    CAN总线通信异常频发?CANBridge+帮您快速搞定!

    在CAN总线通信现场,工程师们常常遇到这样的难题:实验室测试一切正常,但一到现场就频繁出现错误帧,通信异常不断,排查起来既耗时又费力,令人头疼不已。别担心,ZLG致远电子的CANBridge+
    的头像 发表于 07-14 11:38 851次阅读
    CAN总线通信<b class='flag-5'>异常</b>频发?CANBridge+帮您快速搞定!

    电机重启动的控制策略

    为了解决高压大容量变频器调速异步电机失电后的重启动问题,本文作者曾经采用过直流侧最小电流法、交流侧最小电流法等多种控制方法检测转子转速。在现场应用中,发现这些方法存在提取信号困难、数据量大以及稳定性
    发表于 05-27 16:23