当前位置: 首页 > 知识库问答 >
问题:

有没有一个简单的方法使CRC校验和匹配给定的值?

司空学智
2023-03-14

我正在开发一个运行在微控制器上的程序,需要实现程序代码完整性的自我测试。

为此,我让代码在整个闪存(程序空间)上计算一个CRC16校验和,并通过某个网络将该值传输到另一个系统。然后,另一个系统必须将校验和与预先计算的值进行比较。

(如果需要,我还可以实现CRC-16以外的另一个校验和算法。)

谢谢你的回答!

共有1个答案

金烨华
2023-03-14

是的,很容易。对于n字节的flash,计算前n-2字节的CRC-16,并将该CRC存储在最后两个字节中。对于反射CRC,这两个字节将以小端顺序追加,对于非反射CRC,这两个字节将以大端顺序追加。那么n个字节中的CRC-16将是一个常数。这个常数被称为CRC的“残留量”。对于结尾没有异或的CRC,残差总是为零。你没有说你使用的是什么CRC,但你可以在Greg Cook的目录中找到已知的CRC的残留物(在最后的独家报道之前-或)。或者你可以看看你得到了什么。

 类似资料:
  • 问题内容: 我想测试对象的特定字段是否与我指定的值匹配。在这种情况下,它是S3Bucket对象内的存储桶名称。据我所知,我需要为此编写一个自定义匹配器: 如果有一个更简单的方法可以做到这一点,那就好了: 谁能指出我类似的东西?我想在这种情况下我已经解决了我的问题,但这不是我第一次希望采用一种更简单的方法。 问题答案: 另外,对于更类型安全的版本,还有FeatureMatcher。在这种情况下,类似

  • 我试图找出如何计算CRC为非常简单的SDLC帧。 使用MLT我捕获流,我看到一些简单的帧被发送出去,如:0x3073F9E3和0x3011EDE3 null 这将给出输出B8ED,所以最后一个字节是ed。 有什么想法吗?

  • 我最近想使用CRC-32校验和进行文件完整性检查,并试图以同样的方式验证它,但似乎这种“对比零技巧”在这里是不可能的?! 例如,如果我在CRC在线计算器上使用32位值0xdeadbeef: https://www.lammertbies.nl/comm/info/crc-calculation.html 谁能解释一下,为什么这个“零比零技巧”对CRC-32不起作用?

  • 问题内容: 似乎有很多方法可以在Python中定义单例。关于堆栈溢出是否有共识? 问题答案: 我没有真正的需要,因为具有功能(而不是类)的模块可以很好地用作单例。它的所有变量都将绑定到模块,该模块无论如何都无法重复实例化。 如果您确实希望使用类,则无法在Python中创建私有类或私有构造函数,因此,您只能通过使用API​​的约定来保护自己免受多重实例化。我仍然将方法放在模块中,并将模块视为单例。

  • 本文向大家介绍cmake 没有包的简单方法,包括了cmake 没有包的简单方法的使用技巧和注意事项,需要的朋友参考一下 示例 构建可执行文件(编辑器)并将其链接到库的示例(突出显示)。项目结构简单明了,每个子项目都需要一个主CMakeLists和一个目录: 母版CMakeLists.txt包含全局定义,并add_subdirectory针对每个子项目进行调用: 库的CMakeLists.txt分配

  • 问题内容: 我正在建立一个带有flask的网站,其中用户具有帐户并能够登录。我正在使用flask-principal作为登录部分和角色管理。有没有办法让用户的会话在5分钟或10分钟后过期?我在flask文档或flask-principal文档中找不到该文件。 我想到了一种手动方法,在登录时在服务器端设置一个带有时间标签的变量,并在用户执行下一个操作时,服务器会验证该时间戳记上的时间增量并删除会话。