Есть функция на C, вычисляющая контрольную сумму флэша:
unsigned boardMemSum(unsigned* ptr, int nLongs)
{
unsigned sum, ix;
for(sum = nLongs, ix = 0; ix < nLongs; ix++)
sum += ptr[ix];
return ~sum;
}
где ptr - указатель на начало памяти флэша, nLongs - длина данных в 4-х байтных словах.
Если вызвать эту функцию для всего флэша, а результат (4 байта) сохранить в любом свободном месте флэша(область флэша считается свободной, если биты равны 1), то при последующем вызове boardMemSum для всего флэша она вернёт 0xffffffff.
Если после этого записать во флэш пользовательские данные(не важно, в свободное место, или нет), вызвать boardMemSum для пользовательских данных и сохранить результат в свободное место флэша, то результат вызова boardMemSum для всего флэша не изменится и будет равен 0xffffffff.
На практике это не работает, у начальника нет описания алгоритма. Дайте пожалуйста ссылку на описание алгоритма, в частности, интересует как реализовать этот алгоритм для длины не кратной 4 байт.