一文详解Checksum和RollingCounter校验

原创 汽车电子与软件 2024-08-02 08:13

作者 | 糊涂振
出品 | 汽车电子与软件


对于汽车控制器的软件开发和功能安全方面的需求,我相信大家或多或少都听说过E2E(End2End,端到端)保护AutoSAR E2E profile保护机制。那它们到底什么?如果你继续了解会发现有ID、长度、Checksum和Counter等校验方法。在E2E概念尚未正式提出之前,其实主要的一些校验方法就广泛应用到CAN通讯中,也就是大家在CAN通讯矩阵或DBC文件就常常可以看到Checksum信号和Rolling Counter信号,如下所示:



Source: https://www.tosunai.com/crc-e2e-checksum-methods/

         

 

为什么需要使用这两个信号? 因为CAN报文信号在汽车CAN总线网络中传输会出现衰减,也会受外界环境因素影响,比如电磁干扰,CAN总线网络遭到黑客入侵或攻击等现象,这些都可能导致接收端接收到的信号与发送端发出的信号不一致,因此就需要应用一些校验机制来确保CAN报文数据的完整性、真实性和可靠性。 

 

那为什么最常采用Checksum和Rolling counter校验而不是其他校验机制?这就有必要详细探究这两者,因此下文将对Checksum和Rolling counter校验展开详细的介绍。




#01

Checksum  

 

Checksum校验和,Checksum是一种高效的错误检测机制,其原理是:发送端先通过规定的计算方法得到一个Checksum值,再作为一个信号添加到CAN报文的数据段,发送出去;接收端接收到该报文后,先使用相同的计算方法重新计算出一个Checksum值,然后与接收到的Checksum值进行比较。如果结果一致就说明接收数据正确,否则就认为数据有错误。下图示意一个Checksum计算与校验的例子:



Source:Checksum (myreadingroom.co.in)


发送方:


  • 先初始化Checksum值为 0,并将所有数据项相加,结果为36;


  • 再通过一套特定的算法计算得到最终Checksum值为 9;


  • 最后发送方将数据和Checksum值一起打包发送给接收方。


接收方:   


  • 先解包所接收的数据,再采用与发送方相同的方法相加所有数据;


  • 然后通过一套规定的算法计算得到最终Checksum值,最终接收方计算出的Checksum值为 0,这意味着数据未损坏。

         

 

这就是Checksum的基本概念,那么应用到汽车控制器的CAN报文的具体情况是怎样的?


1)首先,针对CAN报文(数据帧),要注意Checksum和CRC的区别,这两者不是同一个概念,但很多人认为两者是同一个东西!我最开始也这么认为的,因为都涉及CRC。


注意这两者在CAN报文中的定义,如下所示:



这两者有几点区别:


  • 两者的位置。Checksum在CAN报文的数据段,一般在数据场的第一个字节或者最后一个字节,而CRC在CAN报文的CRC段;   


  • 两者的计算对象。Checksum是针对CAN报文数据段的信号采用相应的CRC校验算法(常使用CRC8, 16, 32)计算出Checksum值,而CRC是针对CAN报文的帧起始、仲裁段、控制段和数据段采用相应的CRC校验算法(常使用CRC1, 15, 17和21)计算出CRC值;



Source: http://www.zlgcan.com/canfd/399/


  • 两者的作用。Checksum是用来校验数据被正确的打包和解包、确保数据的加密和数据的可信度,而CRC用来保证数据传输的正确性和完整性。


2)其次,在汽车控制器的CAN报文中有2种Checksum的应用方式。一种是一条报文有一个Checksum值;另一种是一个信号组对应一个Checksum值,即一条报文多个Checksum,这样有助于提高破解数据的难度。总的来说Checksum的应用方式是很灵活的,可以根据自身需要制定。


3)然后,关于Checksum计算方法,通过具体代码的例子来看,比如采用CRC8(G(x) = x8 + x5 + x3 + x2 + x + 1)计算Checksum,如下所示: 

   


Source: CRC校验码计算,以常用CRC-8为例_算法_up up day

         

 

