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

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

3天内不再提示

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

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

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

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

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

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

中央处理器

外围设备

记忆

软件

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

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

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

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

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

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

陷入循环(无响应)

数据/代码损坏

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

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

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

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

审核编辑:郭婷

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

    关注

    68

    文章

    19349

    浏览量

    230291
  • 嵌入式
    +关注

    关注

    5087

    文章

    19148

    浏览量

    306178
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10882

    浏览量

    212224
收藏 人收藏

    评论

    相关推荐

    LDO在嵌入式系统中的应用 常见LDO故障及解决方法

    的应用及其常见故障和解决方法的概述。 应用场景 电源转换 :LDO可以将电池电压或其他电源电压转换为嵌入式系统所需的稳定电压。 噪声抑制 :LDO能有效降低电源线上的噪声,为敏感的模拟电路提供干净的电源。 功耗管理 :在低功耗应
    的头像 发表于 12-13 09:08 628次阅读

    嵌入式系统开发与硬件的关系 嵌入式系统开发常见问题解决

    嵌入式系统开发与硬件的关系 嵌入式系统是专为特定应用设计的计算机系统,它们通常嵌入在所控制的设备
    的头像 发表于 12-09 09:38 327次阅读

    嵌入式系统与物联网的结合

    随着科技的飞速发展,嵌入式系统和物联网(IoT)已经成为现代技术领域的重要组成部分。嵌入式系统是指嵌入到设备或
    的头像 发表于 11-06 10:23 349次阅读

    什么是嵌入式?一文读懂嵌入式主板

    在现代科技浪潮中,嵌入式技术已成为支撑各种智能设备和系统运行的核心力量。那么,究竟什么是嵌入式嵌入式系统,顾名思义,是将计算机的硬件和软件
    的头像 发表于 10-16 10:14 1199次阅读

    嵌入式系统的原理和应用

    嵌入式系统是一种专用的计算机系统,其设计初衷是执行特定任务,而非作为通用计算机使用。这类系统通常作为更大系统的一部分,起到控制、监控或辅助的
    的头像 发表于 10-05 17:03 1002次阅读

    七大嵌入式GUI盘点

    的桌面开发工具,该工具允许开发人员在桌面上设计其GUI生成GUIX代码,然后可以将其导出到目标。 嵌入式系统通常资源有限,包括内存、处理能力和存储空间。因此,要仔细评估 GUI 库的资源需求,并进
    发表于 09-02 10:58

    嵌入式系统怎么学?

    嵌入式系统怎么学? 随着物联网、智能制造等新技术的兴起,嵌入式系统的应用范围更加广泛。包括但不限于工业控制、汽车电子、医疗设备、智能家居、智慧城市、消费电子、通信设备等。学习
    发表于 07-02 10:10

    入门嵌入式系统这些知识你知道吗?

    嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的
    发表于 05-03 09:54 610次阅读

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

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

    再谈嵌入式实时操作系统

    程序的可移植性得到了增强,系统开发的工作量减轻的同时也提高了开发效率。对实时性和可靠性日益增长的要求正在塑造某些现代领域的嵌入式实时操作系统的发展方向,例如航空航天、工业控制、汽车电子
    的头像 发表于 04-09 17:27 814次阅读
    再谈<b class='flag-5'>嵌入式</b>实时操作<b class='flag-5'>系统</b>

    嵌入式fpga是什么意思

    嵌入式FPGA是指将FPGA技术集成到嵌入式系统中的一种解决方案。嵌入式系统是一种为特定应用而设计的计算机
    的头像 发表于 03-15 14:29 1293次阅读

    fpga是嵌入式

    FPGA(现场可编程门阵列)不是嵌入式系统,但FPGA在嵌入式系统中有着重要的应用。
    的头像 发表于 03-14 17:19 2378次阅读

    嵌入式系统发展前景?

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

    嵌入式学习步骤

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

    嵌入式系统的应用实例

    嵌入式系统的三个基本要素是嵌入性、专用性与计算机系统
    的头像 发表于 01-22 09:57 1095次阅读