Ejemplo n.º 1
0
static uint32_t check_crc(mdev_t *fl_drv, uint32_t offset, uint32_t len,
								uint32_t crc)
{
	uint32_t dummy_buf[32];
	uint32_t result = 0, blk = 128;

#ifndef CONFIG_SOFTWARE_CRC32
	mdev_t *crc_drv = crc_drv_open(MDEV_CRC_ENGINE_0, CRC32_IEEE);
	if (crc_drv == NULL) {
		rf_e("CRC driver init is required before open");
		return 1;
	}
	crc_drv_stream_setlen(crc_drv, len);
#endif

	while (len) {
		if (blk > len)
			blk = len;
		flash_drv_read(fl_drv, (uint8_t *)dummy_buf, blk, offset);
#ifndef CONFIG_SOFTWARE_CRC32
		crc_drv_stream_feed(crc_drv, (uint8_t *)dummy_buf, blk);
#else
		result = soft_crc32(dummy_buf, blk, result);
#endif
		len -= blk;
		offset += blk;
	}
#ifndef CONFIG_SOFTWARE_CRC32
	crc_drv_stream_get_result(crc_drv, &result);
	crc_drv_close(crc_drv);
#endif

	return (result == crc) ? 0 : 1;
}
Ejemplo n.º 2
0
uint32_t mc_soft_crc32(const void *data, int data_size, uint32_t crc)
{
#if mxMC
	return soft_crc32(data, data_size, crc);
#else
	return 0;
#endif
}