即输入数据及其长度,即可计算到相应的Checksum值。当然在工程上,要综合考虑费计算的资源和时间,直接调用CRC计算函数去处理数据较多的情况会耗资源耗时间,因此在工程实现上普遍采用查表法,即先穷举出所有的结果,在软件中以常量数组形式存在,此时计算CRC只需要给定输入查表,就可以输出相应的Checksum值,如下所示:



Source: CRC校验码计算,以常用CRC-8为例_算法_up up day   

         

 

最后,根据比对Checksum值进行判断,一般规定连续三帧以上信号的Checksum不对,则认为该报文数据有问题,并丢弃该报文数据,以此防止发送的报文出错。


回顾上述过程,发送方根据报文数据段数据计算出Checksum值并将其置于CAN报文数据段,发送报文到CAN总线;接收方也会根据收到的CAN报文后用规定的算法计算出Checksum值,与接收到的对比来判断所接收的数据是否准确。




#02

Rolling Counter  


Rolling counter滚动计数器,也叫Alive counter。它用于跟踪报文的序列,确保报文按预期顺序接收。它是一个简单的递增计数器,位于CAN报文的数据段,占用4bit长度,因此Rolling counter的数值范围为0~15。每发送一帧报文Rolling counter就加1,到15就循环回到初始值,即在0~15之间循环增加,如下所示:


Source: https://baijiahao.baidu.com/s?id=1656396925096307630


通过上图不难理解,如果通讯出现间歇或中断、或者ECU不工作,从Rolling counter的波形很容易可以看出。Rolling counter 的作用是用来判断报文传输过程是否出现漏帧,如果出现计数不连续或首尾值不对,接收方会认为丢帧,同时会报报文丢失或超时故障码。通常规定连续五次出现相同的rolling counter值,或连续3次连续两帧之间的rolling counter差值大于2,则认为rolling counter发生错误。 

 



#03

小  结 

总的来说,结合使用Checksum和Rolling Counter,可以实现对CAN总线网络数据的精确校验和顺序监测。Checksum确保CAN报文数据内容未被破坏,而Rolling Counter则确保数据帧的连续性和有序性,两者相辅相成,这样既保证了数据的正确性,也检测了数据的完整性与顺序性,这对于汽车这样对通讯网络实时性和安全性要求极高的系统至关重要。




#04

CRC和Checksum
 

最后再着重提下CRC与Checksum的区别:


1)数据检查。CRC是针对CAN物理通信机制本身的信号校验,CRC段的数据校验解决的是数据从一个CAN节点到另一个CAN节点的信号无损传输问题;而Checksum用来信号校验,数据场的Checksum校验算法的应用是为了校验数据被正确打包和拆包,与CRC场固定的校验算法不同,Checksum校验算法由ECU控制器开发供应商自行制定,在CRC的计算方式的基础上,Checksum计算规则高度灵活。


怎么理解这点,这就好比你网上买了一辆自行车,快递到了要签收,你需要确认两点:第一包装是否完整,是否有破损;第二拆开包装,检查零部件是否齐全,是否有损伤。类比的话,CRC就是第一点的包装检查,大家的检查方法基本一样,肉眼可见;Checksum就是第二点的零部件检查,可能每个人的检查方法还不同,两者皆好,那就认为没问题。


2)数据加密。CAN节点接入CAN总线是不需要使用加密手段,只要有DBC文件,那么就有可以破解CAN报文信息,如果汽车的一些关键信息被篡改,那么可能会严重汽车的行驶安全和财产安全。比如曾经热点事件:网络安全盛会-2015美国黑帽大会上,安全研究专家Charlie MillerChris Valasek同样就他们是如何黑客入侵Jeep大切吉诺。   



Source:2015美国黑帽大会:关于黑客入侵Jeep车的详细介绍


如果对一些车速,油门和制动等关键信号,添加增加一个Checksum计算,那么将意味着这时要侵入CAN通讯网络,不仅需要有DBC文件,还需要这些关键信号的Checksum计算方法,因此不难理解,通过这样的方式对CAN通讯进行数据加密,肯定是能提升汽车网络的安全性的,而CRC的计算对象和计算方法很固定,破解难度相对小了很多,这也是更需要Checksum的点。


