INNER CODE UNIT · C

init_checksum

dmitrystu/sboot_stm32 · src/checksum.c:66

static void init_checksum(checksum_t *checksum) {
    for (int j = 0; j < 256; j++) {
        uint64_t cs = j;
        for (int i = 0; i < 8; i++) {
            if (cs & 0x01) {
                cs = (cs >> 1) ^ CRC_POLY;
            } else {
                cs = (cs >> 1);
            }
        }
        table[j] = cs;
    }
    *checksum = CRC_INIT;
}

static void update_checksum(checksum_t *checksum, uint8_t data) {
    data ^= *checksum & 0xFF;
    *checksum = (*checksum >> 8) ^ table[data];

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…