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 的相关文章

  • CMSIS & STM32,如何开始? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在 STM32 上使用 CMSIS 启动项目 网上一搜 没找到具体的教程 有些使用 SPL 开始项
  • 使用反射输入计算 CRC64 的最有效方法

    我需要使用计算 CRC 64这个设置 https i stack imgur com Tdj7Z png进入这个精彩的网站 http www sunshine2k de coding javascript crc crc js html h
  • 计算 CRC 初始值而不是将 CRC 附加到有效负载

    我实现的大部分 CRC 都是追加计算出的 CRC 值到消息 有效负载 并在所有字节 包括 之后在接收器处检查零结果 CRC 值通过 CRC 寄存器输入 显然这是一个相当标准的方法 现在我想使用不同的方法 根据有效负载计算一个值 使用该值作为
  • STM32 Nucleo 上的上升沿中断多次触发

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

    我想为目录创建校验和 我正在遵循对此给出的答案post https stackoverflow com questions 17228202 generate md5 keys and save in a text file 但问题是它正在
  • 初学者:AVR C++ Atmel Studio 6

    我在确定我可以访问哪些库时遇到问题 我知道我可以使用 Atmel Studio 6 IDE 用 C 对微控制器 Atmega328p 进行编程 但是 我无法弄清楚我可以访问哪些库的记录在哪里 例如 我可以使用 STL 例如向量 双端队列 吗
  • 基本高性能数据真实性

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

    我正在使用一个小型 FAT16 文件系统 并且想要为存储配置信息的单个 XML 文件生成 CRC 值 如果数据发生更改或损坏 我希望能够检查 CRC 以确定文件仍处于原始状态 问题是 如何将CRC值放入文件中 而不改变文件本身的CRC值 我
  • 如何使数据库大小超过 256 字节 [链接器文件 - MPLAB ]

    我有 PIC18F87J11 系列 并且正在使用 MPLAB C18 编译器 我可以给以下变量的最大字节是多少 我知道我必须修改链接器文件才能达到 256 字节以上 pragma udata CONNECTION TABLE 这是我干净的链
  • 使用 Javascript 的 8 位异或校验和

    我正在尝试模仿 Windows 应用程序格式化消息并发送通过 USB 通过 UART 传输到显示该消息的设备 该应用程序计算checksum并将其粘贴到消息后面 否则设备将不会接受该命令 校验和不是 crc8 校验和 但它是什么 使用 US
  • 计算实验室信息系统 (LIS) 帧的校验和

    我正在开发一个仪器驱动程序实验室信息系统 https www limswiki org index php Laboratory information system 我想知道如何计算帧的校验和 校验和算法说明 用字符 0 9 和 A F
  • 如何在 Maven 中创建校验和然后将其输出到文本文件?

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

    当我声明一个接受的函数时const char 我传递了一个字符串文字 我得到了一个 警告 2066 赋值中的类型限定符不匹配 因为字符串文字是rom const char 反过来也是一样的 虽然PIC是哈佛架构 但内存被映射到一个连续的地址
  • 异或数据包中的所有数据

    我需要一个可以根据用户输入计算校验和的小程序 不幸的是 我对校验和的了解只是它是数据包中所有数据的异或 我试图在网上搜索一个例子 但没有运气 我知道我是否有一个字符串 41 4D 02 41 21 04 02 02 00 00 00 00
  • 在Python中计算结构体的CRC

    我有以下结构 来自 C 中的 NRPE 守护程序代码 typedef struct packet struct int16 t packet version int16 t packet type uint32 t crc32 value
  • 根据哈希值确认文件内容

    我需要 检查完整性 content文件数量 文件将写入 CD DVD 可能会被复制多次 这个想法是识别正确复制的副本 在从 Nero 等中删除它们之后 我对此很陌生 但快速搜索表明Arrays hashCode byte http down
  • JavaScript CRC32

    我正在寻找一个modernCRC32 的 JavaScript 实现 本次实施 https stackoverflow com questions 8353134 javascript crc32 function and php crc3
  • 在 Java 中实现 SQL CHECKSUM

    我在 SQL Server 2008 中有一个现有数据库 它通过存储过程为现有 PHP Web 应用程序执行用户身份验证 Web 应用程序向存储过程发送一个字符串 无论存储过程如何存储 并使用 SQL Checksum 检查该值 http
  • STM32F4 定时器 - 计算周期和预分频,以生成 1 ms 延迟

    我在用STM32F407VGT6 with CubeMX 因此 我从通用定时器开始 但我被预分频值和周期值所困扰 基本上我想每隔一段时间生成一个定时器中断n 其中 n 1 2 3 ms 并执行一些任务 计算周期和预分频值的公式有很多变化 公
  • 尝试了解 ARM 二进制映像中的加载内存地址 (LMA) 和二进制文件偏移量

    我在一家ARM 皮质 M4 STM32F4xxxx 我试图了解二进制文件 elf and bin 在内存中构建并闪存 特别是关于内存位置 具体来说 我不明白的是LMA从实际的二进制文件偏移量进行 翻译 让我用一个例子来解释一下 我有一个 e

随机推荐

  • 使用 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