CRC16 校验和:HCS08 与 Kermit 与 XMODEM

2023-11-26

我正在尝试将 CRC16 错误检测添加到 Motorola HCS08 微控制器应用程序。但我的校验和不匹配。一在线CRC计算器提供了我在 PC 程序中看到的结果和我在微型计算机上看到的结果。

它将微处理器的结果称为“XModem”,将 PC 的结果称为“Kermit”。

这两个古老协议指定 CRC16 的使用方式有什么区别?


您可以使用相同的基本代码库实现 16 位 IBM、CCITT、XModem、Kermit 和 CCITT 1D0F。看http://www.acooke.org/cute/16bitCRCAl0.html它使用的代码来自http://www.barrgroup.com/Embedded-Systems/How-To/CRC-Calculation-C-Code

下表显示了它们的不同之处:

name    polynomial  initial val  reverse byte?  reverse result?  swap result?
CCITT         1021         ffff             no               no            no
XModem        1021         0000             no               no            no
Kermit        1021         0000            yes              yes           yes
CCITT 1D0F    1021         1d0f             no               no            no
IBM           8005         0000            yes              yes            no

其中“反转字节”表示每个字节在处理之前进行位反转; ‘reverse result’表示将16位结果处理后进行位反转; ‘swap result’表示处理后结果中的两个字节被交换。

以上所有内容都通过测试向量进行了验证http://www.lammertbies.nl/comm/info/crc-calculation.html(如果这是错误的,我们都迷路了......)。

因此,在您的特定情况下,您可以通过对每个字节进行位反转、对最终结果进行位反转,然后交换结果中的两个字节,将 XModem 的代码转换为 Kermit。

[我相信,但尚未检查或计算出细节,反转每个字节相当于反转多项式(加上一些额外的细节)。这就是为什么您会在不同的地方看到对于基本相同的算法有截然不同的解释。

另外,上述方法效率不高,但适合测试。如果你想要高效,最好的办法是将上面的内容转换为查找表。]

