1 /* 2 * Copyright (c) 2023 HPMicro 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 * 6 */ 7 8 #include "hpm_crc32.h" 9 10 crc32(const uint8_t * buf,uint32_t len)11uint32_t crc32(const uint8_t *buf, uint32_t len) 12 { 13 uint8_t i; 14 uint32_t crc = 0xFFFFFFFF; 15 while (len--) { 16 crc ^= *buf++; 17 for (i = 0; i < 8; ++i) { 18 if (crc & 1) 19 crc = (crc >> 1) ^ 0xEDB88320; 20 else 21 crc = (crc >> 1); 22 } 23 } 24 25 return ~crc; 26 } 27