gpt4 book ai didi

计算 GFP 载荷 FCS

转载 作者:太空宇宙 更新时间:2023-11-04 08:39:09 26 4
gpt4 key购买 nike

我正在尝试计算 GFP(通用成帧过程)帧的有效负载 FCS (pFCS),但无法获得正确的值。

我所做的是对有效载荷进行解扰,并对从有效载荷报头(4 字节 PTI、PFI、EXI、UPI、eHEC)开始到 GFP PDU 结尾的字节使用 CRC32,不包括 4 字节 pFCS。我使用的 CRC32 代码取自 echo47's post .

#include <stdio.h>

int main(void)
{
unsigned char data[] =
{
0x00, 0x0A, 0xE6, 0xF0, 0x05, 0xA3, 0x00, 0x12,
0x34, 0x56, 0x78, 0x90, 0x08, 0x00, 0x45, 0x00,
0x00, 0x30, 0xB3, 0xFE, 0x00, 0x00, 0x80, 0x11,
0x72, 0xBA, 0x0A, 0x00, 0x00, 0x03, 0x0A, 0x00,
0x00, 0x02, 0x04, 0x00, 0x04, 0x00, 0x00, 0x1C,
0x89, 0x4D, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13
};
unsigned int crc_table[] =
{
0x4DBDF21C, 0x500AE278, 0x76D3D2D4, 0x6B64C2B0,
0x3B61B38C, 0x26D6A3E8, 0x000F9344, 0x1DB88320,
0xA005713C, 0xBDB26158, 0x9B6B51F4, 0x86DC4190,
0xD6D930AC, 0xCB6E20C8, 0xEDB71064, 0xF0000000
};
unsigned int n, crc=0;

for (n=0; n<sizeof(data); n++)
{
crc = (crc >> 4) ^ crc_table[(crc ^ (data[n] >> 0)) & 0x0F]; /* lower nibble */
crc = (crc >> 4) ^ crc_table[(crc ^ (data[n] >> 4)) & 0x0F]; /* upper nibble */
}
for (n=0; n<4; n++) /* display the CRC, lower byte first */
{
printf("%02X ", crc & 0xFF);
crc >>= 8;
}
printf("\n");
return 0;
}

我能够使用此 CRC32 代码获得正确的以太网 FCS,但无法获得 GFP pFCS。 eHEC 也是正确的值。我是不是计算错了 pFCS,还是需要使用不同的 CRC32 计算方法?

最佳答案

在使用 CRC calculator code 之后,我终于能够为 GFP 帧获得正确的 CRC32 值。并将 #define REVERSED_DATATRUE 更改为 FALSE

我想我以前无法获得正确的值,因为发送位的顺序。 GFP 以与以太网相反的方向发送比特,如本 post 中所述.

关于计算 GFP 载荷 FCS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24582254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com