嵌入式开发:在嵌入式系统中验证传感器和通信数据的3个技巧

本文探讨了嵌入式开发人员如何确保数据完整性,介绍了奇偶校验、校验和以及循环冗余校验(CRC)等方法。奇偶校验能检测单个位翻转,校验和用于检测数据集中错误,而CRC通过多项式除法提供更强的错误检测能力。这些技术对于防止因位翻转导致的错误至关重要,特别是在数据收集和分析中。
摘要由CSDN通过智能技术生成

  我曾经参与过一个项目,其中来自传感器的数据被破坏并且无法验证传感器数据是否正确!在今天的文章中,让我们看看嵌入式开发人员在数据完整性方面的几种方法。

  技巧1 – 至少使用奇偶校验

  奇偶校验是一种数据完整性机制,它查看数据流中1的数量,然后调整奇偶校验位以使 1 的总数为奇数或偶数。例如,假设传感器传输 16 位宽且奇校验的数据消息。其中一位,通常是最低有效位 (LSB) 将用于设置奇偶校验。如果要发送的数据是:

  1000 1000 1000 100x

  然后为了奇校验,将 x 设置为 1,这样数据中有五个1。如果奇偶校验是偶数,那么 x 将被设置为 0,因为数据中已经有四个1。

  奇偶校验适用于检测单个位翻转。如果零变成一或一变成零,则可以检测到奇偶校验错误。但是,如果两个或更多位翻转,则可能无法检测到错误。为此,需要更强大的技术。

  技巧2 – 使用校验和

  校验和是一种算法,旨在检测数据集中自然或随机发生的错误。通常在一组数据上计算校验和,然后得出数据的校验和。数据集通常包含数据中的校验和,因此嵌入式开发人员在计算校验和时会忽略这些字节,然后将计算出的校验和与数据附带的校验和进行比较,以查看它们是否匹配。

  重要的是要认识到并非所有校验和都相同,并且可以检测到不同的错误。例如,一个校验和可能能够检测到单个位已经改变,但不同的校验和可能能够检测几个位是否同时改变。仅仅因为发现校验和匹配并不能保证数据中没有错误!校验和也擅长检测随机错误,但不一定会检测到故意更改,例如有人试图破坏系统。开发人员需要仔细选择他们选择用于其应用程序的校验和。

  技巧3 – 使用循环冗余校验 (CRC)

  CRC实际上是一个校验和,但它是一种非常特殊的校验和。CRC 是使用多项式除法计算校验和的校验和。可以想象,在嵌入式系统上,尤其是基于微控制器的嵌入式系统上,执行多项式除法的计算成本很高!不过,还有一些额外的好处,即 CRC 可以检测到比简单校验和更大范围的错误。CRC 非常有效,以至于许多微控制器供应商将包括一个基于硬件的 CRC 计算器,以允许开发人员有效地使用 CRC。不幸的是,它是否包含在内是非常偶然的,因此开发人员需要仔细阅读他们的微控制器数据表。

  结论

  在数据收集和分析不断增长的世界中,重要的是要意识到我们的系统不能只信任总线上的每一点数据。电磁干扰、宇宙射线和其他来源会导致位翻转并损坏,如果没有某种机制来检测这些位翻转,则可能会对数据采取行动,虽然在许多情况下这没什么大不了的,但有时它可能对系统造成灾难性影响,所以嵌入式开发人员尤其要注意,我们今天讨论的三种技术简单且易于实施,并且可以对进出系统的所有数据进行简单的完整性检查。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值