HIL18讲[附1],来自读者的感谢信,关于HIL测试中的CRC算法

文摘   2024-09-04 08:11   上海  
做NI软硬件产品在中国的应用者、推动者、贡献者
如何在NI Veristand中添加自定义CRC算法,2024年9月2日 14:37

背景

NI的HIL台架已搭建,项目前期未实现E2E校验功能,所以模拟节点的Checksum默认为0。

项目中期开始新增E2E校验,此时要求与DUT交互的节点发出Checksum 和 RollingCounter。

方案调查

通过查阅资料,实现模拟节点的Checksum计算并发出有以下几个方案。

1、Matlab模型实现

2、NI Veristand 自带的AFP(Automatic Frame Processing),添加自定义算法实现

3、安装 NI-VCOM(车辆通信套件)

4、Customer Device 重定义CAN模块

基于当前项目情况,各方案面临的问题如下

方案1:前期在模型中加了CRC的算法,但是一部署就各种莫名其妙的错误

方案2:自定义算法并不难,困难在于.c文件结构和依赖的.h文件如何而来,以及如何编译成veristand可用的.enb文件,资料很少

方案3:安装套件会更新一系列NI插件,可能和当前软件版本不兼容,影响现有的测试环境

方案4:需要下载一系列版本匹配的插件,可以基于网上的demo,但是需要有Labview基础 综上考虑,方案2对当前测试环境影响最小,先着手调查。

实施

1、参考资料 

师子一号:HIL测试中的CheckSum和RollingCounter

HIL18讲,零基础教程,HIL测试中的CheckSum和RollingCounter

2、实现原理

利用XNET驱动对于CAN口预留的功能,自定义一个AFP算法,通过烧写firmware的方式实现Checksum的计算。

Veristan自带了两种CRC,自定义的算法需要从.c编译为.enb文件,然后配置到Veristand AFP模块中。

3、c代码编写

如上文所述,算法很好写,困难的是.c文件的结构和依赖项。

这里感谢师子一号提供的.c范例,主要用到的就是a_pDataFrame和a_pContextData.

• a_pDataFrame里面存的是报文信息,是一个sDataFrame类型,其中Payload[8]是预发送的8个字节数据。

• a_pContextData里面存的是Veristand界面的配置信息。

例如,CRC存储在第几个字节,从第几个字节到第几个字节去参与计算。

4、编译成.enb

按照师子一号的说明,需要用到Altera Quartus II自带的NIOS II编译器。

这个自行安装就可以了,不需要注册,不过Altera Quartus  II比较大,安装后我们只用到NIOS   II  Command Shell.

这里也需要用到师子一号范例工程里的Makefile和依赖项,编译按照网页说明操作就可以,只要文件全,语法没问题,最终生成.enb文件。

5、添加Veristand 中的AFP配置项

把编译后的.enb文件添加到NI VeriStand 2011_CRC8.enb同目录下。返回上一层,复制一个已有的.ini文件,改名为.enb同名。

notepad打开这个.ini,修改BinaryFile中.enb名称为自己的名称,后面的.vi就保持不变即可。这几个vi界面是用来设置配置项的,例如多项式,初始值,异或值等。

6、为CAN通道配置AFP,输入多项式,初始值,异或值

7、为报文配置AFP,如图右击,配置CRC计算的字节index和存储的index。

当然,以上Step6 and 7也可以不配置,直接在.c算法里面写好。

8、部署到台架

局限

该方法适合一条报文一个checksum,另外有博主提到如果代码量大,可能无法部署成功,或许是因为分配给AFP的算力太小。

【本文完】



【推荐】
汽车行业,千万不要去干外包
恒润和意昂,两扇窗户,看懂行业的过去、当下和未来

总线10讲,东半球最好用的excel2dbc工具,永远免费送

【课程】汽车和LabVIEW完美结合,干货十足,助您掌握核心技术,提升职场竞争力

专题技术交流群,用户讨论组,大合集(加各种工具交流群,请后台联系)

培训测试技术,居然需要将近2万?太过分了!!!
[汽车改装市场]针对新款大灯的LIN转换模块

车辆技术
致力于汽车研发测试技术的研究推广,帮助同行互通有无,为提升职业价值感,为产业崛起而奋斗!
 最新文章