edit我上面所说的 CCITT 记录在RevEng目录作为 CCITT-FALSE。有关更多信息,请参阅上面链接中我的博客文章的更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CRC16 校验和:HCS08 与 Kermit 与 XMODEM 的相关文章

  • Android APK 文件的 MD5 校验和不同。为什么?

    我注意到 如果我编译一个 Android 应用程序两次 一次紧接另一次且没有任何更改 则两个 APK 文件具有两个不同的 MD5 校验和 未签名和签名的 APK 文件都会产生相同的结果 您可以将其作为 ZIP 文件打开 其中的内容在两个文件
  • CRC4 在 C 中的实现

    我修改了发现的实现here https stackoverflow com questions 28656471 how to confgure calculation of crc table 为 CRC4 构建表生成函数 如下所示 de
  • 32位校验和算法比CRC32质量更好?

    是否有具有以下任一功能的 32 位校验和算法 输入数据大小 碰撞的分布更加均匀 这些与 CRC32 相关 由于 32 位存储空间的限制 我实际上不依赖第一个属性 但第二次 似乎就在那里could予以改进 有任何想法吗 谢谢 我需要具体的实现
  • 写入 PIC 上的 EEPROM

    这里有PIC单片机编程器吗 我正在学习一些使用 pickit2 和它附带的 16F690 芯片的 PIC 微控制器编程 我目前正在尝试各种设施 我可以成功read如果我在 MPLAB 中设置 EEPROM vaklue 则代码中来自 EEP
  • 确定 .NET 程序集是否是从同一源构建的

    有谁知道如何比较两个 NET 程序集以确定它们是否是从 相同 源文件构建的 我知道有一些差异实用程序可用 例如 Reflector 插件 但我对查看 GUI 中的差异不感兴趣 我只是想要一种自动方法来比较二进制文件集合以查看它们是否是从相同
  • TCP校验和计算与wireshark计算不匹配

    我遇到一个问题 示例程序 复制如下 生成的 tcp 校验和与wireshark 计算的校验和不匹配 有人可以指出我哪里出错了吗 这里我尝试了两种方法 tcp 校验和 get ipv6 udptcp checksum 有了这两个值 就会得到两
  • 是否有一种校验和算法也支持从中“减去”数据?

    我有一个包含大约 1 亿个文档的系统 我想跟踪它们在镜像之间的修改 为了有效地交换有关修改的信息 我想按天发送有关修改文档的信息 而不是按每个单独的文档发送 像这样的事情 2012 03 26 cs26 2012 03 25 cs25 20
  • CMSIS & STM32,如何开始? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在 STM32 上使用 CMSIS 启动项目 网上一搜 没找到具体的教程 有些使用 SPL 开始项
  • Python,字典的校验和

    我正在考虑创建一个字典的校验和来知道它是否被修改 目前我有 gt gt gt import hashlib gt gt gt import pickle gt gt gt d k v k2 v2 gt gt gt z pickle dump
  • 使用反射输入计算 CRC64 的最有效方法

    我需要使用计算 CRC 64这个设置 https i stack imgur com Tdj7Z png进入这个精彩的网站 http www sunshine2k de coding javascript crc crc js html h
  • 是否正在努力开发具有文件自动更改检测功能的面向构建的文件系统?

    我最近开始使用 Git 我发现的有趣功能之一是使用哈希来快速检测更改 另一方面 我看到构建工具 如 make ant javac 等 尝试通过检查文件的时间戳来检测源文件中的更改 这种方法的问题是 如果您从事不止一项工作 机器 你必须确保所
  • STM32 Nucleo 上的上升沿中断多次触发

    我正在使用 STM32 NUCLEO F401RE 微控制器板 我有一个扬声器 经过编程 当向上 向下推操纵杆时 可以按设定的量改变频率 我的问题是 有时 通常 当向上 向下推动操纵杆时 频率会增加 减少多次 这意味着 ISR 正在执行多次
  • 为 Windows 中的目录生成校验和

    我想为目录创建校验和 我正在遵循对此给出的答案post https stackoverflow com questions 17228202 generate md5 keys and save in a text file 但问题是它正在
  • 识别android中的DTMF音

    我计划在 android 中创建一个 centerx 系统应用程序 其中有一个语音信箱会设置在接收方 根据语音邮件中的指示 呼叫者必须按下拨号盘中的号码 接收方应识别该号码并执行相应的操作 有谁知道如何在接收方检测呼叫者按下的号码 其背后的
  • 基本高性能数据真实性

    我不是母语人士 术语可能不正确 对此感到抱歉 我正在 AVR 微控制器之间通过无线电传输数据供个人使用 并希望客户能够证明传输数据的真实性 因为它来自授权客户之一 这意味着我不需要不可否认性并且能够预先定义共享密钥 我对不同的方法进行了一些
  • 如何在 Maven 中创建校验和然后将其输出到文本文件?

    还在学习如何使用Maven 我想知道是否有办法做到checksum在生成的WAR file The Maven目标是package 我想要实现的是得到一个checksum价值 包装的WAR文件 与打包文件一起放入文本文件中 提前致谢 让它与
  • 我可以在 Microchip C18 中创建一个同时接受 ram 和 rom 指针的函数吗?

    当我声明一个接受的函数时const char 我传递了一个字符串文字 我得到了一个 警告 2066 赋值中的类型限定符不匹配 因为字符串文字是rom const char 反过来也是一样的 虽然PIC是哈佛架构 但内存被映射到一个连续的地址
  • 这个校验和算法可以改进吗?

    我们有一个非常旧的 不受支持的程序 可以跨 SMB 共享复制文件 它有一个校验和算法来确定文件内容在复制之前是否已更改 该算法似乎很容易被愚弄 我们刚刚找到了一个示例 其中两个文件完全相同 除了单个 1 更改为 2 之外 返回相同的校验和
  • 您能解释一下 md5 和 modulo 的这些令人不安的异常情况吗?

    好吧 标题确实很主观 但这正是我的问题所在 背景是我想将静态 Web 内容的点击均匀地分布在定义数量的缓存服务器上 此外 向客户端的交付应该会加快 因为多个域正在使用中并且请求不会相互阻塞 我也不需要经典的负载均衡器 而是立即在我的 htm
  • adler32 校验和的可靠性如何?

    我想知道与例如相比 adler32 校验和有多可靠 md5 校验和 维基百科上说 adler32 比 md5 可靠得多 所以我想知道有多少 以及以何种方式 更具体地说 我想知道它是否足够可靠 作为对大小为 20GB 以上的 tar 文件的长

