AutoSar中关于E2E报文的实现
E2E报文需要在报文中加入CheckSum,Counter
1.CRC
AutoSar的CrC8算法校验
1)使用现有的第三方库crc,crcmod
from crc import CrcCalculator, Crc8 CRC8H2F = CrcCalculator(Crc8.AUTOSAR).calculate_checksum crc_0x96 = CRC8H2F(CalculateCRC_0x96)
2)自定义CRC8算法
def CRC8H2F(u8_data: list): u8_crc8 = 0xFF # 初始化CRC u8_poly = 0x2F # 多项式 u8_XOR = 0xFF for src_data in u8_data: u8_crc8 ^= src_data for j in range(0, 8): if u8_crc8 & 0x80: u8_crc8 = (u8_crc8 << 1) ^ u8_poly else: u8_crc8 <<= 1 u8_crc8 ^= u8_XOR u8_crc8 &= 0xFF return u8_crc8
2.Counter和报文绑定,没发一帧报文,Counter加一,加到15再从1开始
例如这是发送函数的部分代码