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

 
 
> Подсчет CRC средствами ИАР
Sergio66
сообщение Nov 21 2012, 08:14
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 235
Регистрация: 9-02-05
Пользователь №: 2 526



Еще раз добрый день!
Столкнулся с такой проблемой - создаю CRC так:
Код
-J2,crc=8005,,,,,=(CODE)0-1


получаю вот это:
Код
Symbol      Checksum  Memory  Start      End       Initial value
------      --------  ------  -----      ---       -------------
__checksum    0xab7b   CODE   00000000 - 00000001  0x0000 (#0x0000)


В программе использую следующий код для подсчета CRC (задача сравнить его с CRC прошивки) (пробую пока на 2 байтах...)

Код
#define POLY 0x8005
unsigned short slow_crc16(unsigned short sum, unsigned char __flash *p,
unsigned int len)
{
  while (len--)
  {
    int i;
    unsigned char byte = *(p++);
    for (i = 0; i < 8; ++i)
    {
      unsigned long osum = sum;
      sum <<= 1;
      if (byte & 0x80)
        sum |= 1;
      if (osum & 0x8000)
        sum ^= POLY;
      byte <<= 1;
    }
  }
  return sum;


unsigned short calc = 0;

/* Run the checksum algorithm */
calc = slow_crc16(calc, (unsigned char __flash*)0,(0x1));
}


внимание, вопрос... Не сходятся CRC...
Функция подсчета CRC взята из
IAR Linker and Library Tools
Reference Guide стр.36

В чем может быть дело???
Заранее благодарю...
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 09:12
Рейтинг@Mail.ru


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