сложность в непонимании программных моментов реализации.
Вот набросал кусок кода правка с crc32.
#include <crc32.h>
#define BLOCK_SIZE 0x400 // block flash
#define START_ADDR 0x000000UL
#define END_ADDR 0x008000UL
void crc_flash()
{
int result;
uint32_t crc;
for(int i = (uint32_t)START_ADDR ; i < END_ADDR; i += BLOCK_SIZE)
{
// data len
crc = data_crc16(&i , END_ADDR);
result += crc;
}
}
Подскажите насколько это правильно.
По факту оказалось куда проще чем представлялось
data = сюда помещаем адрес для начала расчета
len = объем памяти для расчета
uint16_t data_crc16_flash(unsigned char *data, int len)
{
unsigned short crc = 0xFFFF;
while(len--)
crc = (crc >> 8) ^ crc16_table[(crc & 0xff) ^ *data++];
return crc;
}
на выходе мы получаем нашу контрольную сумму.