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

 
 
> Быстрое вычисление CRC-8, Потенциальные возможности не табличных методов
=GM=
сообщение Sep 1 2006, 12:32
Сообщение #1


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Недавно поднимался вопрос об оптимизации сишного кода, в частности был представлен такой код (немного отрихтовал для приличия)
Цитата(µµC @ Aug 25 2006, 14:26) *
Приятный алгоритм, возьму на вооружение. IAR - 515 циклов.
Код
U8 crc8_3(U8 *buff, U8 num)
{
U8 i, crc=0;
do
{
  crc^=*buff++;
   i=8;
   do
   {  
     if(crc&0x01)
     {
       crc>>=1;
       crc^=0x8C;
     }
     else crc>>=1;
   }
  } while(--i);  
} while(--num);
return crc;
}

Для семи байтов ИАР-код выполняется за 525 циклов, т.е. вгрубе 75 циклов на байт.
У меня весь ASM-код (не табличный) для 7 байт выполняется за 80 циклов. Может я чего не понимаю, или полиномы неправильные?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
pitt
сообщение Sep 1 2006, 12:56
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672



Код для onewire от Texas Instruments avr-gcc. Перенос на любой другой компилятор не должн быть проблемой.
Код
#include <avr/pgmspace.h>
typedef unsigned char byte;

byte crc_tab [256] PROGMEM = {
    0,  94, 188, 226,  97,  63, 221, 131, 194, 156, 126,  32, 163, 253,  31,  65,
  157, 195,  33, 127, 252, 162,  64,  30,  95,   1, 227, 189,  62,  96, 130, 220,
   35, 125, 159, 193,  66,  28, 254, 160, 225, 191,  93,   3, 128, 222,  60,  98,
  190, 224,   2,  92, 223, 129,  99,  61, 124,  34, 192, 158,  29,  67, 161, 255,
   70,  24, 250, 164,  39, 121, 155, 197, 132, 218,  56, 102, 229, 187,  89,   7,
  219, 133, 103,  57, 186, 228,   6,  88,  25,  71, 165, 251, 120,  38, 196, 154,
  101,  59, 217, 135,   4,  90, 184, 230, 167, 249,  27,  69, 198, 152, 122,  36,
  248, 166,  68,  26, 153, 199,  37, 123,  58, 100, 134, 216,  91,   5, 231, 185,
  140, 210,  48, 110, 237, 179,  81,  15,  78,  16, 242, 172,  47, 113, 147, 205,
   17,  79, 173, 243, 112,  46, 204, 146, 211, 141, 111,  49, 178, 236,  14,  80,
  175, 241,  19,  77, 206, 144, 114,  44, 109,  51, 209, 143,  12,  82, 176, 238,
   50, 108, 142, 208,  83,  13, 239, 177, 240, 174,  76,  18, 145, 207,  45, 115,
  202, 148, 118,  40, 171, 245,  23,  73,   8,  86, 180, 234, 105,  55, 213, 139,
   87,   9, 235, 181,  54, 104, 138, 212, 149, 203,  41, 119, 244, 170,  72,  22,
  233, 183,  85,  11, 136, 214,  52, 106,  43, 117, 151, 201,  74,  20, 246, 168,
  116,  42, 200, 150,  21,  75, 169, 247, 182, 232,  10,  84, 215, 137, 107,  53
};

// One-wire device routines - single slave, external power

byte crc8 ( byte *ptr, byte cnt ) { // pointer to & length of the string
  byte crc;

  for ( crc = 0; cnt--; ) crc = pgm_read_byte ( &crc_tab[crc ^ *ptr++]);
  return crc;
}


Сообщение отредактировал pitt - Sep 1 2006, 13:00


