This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
您好!
我正在尝试在 RM57上使用 CRC。 传递到 crcSignGen 的结构具有"src_data_pat"、其中 whhich 是指向具有64位数据缓冲器的缓冲器的指针、另一个 字段是"data_length" 、它是 src_data_pat 中64位大小的字的数量。 然而,如果说我只有5字节的数据,每一个这些值是什么 shoukd ?
此外、我使用64位数据尝试了以下代码、但得到了错误的 CRC 值。 如果我遗漏了什么、您能告诉我吗? 我已将其配置为 FULL_CPU 模式并使用 CRC1和通道0。
crcModConfig_t 参数;
uint64_t data = 0x4142434445464748;
void main()
{
crcInit ();
crcChannelReset (crcREG1、0);
param.crc_channel = 0;
param.mode = CRC_FULL_CPU;
param.data_length = 1;
param.src_data_pat =&data;
crcSignGen (crcREG1、¶m);
sig = crcGetSectorSIG (crcREG1、0);
}
我得到的值是 0xB19C8742DDF0EBAA、而正确的值是0x38178634E55140F2。
谢谢!
Ravi
尊敬的 Ravi:
请参阅我的以下常见问题解答:
(+)[常见问题解答] TMS570LC4357:在循环冗余校验(CRC)控制器模块-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛中列出错误
在这里、我列出了驱动程序代码中与大端字节序和小端字节序器件相关的错误。
由于 RM57x 是小端器件、因此请参阅上述常见问题解答中与小端器件相关的错误。
在常见问题解答的末尾、我还附上了参考示例。 所以、请再次参考。
——
谢谢、此致、
Jagadish。
尊敬的 Jagadish:
我尝试了 上面链接中的 crc_full_cpu_mode_RM57代码。 在此部分中、我对其进行了修改、以计算 单个64位数据(而不是128 x 64位数据)的 CRC。 然后、我将计算出的 CRC 与基于本网站计算出的 CRC-64 ISO 进行了比较。 但是、我仍然无法将其匹配起来。 wesite 使用 RM57参考手册中提到的相同 CRC 多项式。 您能看一下吗?
https://www.lddgo.net/en/encrypt/crc
谢谢!
Ravi
尊敬的 Ravi:
您不应使用 CRC-64 ISO、因为我们的算法与 CRC-64 ISO 略有不同
如果我们保持 CRC-64 ISO、那么它会将初始值和 XOROUT 值设置为0xFFFFFFFF 正确吗?
但是、对于我们的计算、我们应将上述值设为0x000000000000、因此请保持自定义并进行如下更改:
您可以看到、对于您的数据 0x4142434445464748、我从网站获得了压缩 CRC 为0xDDF0EBAAB19C8742、这里是来自 CRC 模块的压缩 CRC:
您可以看到、两者都是匹配的。
——
谢谢、此致、
Jagadish。