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

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

3天内不再提示

嵌入式系统的自我测试过程

星星科技指导员 来源:嵌入式计算设计 作者:Colin Walls 2022-06-20 09:34 次阅读

嵌入式系统中,有很多失败的机会。在简单的系统中,故障通常会导致它们无法正常工作。在复杂系统中,故障可能以更微妙的方式表现出来。

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

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

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

中央处理器

外围设备

记忆

软件

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

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

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

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

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

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

陷入循环(无响应)

数据/代码损坏

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

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

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

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

审核编辑:郭婷

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

    关注

    68

    文章

    18250

    浏览量

    222049
  • 嵌入式
    +关注

    关注

    4981

    文章

    18271

    浏览量

    288271
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10434

    浏览量

    206521
收藏 人收藏

    评论

    相关推荐

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

    。它们被用于控制和监控各种设备,如机器人、传感器、仪器仪表、控制器等。嵌入式系统在工业自动化中的作用包括:精度:嵌入式系统能够控制设备的动作和测量值,实现精准的操作。效率:
    发表于 04-11 14:17

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

    系统中,如何调试和优化程序,如何处理实时性要求等。同时,还可以学习如何使用调试工具和硬件仿真器来辅助调试和测试。 四、积极参与开源项目和技术社区加入一些嵌入式开源项目的社区,与其他开发者交流经验
    发表于 04-07 16:03

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

    系统中,如何调试和优化程序,如何处理实时性要求等。同时,还可以学习如何使用调试工具和硬件仿真器来辅助调试和测试。 四、积极参与开源项目和技术社区加入一些嵌入式开源项目的社区,与其他开发者交流经验
    发表于 03-25 14:12

    嵌入式系统发展前景?

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

    嵌入式学习步骤

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

    嵌入式开发学习的十三法则分享

    嵌入式开发学习是一个不断积累和总结的过程,来自一个嵌入式开发高级工程师为我们总结的关于嵌入式开发学习的十三法则,大家不妨参考一下: 一、冗余度法则 在
    发表于 12-21 06:32

    如何解决车载部品测试过程中峰值电流不足的问题?

    如何解决车载部品测试过程中峰值电流不足的问题? 随着汽车电子系统的不断发展和普及,车载部品的测试过程变得更加复杂和严峻。其中一个常见的问题是峰值电流不足。峰值电流不足可能导致测试结果不
    的头像 发表于 11-23 10:33 226次阅读

    什么是嵌入式Linux?

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

    从事嵌入式工作有哪些优势?

    。 那么从事嵌入式工作有哪些优势? 一是工作强度相对较低。开发企业应用软件的IT企业,这个用户的系统搞完了,又得去搞下一个用户的,而且每个用户的需求和完成时间都不同,开发人员往往疲于奔命,重复劳动
    发表于 10-08 15:05

    STM32嵌入式操作系统介绍

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

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

    嵌入式Linux在嵌入式领域发展迅速、需求旺盛,但是嵌入式Linux 的入门很难。初学者多是自己琢磨,效率不高。学习过程中碰到的问题千奇百怪,解决后却往往发现是极其低级的错误,以作者为
    发表于 09-25 07:12

    STM32嵌入式操作系统介绍

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

    嵌入式新手应该怎么学?

    嵌入式新手应该怎么学? 对于嵌入式新手来说,知道一点嵌入式,知道嵌入式大概是做什么的,不是很懂,所以要熟悉掌握嵌入式的概念。我们可以看到网上
    发表于 09-08 10:22

    如何提高嵌入式软件单元测试效率

    有用。 在为嵌入式系统开发软件时,准确和高效的测试是必不可少的,特别是对于持续集成和功能安全流。 来自全面回归测试套件的快速通过或失败结果使团队能够开发高质量的软件,而无需浪费工程资源
    发表于 08-28 06:31

    嵌入式学习路线你知道吗?

    文件系统的定制、BootLoader、内核和根文件系统的烧写。这一阶段的主要目的是掌握带有操作系统嵌入式系统的构建和烧写
    发表于 06-14 16:00