0
votes

CRC mettant en œuvre un polynôme spécifique. Comment le polynôme se rapporte-t-il au polynôme utilisé dans le code?

J'ai la fonction CRC suivante: xxx

Comment 0x18 concerne le polynôme x ^ 8 + x ^ 5 + x ^ 4 + x ^ 0?

X ^ 8 + x ^ 5 + x ^ 4 + x ^ 0 = 100110001

0x18 = 00011000

Et si je définis CRC8Poly comme 0xea au lieu (j'ai vu cela), quel polynôme cela représenterait-il?

c crc

0 commentaires

3 Réponses :


1
votes

Ce code CRC est écrit plutôt étrangement, où le polynôme est appliqué dans deux endroits différents, brisant les bits. C'est-à-dire, à CRC = CRC ^ CRCPOLY code> et conditionnellement CRC = CRC | 0x80 code>. Il serait normalement écrit plus comme ceci:

unsigned crc8(unsigned char const *dat, size_t len) {
    unsigned crc = 0;
    for (size_t i = 0; i < len; i++) {
        crc ^= dat[i];
        for (int k = 0; k < 8; k++)
            crc = crc & 1 ? (crc >> 1) ^ 0x8c : crc >> 1;
    }
    return crc;
}


0 commentaires

1
votes

Comment 0x18 concerne 0x18 sur le polynôme x ^ 8 + x ^ 5 + x ^ 4 + x ^ 0?

Étant donné que le code est un CRC changeant droit, le «bit le plus significatif» de chaque octet est bit 0 au lieu du bit 7. Le POLY doit être inversé de 100110001 à 100011001, qui est 0x119, après le décalage droit, le bit 0 de 0x119 est décalé, de 0x118 peut être utilisé à la place. Le code utilise une seconde si l'instruction IF ou dans (0x100) >> 1 == 0x80 Si le bit de rétroaction est 1. Comme alternative, car feedback_bit est 0 ou 1, puis (0-frère_bit) peut être utilisé comme masque ( en supposant que les deux mathématiques du complément de deux) pour le poly au lieu d'utiliser une instruction IF. xxx


0 commentaires

1
votes

se référant à Article Wiki sur CRC , sa réalisation CRC8 telle qu'elle est utilisée à Dallas 1 -Le chips. Remarque, que le polinomial peut être représenté dans des représentations réciproques normales, inversées, réciproques et inversées (voir aussi Représentations en polynôme ). Semble que cela est inversé une représentation réciproque avec un bit le plus élevé omis.


0 commentaires