--------------------
Прокричал немой глухому:"...Спасибо за внимание!"
http://www.youtube.com/watch?v=3Nnj4ky4Z_g
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- =GM=   Быстрое вычисление CRC-8   Sep 1 2006, 12:32
- - IgorKossak   =GM=, почитайте внимательно о методах оптимизации ...   Sep 1 2006, 12:54
|- - =GM=   Цитата(IgorKossak @ Sep 1 2006, 11:54) =G...   Sep 1 2006, 13:59
|- - singlskv   Цитата(=GM= @ Sep 1 2006, 17:59) Цитата(I...   Sep 1 2006, 15:11
- - aaarrr   Цитата(=GM= @ Sep 1 2006, 16:32) У меня в...   Sep 1 2006, 14:08
|- - =GM=   Цитата(aaarrr @ Sep 1 2006, 13:08) Цитата...   Sep 1 2006, 15:17
|- - singlskv   Цитата(=GM= @ Sep 1 2006, 19:17) Цитата(a...   Sep 1 2006, 15:21
|- - =GM=   Цитата(singlskv @ Sep 1 2006, 14:21) Пере...   Sep 1 2006, 16:33
|- - singlskv   Цитата(=GM= @ Sep 1 2006, 20:33) Но это т...   Sep 1 2006, 20:37
|- - =GM=   Цитата(singlskv @ Sep 1 2006, 19:37) Ну н...   Sep 3 2006, 08:55
|- - Oldring   Цитата(=GM= @ Sep 3 2006, 12:55) Код sbrc...   Sep 3 2006, 10:16
||- - pitt   Цитата(Oldring @ Sep 3 2006, 06:16) Ускор...   Sep 3 2006, 12:23
|||- - ivstech   Вот мой код расчета CRC16, не скажу, что я придум...   Sep 4 2006, 05:11
|||- - Oldring   Цитата(ivstech @ Sep 4 2006, 09:11) Вот м...   Sep 4 2006, 11:07
||- - =GM=   Цитата(Oldring @ Sep 3 2006, 09:16) Цитат...   Sep 3 2006, 20:31
||- - Oldring   Цитата(=GM= @ Sep 4 2006, 00:31) Oldring,...   Sep 3 2006, 20:44
||- - singlskv   Цитата(Oldring @ Sep 4 2006, 00:44) Цитат...   Sep 3 2006, 21:28
||- - =GM=   Цитата(Oldring @ Sep 4 2006, 00:44) Это т...   Sep 5 2006, 12:28
|- - _artem_   Цитата(=GM= @ Sep 3 2006, 11:55) Цитата(s...   Sep 3 2006, 16:07
- - pitt   Чего я не понял, так это мы о скорости говорим или...   Sep 1 2006, 17:28
|- - singlskv   Цитата(pitt @ Sep 1 2006, 21:28) Или цена...   Sep 1 2006, 20:10
- - aaarrr   Цитата(_artem_ @ Sep 3 2006, 20:07) =GM=,...   Sep 3 2006, 17:52
|- - Oldring   Цитата(aaarrr @ Sep 3 2006, 21:52) А если...   Sep 3 2006, 19:13
|- - _Bill   Цитата(aaarrr @ Sep 3 2006, 20:52) В поря...   Sep 4 2006, 07:41
- - Oldring   Для тех кто интересуется добавлю, что рассматривае...   Sep 3 2006, 22:22
- - aaarrr   Цитата(_Bill @ Sep 4 2006, 11:41) Без вся...   Sep 4 2006, 08:00
|- - _Bill   Цитата(aaarrr @ Sep 4 2006, 11:00) Цитата...   Sep 4 2006, 10:22
- - aaarrr   Цитата(_Bill @ Sep 4 2006, 14:22) Накладн...   Sep 4 2006, 11:31
|- - Oldring   Цитата(aaarrr @ Sep 4 2006, 15:31) Цитата...   Sep 4 2006, 11:51
|- - _Bill   Цитата(aaarrr @ Sep 4 2006, 14:31) Как эт...   Sep 4 2006, 12:33
- - aaarrr   Цитата(Oldring @ Sep 4 2006, 15:51) Завис...   Sep 4 2006, 12:09
- - aaarrr   Цитата(_Bill @ Sep 4 2006, 16:33) Поэтому...   Sep 4 2006, 13:06
|- - _Bill   Цитата(aaarrr @ Sep 4 2006, 16:06) Цитата...   Sep 4 2006, 13:13
- - Smen   Дяденьки, подскажите, плиз! Если у меня прини...   Jul 1 2013, 13:37
- - zombi   Цитата(Smen @ Jul 1 2013, 16:37) какой ал...   Jul 1 2013, 19:01
- - Smen   Цитата(zombi @ Jul 1 2013, 23:01) Считайт...   Jul 2 2013, 06:02


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

 


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


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