|
Вычисление 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:05
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(esaulenka @ Apr 29 2015, 09:45)  Сергей, crc16-l-e / -b-e в документации есть ( http://srecord.sourceforge.net/man/man1/srec_input.html, искать "crc16"). Спасибо. Я искал именно "crc16-b-e", а там описана полная форма "−CRC16_Big_Endian". "Догадайся, мол, сама". Там есть и описание двух ключей - "−Most_To_Least" (по умолчанию) и "−Least_To_Most", который, вероятно, нам и нужен.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 29 2015, 07:26
|

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

|
Цитата(Сергей Борщ @ Apr 29 2015, 13:05)  Спасибо. Я искал именно "crc16-b-e", а там описана полная форма "−CRC16_Big_Endian". "Догадайся, мол, сама". Там есть и описание двух ключей - "−Most_To_Least" (по умолчанию) и "−Least_To_Most", который, вероятно, нам и нужен. Попробовал -Least_To_Most: Код srec_cat sec.bin --binary -crc16-b-e 0x08 -Least_To_Most -poly 0xA001 --output sec_new.bin --binary Результат получается другой (0x45 0xC7), но не правильный (
|
|
|
|
Сообщений в этой теме
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 Sprite Цитата(esaulenka @ Apr 29 2015, 12:45) До... Apr 29 2015, 07:04  esaulenka Цитата(Sprite @ Apr 29 2015, 10:04) Да, н... Apr 29 2015, 07:32 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
|
|
|