IoT设备的自我测试

简介: 版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/82599371

东西坏了,事情也出了差错。 简单的说就是 XX发生了。 不管用什么词,事实上我们都生活在一个不完美的世界里。 在嵌入式系统中,有很多失败的可能。 在简单的系统中,失败通常导致它们不工作。 在复杂的系统中,失败可能以更微妙的方式表现出来。

嵌入式系统引入了"智能",所以显而易见的是,这种智能可以用来检测即将发生的问题和已经发生的问题,并可能减轻失败的影响。

这种内置故障控制的通常术语是"自我测试"。这是一个很有可能被许多会议所讨论的大问题,细节可能会写满一本书。 但在这里,只考虑一下关键问题。

从本质上讲,嵌入式系统中有四个可能出现的故障领域:

  • CPU 中央处理器

  • Peripherals 外围设备

  • Memory 内存

  • Software 软件

640?wx_fmt=jpeg

一个 CPU 的失败是相当罕见的,但是,当然,不是未知的。部分失败是不可能的,所以预期的情况是无法运行代码,所以没机会解决失败。由于电子元件的故障通常发生在电源上,CPU 故障很可能会以一个完全死机的形式出现。在多 CPU 设计中,这是一个不同的问题,当一个 CPU 可以监视另一个 CPU 的活动并且更优雅地报告失败。

内存是一个关键的系统组件,当然,现代设备中有很多的内存。失败也是未知的。 一个暂时的故障,可能是由一个杂散粒子引起的,可能会导致无法解释的、无法生成的装置崩溃。真的没有什么办法可以解决这种可能性。 一个严重的或者永久性的失败更容易被发现。

640?wx_fmt=jpeg

内存可以通过两种方式进行测试: 如果CPU有闲置时间的话,在加电的时候(在任何有用的数据存储在存储在内存之前),或者在动态运行中。如果一个简短的启动延迟可以被容忍的话,要考虑是否需要一个全面的内存检测。 通常的测试被称为"动态测试",在这种方法中,内存被清除,每个位都被写入,每个位都被检查,以确保它是零。 

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

640?wx_fmt=jpeg

外围设备多种多样,可能会失败,这里有许多有趣的方法。 然而,能提供的一般性建议很少。自测代码可以检查设备对其地址的响应,因为如果没有这样做,就意味着发生了不好的事情。否则,一些设备可能有一个"循环回路"模式,能够检查基本的发送/接收功能。除此之外,任何自我测试都需要创造力,这种创造力是基于对设备功能的理解。

640?wx_fmt=jpeg

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

(1)陷入一个循环(无反应) 

(2)数据/代码腐烂

最常见的原因(1)实际上是某种硬件问题,导致软件正在等待一个永远不会出现的响应。 这仍然是一个软件错误,因为超时总是谨慎的。解决这种问题的最好方法就是使用某种watchdog设施。如果没有收到软件的定期响应,通常要硬件重置系统。一个专用的任务可能在多线程应用程序中做同样的工作。

指针错误是导致(2)随机内存损坏的可能原因,很难对其进行检测和诊断。幸运的是,一个常见的错误是使用无效的指针。由于这会导致一个软件中断,预防措施是确保相应处理程序的实现。 另一个普遍的错误是像堆栈或数组这样的内存区域的溢出。 这个问题可以通过在两端使用保护检查或监测其访问情况加以解决。

还有一个重要的未决问题。 一旦发现失败或即将发生失败,能做些什么呢? 这完全取决于系统的性质。 在某些情况下,特别是深度嵌入式系统,系统重置是唯一合理的做法。在后面的分析中记录失败是一种可能。 对于其他系统,用户可能会被建议或者决定要采取的行动。 另一种可能性是,设备使用网络连接向用户/供应商/开发人员发送有关故障的信息。

自我测试的底线对每一个嵌入式系统都是不同的,这使得这个行业的工作变得有趣。结果是,每个设备的自我测试都是不同的,对发现故障的反应也是可变的。 唯一不变的因素是失败的可能性,以及许多开发人员对这种可能性的否定。

 

目录
相关文章
|
1月前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
54 1
|
2月前
|
人工智能 安全 物联网
|
4月前
|
测试技术 Linux Android开发
i2c总线及设备测试工具i2ctools:i2cdetect、i2cdump、i2cget、i2cset
本文介绍了i2ctools工具集的使用,包括i2cdetect、i2cdump、i2cget和i2cset,这些工具有助于I2C设备的开发和调试,通过检测设备、读写寄存器和数据块来提高开发效率。
772 1
|
4月前
|
存储 监控 安全
使用IoT设备优化家庭生活的技术探索
【8月更文挑战第4天】IoT设备以其智能化、便捷性和高效性,正逐步成为现代家庭不可或缺的一部分。从智能照明到智能安防,从智能恒温器到智能厨房,再到智能语音助手,这些设备不仅优化了我们的家庭生活,还提升了我们的生活质量和幸福感。随着技术的不断进步和应用场景的不断拓展,我们有理由相信,未来的智能家居将会更加智能、更加人性化,为我们的生活带来更多惊喜和便利。
|
3月前
|
机器学习/深度学习 人工智能 算法
物联网(IoT)就像是一个大型派对,无数的设备都在欢快地交流着信息
【9月更文挑战第4天】在这个万物互联的时代,物联网(IoT)犹如一场盛大的派对,各类设备欢聚一堂。然而,如何让这些设备互相理解并协同工作呢?这就需要机器学习与人工智能的助力。例如,智能空调通过学习你的使用习惯来调节温度,使你更加舒适;智能安防系统则能识别异常行为并及时报警,保障家庭安全。此外,智能农业、交通等领域也因机器学习和人工智能的应用变得更加高效。下面通过一个简单的温度预测代码示例,展示机器学习在物联网中的实际应用,让我们一起感受其强大潜力。
69 0
|
4月前
|
存储 SQL JSON
【Azure IoT Hub】从设备端如何向IOT发送海量数据,可以使用从设备到IoT连接的直接传输吗?如何把IoT Hub中的数据存储到Azure Storage中?
【Azure IoT Hub】从设备端如何向IOT发送海量数据,可以使用从设备到IoT连接的直接传输吗?如何把IoT Hub中的数据存储到Azure Storage中?
|
4月前
|
测试技术 索引 CDN
hyengine wasm业务性能测试问题之测试设备如何解决
hyengine wasm业务性能测试问题之测试设备如何解决
|
5月前
|
安全 物联网 物联网安全
物联网设备的安全性评估与测试:技术深度解析
【7月更文挑战第7天】物联网设备的安全性评估与测试是保障物联网系统安全运行的重要环节。通过实施全面的安全性评估与测试,可以发现并修复设备中存在的安全漏洞和风险,提高整体安全防护能力。然而,由于物联网设备的多样性和复杂性以及安全标准与监管的缺失等挑战,测试工作需要不断创新和优化。未来,随着技术的不断进步和实践的深入,物联网设备的安全性评估与测试将更加完善和高效。
|
6月前
|
传感器 安全 物联网
物联网(IoT)设备的硬件选型与集成技术博文
【6月更文挑战第28天】物联网设备硬件选型与集成聚焦关键要素:功能匹配、性能稳定性、兼容扩展及成本效益。嵌入式系统、通信协议、数据处理和安全性技术确保集成效果,支撑高效、智能的IoT系统,驱动家居、城市与工业自动化变革。
|
5月前
|
网络协议 物联网 定位技术
毕设(二)——NB-IOT通信模块(nb卡通信测试)+gps定位
毕设(二)——NB-IOT通信模块(nb卡通信测试)+gps定位