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

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

3天内不再提示

嵌入式系统检测问题并减轻故障影响

星星科技指导员 来源:嵌入式计算设计 作者:Colin Walls 2022-07-05 10:11 次阅读

东西断了。事情出错了。不太礼貌的绰号是:****发生。不管你用什么词,我们生活在一个不完美的世界里,这是一个事实。在嵌入式系统中,有很多失败的机会。在简单的系统中,故障通常会导致它们无法正常工作。在复杂系统中,故障可能以更微妙的方式表现出来。

嵌入式系统是“智能的”,因此很明显可以利用这种智能来检测即将发生的问题和已经发生的问题,并可能减轻故障的影响。

这种内置故障控制的常用术语是“自我测试”。这是一个很大的主题,很可能已被许多会议论文所涵盖,细节可能会写满一本书。但在这里,我只想考虑关键问题。

本质上,嵌入式系统有四个可能的故障区域:

中央处理器

外围设备

记忆

软件

CPU 的故障非常罕见,但当然也不是未知数。部分故障不太可能发生,因此预期的情况是无法运行代码,因此没有机会解决故障。由于电子元件的故障最常发生在上电时,CPU 故障很可能表现为完全死机的设备。在多 CPU 设计中这是另一回事,当一个 CPU 可以监视另一个 CPU 的活动并更优雅地报告故障时。

当然,内存是一个关键的系统组件,现代设备有很多。失败远非未知。可能由杂散的亚原子粒子引起的瞬态故障可能导致设备无法解释且无法重现的崩溃。真的没有什么可以解决这种可能性的。更可能检测到硬/永久性故障。

内存可以通过两种方式进行测试:上电时(这是最有可能发生故障的时候),在任何有用的数据存储在其中之前,或者在运行中,如果有空闲的 CPU 时间可用。如果可以容忍短暂的启动延迟,那么在它包含任何数据之前进行全面的内存测试是否值得。通常的测试称为“移动位”,其中内存被清除,每个位依次写入一个,并且每隔一个位检查以确保它是零。“移动零点”测试应用了相同的想法。

动态测试自然不那么全面,因为实时数据不会被破坏。唯一真正的选择是通过写入和读取一系列模式来测试每个字节/字,同时禁用中断。

外围设备种类繁多,并且可能会失败是许多有趣的方式。但是,我可以提供的一般性建议很少。自测试代码可以检查设备是否对其地址做出响应,如果不这样做则表明发生了不好的事情。否则,某些设备可能具有“环回”模式,可以检查基本的发送/接收功能。除此之外,需要由设备功能知识驱动的创造力来实施任何自我测试。

如果软件失败,那是因为它的设计或实现出现了错误。与硬件不同,无错误的软件(如果它甚至存在的话)不会随着时间的推移而变坏。软件故障大致分为两类:

陷入循环(无响应)

数据/代码损坏

(1) 最常见的原因实际上是某种硬件问题,软件正在等待永远不会出现的响应。这仍然是一个软件错误,因为超时总是谨慎的。解决此类故障的最佳方法是使用某种看门狗设施。如果未收到软件的定期响应,这通常是重置系统的硬件。专用任务可能在多线程应用程序中执行相同类型的工作。

指针错误是 (2) 的可能原因,完全随机的内存损坏很难检测和诊断。幸运的是,一个常见的错误是使用空指针或完全无效的指针。由于这会导致陷阱(软件中断),因此预防措施是确保实施陷阱处理程序。另一个流行的错误是堆栈或数组等内存区域溢出。这可以通过在任一端使用“警戒词”并监控它们的访问来解决。

仍然存在一个重要的未解决问题。一旦检测到故障或即将发生的故障,您能做些什么呢?这完全取决于系统的性质。在某些情况下,尤其是深度嵌入式系统,系统重置是唯一明智的做法。记录故障以供以后分析可能是可能的。对于其他系统,可以建议用户并可能确定要采取的行动。另一种可能性是设备“打电话回家”或使用网络连接向用户/供应商/开发人员发送有关故障的信息

最重要的是,每个嵌入式系统都是不同的,这就是让这个行业的工作变得有趣的原因。结果是每个设备的自检都不同,对发现故障的响应也同样可变。唯一不变的因素是失败的可能性以及许多开发人员对这种可能性的否认。

审核编辑:郭婷

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

    关注

    68

    文章

    18202

    浏览量

    221922
  • 嵌入式
    +关注

    关注

    4975

    文章

    18235

    浏览量

    287822
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10409

    浏览量

    206457
