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

 
 
 
Reply to this topicStart new topic
> Вычисление CRC16 линкером IAR-а, При задании начального значения CRC != 0 линкер выдает лабуду
Baser
сообщение Dec 12 2007, 15:49
Сообщение #1


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Кто нибудь пробовал в ИАРе АВР 4.21 вычислять линкером CRC16 кода с начальным значением CRC не равным нулю?
При начальном значении CRC = 0 все нормально, и прямой и реверсный полином 1021 вычисляются так же как и общеизвестные процедуры подсчета CRC. Стоит добавить опцию init - задать начальное значение (напр. 0xffff), совпадений больше не наблюдается.
Проверяю так:
Код
__root __farflash unsigned long Val @ 0x1DFF8 = 0xa4a3a2a1;

Начальное значение полинома:
Код
-J2,crc16,m,,,2,ffff=(CODE)(_..X_APPFLASH_END-7)-(_..X_APPFLASH_END-4)

И в отладчике проверяю результат работы стандартных процедур.

Ето я чего-то не понимаю, или в ИАРе глюк?
Go to the top of the page
 
+Quote Post
Baser
сообщение Dec 13 2007, 20:54
Сообщение #2


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Никто не ответил, придется самому себе отвечать smile.gif
Предыдущий пост написал, а через полчаса в голову пришла бредовая идея, которая оказалась правильной.

ИАР своеобразно трактует термин начальное значение CRC. В хелпе по линкеру на опцию -J сказано:
Цитата
init
By default, the initial value of the checksum is 0. If you need to change the initial value, supply a different value for init.

Однако, если изменить это значение, например на FFFF, то линкер действует так:
1. Очищает начальное значение CRC = 0;
2. Производит вычисление CRC по стандартному алгоритму для нужного полинома для 2 байт со значением 0xFF;
3. Начинает вычислять CRC для заданного диапазона памяти.

Разумеется, значение CRC после шага 2 совсем не равно FFFF.
Ну и полученная окончательная CRC не имеет ничего общего с тем, что ожидалось. 07.gif
Go to the top of the page
 
+Quote Post

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

 


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


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