реклама на сайте
подробности

 
 
> CRC32 для 8бит, помогите найти медленные исходники
west329_
сообщение Apr 4 2008, 12:37
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Столкнулся с проблемой реализации CRC32 функции для контроллера на С. В сети множество исходников но они все используют так сказать быстрый расчет, обычно генерирую динамическую таблицу в озу 255 Long значений ? 1kb озу сразу седает, есть ещё вариант со статической таблицей промежуточных полиномов, но от этого тоже легче седается 1kb памяти прграммы sad.gif. Но есть ещё медленная релизация алгоритма для 32бит полиномиальная, встречалась мне для crc16 и crc8? н о для crc32 так нигде и не нашол.

Подскажите если ктото сталкивался ?
С ув.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
xemul
сообщение Apr 4 2008, 20:55
Сообщение #2



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Код
#define CRC_LENGTH 32
#define POLY 0xblah-blah-blah

// коэффициенты CRC32_yy = crc32(yy, 0), где yy = {2^0, 2^1, ..., 2^(CRC_LENGTH-1)}
// считаются предварительно для требуемого полинома и CRC32_init = 0 через сдвиги
// (или берутся готовые :))
const uint32 CRC32_Table[CRC_LENGTH] = {CRC32_0, ..., CRC32_31};

uint32 crc32(uint32 x, uint32 CRC32_init)
{
   uint i;
   uint32 bitmask, y, CRC32 = 0;

   y = x ^ CRC32_init;
   for(i = 0, mask =1; i < CRC_LENGTH; i++, bitmask <<= 1)
      if(y & bitmask) CRC32 ^= CRC32_Table[i];
   return CRC32;
}

// или для экономии памяти
uint32 crc32(uint32 x, uint32 CRC32)
{
   uint i;
   uint32 bitmask;

   x ^= CRC32; CRC32 = 0;
   for(i = 0, mask =1; i < CRC_LENGTH; i++, bitmask <<= 1)
      if(x & bitmask) CRC32 ^= CRC32_Table[i];
   return CRC32;
}

// или для еще большей экономии памяти на 8-битниках
// выровнять таблицу по 0bx0000000, uint8 bitmask, i лишний и т.д.:)

Для CRC8 (цикл стОит развернуть), CRC16, CRCxx, ... аналогично.
Если время совсем не напрягает, то через сдвиги, как уже предлагали.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 22:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01454 секунд с 7
ELECTRONIX ©2004-2016