3)信号的可靠性。CRC循环校验只有15位,信号的可信度并非100%,在多个字节中即使某些bit传输错误,CRC的计算值可能不变。而对于Checksum计算采用的CRC计算方法,据统计:CRC8校验的错误率大概为1/256,CRC16校验的错误率为1/65536。也就是说通过Checksum校验能提高数据的可靠性。

    



参考:


[1] 新能源汽车CAN和CANFD通信中的校验算法

[2] CRC校验码计算,以常用CRC-8为例_算法   

[3] 干货分享 | 详解TSMaster CAN 与 CANFD 的 CRC&E2E 校验方法

[4] CAPL编程的进阶应用 ——Checksum算法的实现   




/ END /




汽车电子与软件 主要介绍汽车电子软件设计相关内容,每天分享一篇技术文章!
评论 (0)
  • 后摄像头是长这个样子,如下图。5孔(D-,D+,5V,12V,GND),说的是连接线的个数,如下图。4LED,+12V驱动4颗LED灯珠,给摄像头补光用的,如下图。打开后盖,发现里面有透明白胶(防水)和白色硬胶(固定),用合适的工具,清理其中的胶状物。BOT层,AN3860,Panasonic Semiconductor (松下电器)制造的,Cylinder Motor Driver IC for Video Camera,如下图。TOP层,感光芯片和广角聚焦镜头组合,如下图。感光芯片,看着是玻
    liweicheng 2025-05-07 23:55 103浏览
  • 多功能电锅长什么样子,主视图如下图所示。侧视图如下图所示。型号JZ-18A,额定功率600W,额定电压220V,产自潮州市潮安区彩塘镇精致电子配件厂,铭牌如下图所示。有两颗螺丝固定底盖,找到合适的工具,拆开底盖如下图所示。可见和大部分市场的加热锅一样的工作原理,手绘原理图,根据原理图进一步理解和分析。F1为保险,250V/10A,185℃,CPGXLD 250V10A TF185℃ RY 是一款温度保险丝,额定电压是250V,额定电流是10A,动作温度是185℃。CPGXLD是温度保险丝电器元件
    liweicheng 2025-05-05 18:36 273浏览
  • ‌一、高斯计的正确选择‌1、‌明确测量需求‌‌磁场类型‌:区分直流或交流磁场,选择对应仪器(如交流高斯计需支持交变磁场测量)。‌量程范围‌:根据被测磁场强度选择覆盖范围,例如地球磁场(0.3–0.5 G)或工业磁体(数百至数千高斯)。‌精度与分辨率‌:高精度场景(如科研)需选择误差低于1%的仪器,分辨率需匹配微小磁场变化检测需求。2、‌仪器类型选择‌‌手持式‌:便携性强,适合现场快速检测;‌台式‌:精度更高,适用于实验室或工业环境。‌探头类型‌:‌横向/轴向探头‌:根据磁场方向选择,轴向探头适合
    锦正茂科技 2025-05-06 11:36 390浏览
  • 二位半 5线数码管的驱动方法这个2位半的7段数码管只用5个管脚驱动。如果用常规的7段+共阳/阴则需要用10个管脚。如果把每个段看成独立的灯。5个管脚来点亮,任选其中一个作为COM端时,另外4条线可以单独各控制一个灯。所以实际上最多能驱动5*4 = 20个段。但是这里会有一个小问题。如果想点亮B1,可以让第3条线(P3)置高,P4 置低,其它阳极连P3的灯对应阴极P2 P1都应置高,此时会发现C1也会点亮。实际操作时,可以把COM端线P3设置为PP输出,其它线为OD输出。就可以单独控制了。实际的驱
    southcreek 2025-05-07 15:06 223浏览
  • 随着智能驾驶时代到来,汽车正转变为移动计算平台。车载AI技术对存储器提出新挑战:既要高性能,又需低功耗和车规级可靠性。贞光科技代理的紫光国芯车规级LPDDR4存储器,以其卓越性能成为国产芯片产业链中的关键一环,为智能汽车提供坚实的"记忆力"支持。作为官方授权代理商,贞光科技通过专业技术团队和完善供应链,让这款国产存储器更好地服务国内汽车厂商。本文将探讨车载AI算力需求现状及贞光科技如何通过紫光国芯LPDDR4产品满足市场需求。 车载AI算力需求激增的背景与挑战智能驾驶推动算力需求爆发式
    贞光科技 2025-05-07 16:54 147浏览
  • UNISOC Miracle Gaming奇迹手游引擎亮点:• 高帧稳帧:支持《王者荣耀》等主流手游90帧高画质模式,连续丢帧率最高降低85%;• 丝滑操控:游戏冷启动速度提升50%,《和平精英》开镜开枪操作延迟降低80%;• 极速网络:专属游戏网络引擎,使《王者荣耀》平均延迟降低80%;• 智感语音:与腾讯GVoice联合,弱网环境仍能保持清晰通话;• 超高画质:游戏画质增强、超级HDR画质、游戏超分技术,优化游戏视效。全球手游市场规模日益壮大,游戏玩家对极致体验的追求愈发苛刻。紫光展锐全新U
    紫光展锐 2025-05-07 17:07 196浏览
  • 2024年初,OpenAI公布的Sora AI视频生成模型,震撼了国产大模型行业。随后国产厂商集体发力视频大模型,快手发布视频生成大模型可灵,字节跳动发布豆包视频生成模型,正式打响了国内AI视频生成领域第一枪。众多企业匆忙入局,只为在这片新兴市场中抢占先机,却往往忽视了技术成熟度与应用规范的打磨。以社交平台上泛滥的 AI 伪造视频为例,全红婵家人被恶意仿冒博流量卖货,明星们也纷纷中招,刘晓庆、张馨予等均曾反馈有人在视频号上通过AI生成视频假冒她。这些伪造视频不仅严重侵犯他人权
    用户1742991715177 2025-05-05 23:08 85浏览
  • Matter协议是一个由Amazon Alexa、Apple HomeKit、Google Home和Samsung SmartThings等全球科技巨头与CSA联盟共同制定的开放性标准,它就像一份“共生契约”,能让原本相互独立的家居生态在应用层上握手共存,同时它并非另起炉灶,而是以IP(互联网协议)为基础框架,将不同通信协议下的家居设备统一到同一套“语义规则”之下。作为应用层上的互通标准,Matter协议正在重新定义智能家居行业的运行逻辑,它不仅能向下屏蔽家居设备制造商的生态和系统,让设备、平
    华普微HOPERF 2025-05-08 11:40 90浏览
  • 文/郭楚妤编辑/cc孙聪颖‍相较于一众措辞谨慎、毫无掌舵者个人风格的上市公司财报,利亚德的财报显得尤为另类。利亚德光电集团成立于1995年,是一家以LED显示、液晶显示产品设计、生产、销售及服务为主业的高新技术企业。自2016年年报起,无论业绩优劣,董事长李军每年都会在财报末尾附上一首七言打油诗,抒发其对公司当年业绩的感悟。从“三年翻番顺大势”“智能显示我第一”“披荆斩棘幸从容”等词句中,不难窥见李军的雄心壮志。2012年,利亚德(300296.SZ)在深交所创业板上市。成立以来,该公司在细分领
    华尔街科技眼 2025-05-07 19:25 167浏览
  • 这款无线入耳式蓝牙耳机是长这个样子的,如下图。侧面特写,如下图。充电接口来个特写,用的是卡座卡在PCB板子上的,上下夹紧PCB的正负极,如下图。撬开耳机喇叭盖子,如下图。精致的喇叭(HY),如下图。喇叭是由电学产生声学的,具体结构如下图。电池包(AFS 451012  21 12),用黄色耐高温胶带进行包裹(安规需求),加强隔离绝缘的,如下图。451012是电池包的型号,聚合物锂电池+3.7V 35mAh,详细如下图。电路板是怎么拿出来的呢,剪断喇叭和电池包的连接线,底部抽出PCB板子
    liweicheng 2025-05-06 22:58 339浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