收藏 人收藏

    评论

    相关推荐

    嵌入式热门发展方向有哪些?

    ,从而提高生产效率和质量。可靠性:嵌入式系统可以实现24小时无间断工作,减少设备故障的发生。可编程性:嵌入式系统可以进行灵活的编程,以满足各
    发表于 04-11 14:17

    如何成为一名嵌入式C语言高手?

    相关教材、参加在线课程或者参考编程书籍来系统地学习C语言的基础知识,通过编写简单的程序进行实践。 二、深入了解嵌入式系统的硬件架构和工作原理嵌入式
    发表于 04-07 16:03

    如何成为一名嵌入式C语言高手?

    相关教材、参加在线课程或者参考编程书籍来系统地学习C语言的基础知识,通过编写简单的程序进行实践。 二、深入了解嵌入式系统的硬件架构和工作原理嵌入式
    发表于 03-25 14:12

    嵌入式工程师需要掌握哪些技术?

    Bluetooth、Wi-Fi和LoRa等的了解也是有益的。 5. 调试和故障排除能力:嵌入式系统开发中经常会遇到各种问题和错误。因此,具备良好的调试和故障排除能力是非常重要的。你需
    发表于 03-04 16:38

    嵌入式系统发展前景?

    嵌入式系统发展前景? 嵌入式系统,从定义上来说,是一种专用的计算机系统,它被设计用来控制、监视或者帮助操作一些设备、装置或机器。在过去的几年
    发表于 02-22 14:09

    嵌入式学习步骤

    硬件组件。 (4).开发固件:编写嵌入式系统的固件,这是嵌入式系统的软件部分。固件负责控制硬件执行特定任务。 (5).调试和测试:在将
    发表于 02-02 15:24

    嵌入式自学好书推荐

    嵌入式自学好书推荐 在数字时代的浪潮中,嵌入式系统一直是数字电子产品中的重要组成部分。无论是家用电器、工业控制、汽车电子、医疗保健、军事应用还是物联网,嵌入式
    发表于 01-11 15:13

    嵌入式硬件和软件哪个好?

    嵌入式硬件和软件哪个好? 嵌入式软硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软硬件工程师的,首先我们先来看看嵌入式硬件工程师吧! 嵌入式
    发表于 12-05 15:17

    嵌入式雷达发射机故障监测系统的研制

    电子发烧友网站提供《嵌入式雷达发射机故障监测系统的研制.pdf》资料免费下载
    发表于 10-24 10:36 0次下载
    <b class='flag-5'>嵌入式</b>雷达发射机<b class='flag-5'>故障</b>监测<b class='flag-5'>系统</b>的研制

    基于ARM9内核的嵌入式检测系统设计

    电子发烧友网站提供《基于ARM9内核的嵌入式检测系统设计.pdf》资料免费下载
    发表于 10-12 09:48 0次下载
    基于ARM9内核的<b class='flag-5'>嵌入式</b><b class='flag-5'>检测</b><b class='flag-5'>系统</b>设计

    什么是嵌入式Linux?

    发展需要不断进化。随着芯片性能的增强和社会变革的需要,嵌入式系统越来越承接更多、更复杂的功能,所以嵌入式开发也以高薪稳定的状态稳坐在就业的顶端。(相较于其他行业,嵌入式工程师的工资在同
    发表于 10-11 13:47

    STM32嵌入式操作系统介绍

    嵌入式操作系统的特点• 嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统
    发表于 09-28 06:59

    嵌入式Linux应用开发的完全手册

    是怎样和硬件发生作用的。 同样,对于想从硬件岗位转到软件岗位的人,对于想从传统单片机(比如51单片机)编程进一·步学习“有操作系统的”嵌入式编程的人,需要找到一个学习的切入点:先掌握各个硬件部件的简单编程
    发表于 09-25 07:12

    STM32嵌入式操作系统介绍

    嵌入式操作系统的特点• 嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统
    发表于 09-11 07:24

    ARMv8-M处理器故障处理和检测

    的体系结构。但是,软件开发人员仍然可以在 使用调试功能的软件开发,如微跟踪缓冲区(MTB)或嵌入式跟踪 宏细胞(ETM)。这些功能提供了最近的执行历史记录,因此使问题能够 易于识别。 硅片设计者也可以创建自己的故障状态寄存器和故障
    发表于 08-02 06:28