一、CRC相关知识介绍
1、原理
CRC 校验本质上是选取一个合适除数,对要进行校验的数据(被除数)做模 2 除法,得到的余数就是 CRC 校验值。
1)标准 CRC 生成多项式
2)位宽(W)
多项式二进制位数减一。
3)工程中常用 CRC 校验过程
△ 余数初始值:计算开始前,先给变量 CRC 赋的初始值。
△ 结果异或值:计算结束后,得到的变量 CRC 与这个值进行异或操作,得到最终校验值。
△ 输入数据反转:计算开始前,将需要校验的数据反转,如 1011 反转为 1101。
△ 输出数据反转:计算结束后,与结果异或值异或之前,计算值反转,如 1011 反转为 1101。
4)模 2 运算
不考虑进位和借位的二进制数运算。
二、操作步骤(以 CRC8 为例)
1、利用C脚本对单一信号设置自定义CRC校验算法
1)打开 TSMaster,创建一个 C 脚本窗口。
2)创建 Rollingcount 信号变量 RC、创建需要校验信号所对应报文的预发送事件、以及校验算法函数 MakeCheckSum(此处以 ABSData 报文为例)。
3)编辑 CRC 自定义算法函数。
4)在预发送事件中,调用编辑好的自定义 CRC 算法函数,利用回调函数赋值给 CheckSum信号,同时对 RollingCount 信号编程做循环处理。
5)将 DBC 中 CheckSum 和 RollingCount 信号添加至信号曲线进行观察,即可完成通过脚本对单一校验信号设置自定义的 CRC 校验算法。
2、对多个信号设置自定义CRC校验算法
1)添加 DBC 文件进 TSMaster,打开 RBS 模块,找到需要设置的 CheckSum 信号,点击鼠标右键,选择设置为 CheckSum 信号。
2)在弹出的 CRC 算法库中选择合适的 CRC 算法,如需要自定义则需进行以下步骤。
3)在弹出算法库窗口后,进入 C 小程序,选择 CRC Library,在自定义函数右键添加自定义算法函数(如 MyCRC)。
4)编辑自定义算法函数代码(注意:参数类型需与现有 CRC 算法函数保持一致:指针指向数据首地址,数据长度),编辑好后点击编译。
5)回到 RBS 界面,选中要设置的 CRC 校验信号,右键选择设置为 CRC 校验信号,在弹出的算法库中便已包含了我们自定义的 CRC 校验算法,这样即可快速对多个 CRC 信号进行CRC 校验算法设置,实现 CheckSum 本地化支持。
6)在编译好 CRC 信号函数后,我们可以在 RBS 中对 CRC 信号点击鼠标右键,选择设置编辑算法参数,在弹出的窗口中,可以选择切换其他 CRC 校验算法,并设置首地址和长度。这样即可快速对多个 CRC 信号进行 CRC 校验算法设置,实现 CheckSum 本地化支持。