|
Вычисление CRC с помощью sRecord |
|
|
|
Apr 29 2015, 05:48
|

Частый гость
 
Группа: Участник
Сообщений: 173
Регистрация: 11-05-08
Пользователь №: 37 414

|
Доброго всем времени суток! Задача: есть исходный файл (бинарник) из 8 байт, забитых значением 0x11. Надо в конец файла (т.е. с адреса 0x08) вставить 2 байта CRC16 (вычисленное с полиномом 0xA001) программой Srecord. Делаю так: Код srec_cat sec.bin --binary -crc16-b-e 0x08 -poly 0xA001 --output sec_new.bin --binary Значения добавляются (0x14 0x1E), но не те (0xED 0xE7). В чем может быть проблема? Может srecord нужно указывать начало и конец исходных данных?
|
|
|
|
|
 |
Ответов
|
Apr 29 2015, 06:45
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Пользовался только "стандартным" CRC, так что мысли чисто теоретические, но... Документация сообщает нам, что значение полинома надо передавать просто числом, без -poly. Ключ poly - это ИМЯ полинома. Сергей, crc16-l-e / -b-e в документации есть ( http://srecord.sourceforge.net/man/man1/srec_input.html, искать "crc16"). Другой вопрос, что документации могло бы быть и побольше, без чЮдных фразочек "и вообще, это опенсорс, смотрите в исходниках".
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Apr 29 2015, 07:04
|

Частый гость
 
Группа: Участник
Сообщений: 173
Регистрация: 11-05-08
Пользователь №: 37 414

|
Цитата(esaulenka @ Apr 29 2015, 12:45)  Документация сообщает нам, что значение полинома надо передавать просто числом, без -poly. Ключ poly - это ИМЯ полинома. Да, но я пробовал делать так: указал полином ccitt в качестве параметра, получил результат (0xCE 0x79), затем нашел в описание, посмотрел значение полинома для ccitt (0x1021) и подставил 0x1021 вместо ccitt - результат получился тот же. Из чего я сделал вывод, что полином можно скармливать любой в hex-формате, а не только в виде строковых значений (asci, modbus, ccitt и т.д.).
Сообщение отредактировал Sprite - Apr 29 2015, 07:05
|
|
|
|
|
Apr 29 2015, 07:32
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Цитата(Sprite @ Apr 29 2015, 10:04)  Да, но я пробовал делать так: указал полином ccitt в качестве параметра, получил результат (0xCE 0x79), затем нашел в описание, посмотрел значение полинома для ccitt (0x1021) и подставил 0x1021 вместо ccitt - результат получился тот же. srecord использует CCITT по умолчанию, так что результат эксперимента, скорее всего, получился некорректный.
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
Сообщений в этой теме
Sprite Вычисление CRC с помощью sRecord Apr 29 2015, 05:48 Сергей Борщ С полиномом 0xA001 сдвиг осуществляется вправо. ... Apr 29 2015, 06:28 Sprite Цитата(Сергей Борщ @ Apr 29 2015, 12:28) ... Apr 29 2015, 06:44 Сергей Борщ Цитата(esaulenka @ Apr 29 2015, 09:45) Се... Apr 29 2015, 07:05  Sprite Цитата(Сергей Борщ @ Apr 29 2015, 13:05) ... Apr 29 2015, 07:26 mcheb Пока разберетесь с документацией, проще самому в G... Apr 29 2015, 07:26 Sprite Цитата(mcheb @ Apr 29 2015, 13:26) Пока р... Apr 29 2015, 07:39  Sprite Пробовал считать CRC32. Код такой:Кодsrec_cat sec.... Apr 29 2015, 11:53 Sprite Всем спасибо, разобрался. Apr 29 2015, 13:43 AHTOXA Может быть, расскажете, как правильно? Apr 29 2015, 15:49  Sprite Цитата(AHTOXA @ Apr 29 2015, 21:49) Может... May 6 2015, 05:01 esaulenka Решал аналогичную задачу.
Во-первых, CRC по алгори... May 22 2015, 05:56
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|