Jump to content
Old Phone Forum
  • Login

    You are currently not logged in to the forum.

    To comment, download files, subscribe to answers - you need to login.

CRC - прога для вычисления контрольной суммы


dаs

Recommended Posts

уважаемые господа программисты..если кого-то из вас не затруднит ,напишите пожалуйста прогу для вычисления контрольной суммы в строчке из кода прошивки гуми (чтобы я, допустим, мог вставить строчку в поле, а прога бы считала мне контрольную сумму)..очень нужно..очень надоело уже считать вручную...а вот алгоритм вычисления это контрольной суммы:

 

Например, вот строчка:

S31500020120 6C0160C2042F86F22F8601034CF2A920 CD

..где CD - это та самая контрольная сумма.....

Для начала запустите программу Калькулятор, которая есть в любой версии Windows, в расширенном режиме, чтобы удобно было переключаться из десятичной системы в шестнадцатеричную и вооружитесь обычным текстовым редактором, подойдет к примеру встроенный в FAR редактор. Затем действуйте следующим образом: сложите в шестнадцатеричной системе поля адреса, данных и после этого прибавьте к этому значению шестнадцатеричную длину этих полей в байтах - 15. Вот пример подсчета контрольной суммы для приведенной выше строчки:

 

 

15+00+02+01+20

 

+

 

6C+01+60+C2+04+2F+86+F2+2F+86+01+03+4C+F2+A9+20

 

=

 

632 в шестнадцатеричной системе

 

 

Теперь о том, что нужно делать с полученным результатом. Если посмотреть на поле контрольной суммы, то можно увидеть, что под нее отведен один байт, а значение одного байта не может превышать 255, или FF в шестнадцатеричной системе. Так вот, чтобы просчитать значение контрольной суммы для нашей строки, следует в шестнадцатеричной системе отнять полученное нами значение при сложении от FF. Но если перевести 632 в десятичную систему, то получится число 1586, разумеется при вычитании у нас выйдет отрицательное значение, а это недопустимо. Поэтому в этом случае следует отбросить одну цифру слева, чтобы получилось значение меньше FF - 255 в десятичной системе. Отбросили - получилось число 32. Значит теперь в шестнадцатеричной системе производим вычитание: FF - 32 = CD. Вот CD и будет искомой контрольной суммой для нашей строки.

Сами видите, что геммороя много...а когда этого надо сделать много, то хоть вешайся вообще...заранее спасибо!!!

Link to comment
Share on other sites

Просил - получай :);):?

 

Я тут посидел минут 15 и вот что получилось:

 

Как я понял, то из строки: S31500020120 6C0160C2042F86F22F8601034CF2A920 CD, тебе надо проверить: 1500020120 6C0160C2042F86F22F8601034CF2A920 только естественно без пробела.

Значит:

1) в программе вводишь то что тебе надо только в шестнадцатеричном виде без всяких там S и тому подобного - будет ошибка.

2) следи чтобы количество символов строки было четным - будет ошибка.

И вообще если что-то будет считать не так - пиши. И выложи свои рассчеты хотя бы штук 5.

CRC.rar

Link to comment
Share on other sites

Xpasha,

спасибо огромнейшее!!!!...благодарен по гроб жизни..хорошо, что есть ещё такие отзывчивые люди...!!!

..прога работает на ура..считает всё и вся...и главное - правильно!!!..ещё раз спасибо!!..а какие расчёты нужны?

Link to comment
Share on other sites

а какие расчёты нужны

если говоришь, что все правильно работает - то никакие. Пользуйся на здоровье :idea:

Link to comment
Share on other sites

  • 7 years later...

Просил - получай :):):)

 

Я тут посидел минут 15 и вот что получилось:

 

Как я понял, то из строки: S31500020120 6C0160C2042F86F22F8601034CF2A920 CD, тебе надо проверить: 1500020120 6C0160C2042F86F22F8601034CF2A920 только естественно без пробела.

Значит:

1) в программе вводишь то что тебе надо только в шестнадцатеричном виде без всяких там S и тому подобного - будет ошибка.

2) следи чтобы количество символов строки было четным - будет ошибка.

И вообще если что-то будет считать не так - пиши. И выложи свои рассчеты хотя бы штук 5.

Что то не скачивается прога для CRC

Link to comment
Share on other sites

Зачем она вам вдруг понадобилась, интересно...

Я начинающий ну пытаюсь на AVR.

Этот калькулятор мне нужен для 1-wire на DS18B20.

Вот я узнал с помощью программы owdemo Скачанной отсюда http://arvresearch.nm.ru/owdrv/download.dhtml

серийный номер 0x 000005D97080 ,ID у DS18B20 равен 0x28

Теперь мне необходимо узнать CRC это надо для обмена с DS18B20

Спасибо.

 

Вот по этой ссылке http://chipmk.ru/index.php?option=com_cont...5&Itemid=29

написано- Match Rom Command, 0x55 -------- отправляет ПК;

ROM Family Code, 0x28 ------------- отправляет ПК;

ROM Code, 0x000001272056 ------ отправляет ПК;

ROM CRC, 0x27 ----------------------- отправляет ПК;

 

Вот с числом 0x000001272056, CRC не получается 0x27

а вот с числом 0x562027010000 всё получается.

 

значит должно быть так ROM Code, 0x562027010000 ------ отправляет ПК;

Подскажите кто знает.Спасибо.

Edited by serj32
Link to comment
Share on other sites

  • 3 years later...

Судя по логам - файл в 2007г был утрачен, а его автор с 2008г не приходил…

 

Проще заново написать. Зачем вообще сейчас это надо?

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Link to comment
Share on other sites

Каких данных? S-строк?

Так это давно стандартизированный формат Motorola S-Records. Вон например в Hex Workshop можно бинарник экспортировать в S37-файл и это будет именно такой же формат как и был в прошивках Agere…

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Link to comment
Share on other sites

Объем файла до 3мб. И там нужно всю контрольную сумму пересчитывать. Ввести хекс строку и чтоб он пересчитал. Если есть готовая программа с исходники на с++ был бы очень рад.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×
×
  • Create New...