随机推荐

  • 使用 django 表单保存新的外键

    我有两个模型 class Studio models Model name models CharField Studio max length 30 unique True class Film models Model studio m
  • 在易出错的初始化程序 swift 1.2 中分配 let 变量

    我有一个带有错误初始化程序的结构 不是实例方法 而是初始化程序 更新到 1 2 后 当我尝试分配let初始化程序内的属性 我收到以下错误Cannot assign to aspectRatio in self 我的代码如下 import F
  • 在Python中,如何解码GZIP编码?

    我在 python 脚本中下载了一个网页 在大多数情况下 这工作得很好 然而 这个有一个响应头 GZIP 编码 当我尝试打印这个网页的源代码时 它在我的腻子中包含了所有符号 如何将其解码为常规文本 我使用 zlib 从网络上解压缩 gzip
  • 滑动菜单将触摸事件锁定在上视图上

    我正在尝试使用滑动菜单在我的应用程序中 在我的 Sony Xperia S 上 它工作得非常好 但是当我尝试在 HTC Desire HD 上启动应用程序时 菜单可以通过手势完美打开 但其他触摸事件被阻止并且顶视图 ViewPager 滑动
  • JSON web-api 上公开的对象 - 如何阻止属性名称更改大小写?

    我有一个如下所示的对象模型 public class Product public string ProductCode get set public string ProductInfo get set 我通过 Dapper 填充它 并将
  • 在硬件加速下缩放画布时,偏移路径模糊

    我的应用程序使用可缩放的画布 以便我可以以米而不是像素为单位指定路径点 当我缩放画布时 然后使用画一条线path lineTo 打开硬件加速后 线条变得模糊且偏移 关闭硬件加速或使用硬件加速时不会发生这种情况canvas drawLine
  • 的类型扩展错误' aria-label='Dictionary<'K, 'V> 的类型扩展错误'> Dictionary<'K, 'V> 的类型扩展错误

    以下类型扩展 module Dict open System Collections Generic type Dictionary lt K V gt with member this Difference that Dictionary
  • 如何以编程方式将内容添加到菜单条?

    我想将文本框中写入的任何内容添加到菜单条中 在我的文件 gt 最近搜索中 我怎样才能以编程方式进行 我是否可以动态分配一个事件处理程序 以便当用户单击该子文件夹中的 X 项目时 文本将复制回文本框 编辑 我如何以编程方式调用文件夹 Busq
  • 无法编译QT创建快速应用程序项目

    我是 QT Creator 的新手 我已经安装了 QT Creator 5 6 2 和 MinGW 4 9 2 32 位 我在编译快速应用程序项目时遇到问题 因为它总是显示此错误消息 Could not create directory C
  • Big O 正式定义中的常量

    我正在修改 Big O 和其他相关界限的正式定义 但有些事情让我绊倒了 在我正在读的书中 Skiena Big O 被定义为 f n O g n 当存在常数 c 时 对于 n gt n0 的某个值 f n 始终 这对我来说通常是有意义的 我
  • UITextField 自定义背景视图和移动文本

    我正在尝试使用自定义文本字段背景 问题是文本看起来离 左侧太近 我没有看到任何方法可以在不子类化 UITextField 的情况下移动文本 所以我试图扩展和覆盖 void drawTextInRect CGRect rect NSLog d
  • 在客户端 JavaScript 中访问 Express.js 局部变量

    很好奇我是否做得对 如果不对 你们会如何处理这个问题 我有一个 Jade 模板 需要渲染从 MongoDB 数据库检索的一些数据 并且我还需要访问客户端 JavaScript 文件中的数据 我正在使用 Express js 并将数据发送到
  • Swift:在 IOS13+ 上设置 StatusBar 颜色(使用 statusBarManager)

    我想通过代码定义状态栏的颜色 我发现它是这样的 但它已被弃用 有谁知道这样做的新方法是什么 这个警告在我的所有代码中都跟着我 此代码有效 但有警告 任何想要的人的代码 class AppDelegate UIResponder UIAppl
  • 从另一个类调用方法

    我想知道如何从另一个类调用方法 而不必创建该类的新实例 我查过这个 我看到的 90 的示例都要求我为我引用的类制作一个新副本 像这样的东西 Fooclass test new Fooclass test CallMethod 但是 我想知道
  • 如何在xgboost中获得每棵树的预测?

    使用xgboost Booster predict只能得到所有树的预测结果或者每棵树的预测叶子 但是我怎样才能得到每棵树的预测值呢 截至最近 xgboost引入了切片 API Raul 的答案虽然有效 但过于复杂 要获得单独的预测 您所需要
  • 将 JavaScript 数组的键和值获取到变量中

    我有一个 JavaScript 对象数组 写的时候console log myarry 它将以下面的形式显示在控制台中 Array 2 0 Object one one 1 Object two two length 2 在这个数组中 我的
  • Objective-c:将日期字符串转换为星期几+月份名称

    初学者的问题 但我想知道是否有人可以帮助我解决这个问题 我需要根据包含特定日期的字符串设置四个字符串 例如 Apr 7 2011 表示星期几的字符串 缩写 Mon Tue Wed Thu Fri Sat Sun 例如 Thu 需要一天的字符
  • 如何确定一个对象是否可以 ToString 转换为值或类型名称?

    我正在编写 php 服务和我们的 crm 之间的互操作 我需要做的一件事是确保简单类型被转换为 ToString 以便稍后在 json 转换器中使用 我什至不确定 简单类型 的名称是什么 但它可以这样定义 代表低级变量类型的对象 包含单个值
  • Promise 和通用 .catch() 语句

    我正在为我的系统编写一个 API 它将 XHR 发送到服务器并返回一个应由调用者处理的承诺 到目前为止一切顺利 对于每个 API 调用 我必须使用 then and catch调用 但通常 大约 75 的时间 catch引用相同的功能 只需
  • CRC16 校验和:HCS08 与 Kermit 与 XMODEM

    我正在尝试将 CRC16 错误检测添加到 Motorola HCS08 微控制器应用程序 但我的校验和不匹配 一在线CRC计算器提供了我在 PC 程序中看到的结果和我在微型计算机上看到的结果 它将微处理器的结果称为 XModem 将 PC